[Bug target/56975] [regression] dllimport broken on i686-pc-cygwin

2013-04-19 Thread davek at gcc dot gnu.org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56975



--- Comment #9 from Dave Korn davek at gcc dot gnu.org 2013-04-19 18:18:19 
UTC ---

Kai's patch applied cleanly for me vs. Revision: 197992 and allowed my failed

build to proceed as far as stage 3 where it failed on libjava (known issue). 

I'm going to rerun the build from clean and try some tests.


[Bug target/56975] New: [regression] dllimport broken on i686-pc-cygwin

2013-04-16 Thread davek at gcc dot gnu.org

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56975

 Bug #: 56975
   Summary: [regression] dllimport broken on i686-pc-cygwin
Classification: Unclassified
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: da...@gcc.gnu.org


Created attachment 29880
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=29880
preprocessed testcase

Attempting to reference a dllimported symbol with current HEAD causes an ICE
with an unrecognized insn.  This breaks bootstrap at stage1 building libgcc. 
Here's a testcase using stage1 cc1.exe from a failed build dir:

$ cat foo.i

void *foo (void);

__attribute__((dllimport)) void * __attribute__((__stdcall__)) bar(const char *
lpModuleName);

void *
foo (void)
{
  void *ptr = bar ((const char *)0);
  return ptr;
}

DKAdmin@ubik /gnu/gcc/obj/i686-pc-cygwin/libgcc
$ /gnu/gcc/obj/./gcc/cc1.exe -fpreprocessed foo.i -quiet  -mtune=generic
-march=i686 -auxbase-strip crtbegin.o -g -g -g0 -O2 -O2 -O2 -Wextra -Wall
-Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes
-Wmissing-prototypes -Wold-style-definition -version -finhibit-size-directive
-fno-inline -fno-exceptions -fno-zero-initialized-in-bss -fno-toplevel-reorder
-fno-tree-vectorize -fno-stack-protector -fno-omit-frame-pointer -o foo.s
GNU C (GCC) version 4.9.0 20130416 (experimental) (i686-pc-cygwin)
compiled by GNU C version 4.7.2, GMP version 4.3.2, MPFR version
3.0.1-p4, MPC version 0.8
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU C (GCC) version 4.9.0 20130416 (experimental) (i686-pc-cygwin)
compiled by GNU C version 4.7.2, GMP version 4.3.2, MPFR version
3.0.1-p4, MPC version 0.8
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 31da135ea647c81f0b254283fbd2bab6
foo.i: In function ‘foo’:
foo.i:11:1: error: unrecognizable insn:
 }
 ^
(insn 6 5 7 2 (set (reg:SI 61)
(symbol_ref:SI (bar@4) [flags 0x441] function_decl 0x7fdf9c00 bar))
foo.i:9 -1
 (nil))
foo.i:11:1: internal compiler error: in extract_insn, at recog.c:2150

foo.i:11:1: internal compiler error: Aborted
Aborted (core dumped)

DKAdmin@ubik /gnu/gcc/obj/i686-pc-cygwin/libgcc
$

[Bug bootstrap/52513] gcc-4.7.0-RC-20120302 fails to build for i686-pc-cygwin

2012-03-07 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52513

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 Resolution||WONTFIX

--- Comment #3 from Dave Korn davek at gcc dot gnu.org 2012-03-07 13:36:52 
UTC ---
(In reply to comment #2)
 (In reply to comment #1)
  4.6 should be broken as well for you?
 Oops. I reported wrong in my OP. I've actually been using a home-built 4.6.2
 for some time now... and it is the host compiler for this build:

  I had no problems building the RC using:

binutils 2.22.51-1
cygwin   1.7.9-1
gcc4 4.5.3-3
gmp  4.3.2-1
make 3.82.90-1
mpfr 3.0.1-1


  Can you check why configure thinks spawnve is available in process.h
  (contrary to the warning we see in your snippet)?
 Sorry, I may not have been clear on this. Google reported that spawnve lives 
 in
 process.h. A quick search on my filesystem shows that spawnve actually lives 
 in
 cygwin/process.h, not process.h as expected by pex-unix.c.

 Perhaps the file moved recently (since 1.7.9 or 10)? I've sent mail to the
 cygwin list to see if anybody there knows. Meanwhile, soft-linking process.h 
 to
 where gcc expects it lets the compile continue. 

  Right, I think this is a cygwin bug.  The /usr/include/cygwin dir is private,
you're not supposed to #include files from there directly, they should be
indirectly included from within other system header files.  If process.h is a
public header, it shouldn't have been moved there.

  Ah.  In fact, I see from the reply to your email there that it is indeed an
acknowledged error in 1.7.10 and fixed already in 1.7.11.  Since the .10
release was buggy in several other important ways, I don't think it's important
to support it, we'll just tell people they need to upgrade.  Closing as
WONTFIX.


[Bug other/39933] make clean fails in libgcc

2011-12-08 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39933

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-12-08
 CC||davek at gcc dot gnu.org
Version|4.4.0   |4.7.0
 Ever Confirmed|0   |1
  Known to fail||4.4.0

--- Comment #3 from Dave Korn davek at gcc dot gnu.org 2011-12-08 12:08:34 
UTC ---
Still present on HEAD at r.182098, with some minor differences in the error
messages for me:

make[1]: -B/n/10/davek/usr/x86_64-unknown-linux-gnu/bin/: Command not found
make[1]: Entering directory
`/home/davek/gcc/obj.clean/x86_64-unknown-linux-gnu/libgcc'
make[1]: -B/n/10/davek/usr/x86_64-unknown-linux-gnu/bin/: Command not found
make[1]: -B/n/10/davek/usr/x86_64-unknown-linux-gnu/bin/: Command not found
/bin/sh: line 0: test: !=: unary operator expected
rm -f config.h libgcc_tm.h stamp-h stmp-ldirs libgcc.map
Makefile:165: *** Recursive variable `AR_FOR_TARGET' references itself
(eventually).  Stop.
make[1]: Leaving directory
`/home/davek/gcc/obj.clean/x86_64-unknown-linux-gnu/libgcc'
make: *** [clean-stage3-target-libgcc] Error 2


[Bug other/39933] make clean fails in libgcc

2011-12-08 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39933

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||ich at az2000 dot de

--- Comment #4 from Dave Korn davek at gcc dot gnu.org 2011-12-08 12:10:28 
UTC ---
*** Bug 40322 has been marked as a duplicate of this bug. ***


[Bug other/40322] make clean fails (/bin/bash: -/: invalid option)

2011-12-08 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40322

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||davek at gcc dot gnu.org
 Resolution||DUPLICATE

--- Comment #1 from Dave Korn davek at gcc dot gnu.org 2011-12-08 12:10:28 
UTC ---
Same as bug 39933.

*** This bug has been marked as a duplicate of bug 39933 ***


[Bug other/45994] During 'make clean', some variables not propagating properly

2011-12-08 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45994

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||davek at gcc dot gnu.org
 Resolution||DUPLICATE

--- Comment #1 from Dave Korn davek at gcc dot gnu.org 2011-12-08 12:10:35 
UTC ---
Same as bug 39933.

*** This bug has been marked as a duplicate of bug 39933 ***


[Bug other/39933] make clean fails in libgcc

2011-12-08 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39933

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||phantall at gmail dot com

--- Comment #5 from Dave Korn davek at gcc dot gnu.org 2011-12-08 12:10:35 
UTC ---
*** Bug 45994 has been marked as a duplicate of this bug. ***


[Bug bootstrap/38388] parallel install failures in install-{libiberty,gnatlib}

2011-12-06 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38388

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Target|x86_64-gnu-linux|
 Status|RESOLVED|REOPENED
   Last reconfirmed||2011-12-06
 CC||davek at gcc dot gnu.org
Version|4.4.0   |4.7.0
 Resolution|FIXED   |
 Ever Confirmed|0   |1

--- Comment #9 from Dave Korn davek at gcc dot gnu.org 2011-12-06 22:43:46 
UTC ---
[ Reopened because the gnatlib bug is still present.  Removed target, because
it is not target-specific.  Not sure if bootstrap is still the right component
or if it should be ada, so will leave that to discretion of bug maintainers. ]

I saw this myself earlier, and asked about it on the GCC list at
http://gcc.gnu.org/ml/gcc/2011-12/msg00050.html - 

On 03/12/2011 12:16, Dave Korn wrote:

   Running make -j8 install in a fresh build of head, I saw loads of the
 following error messages coming out in the log:
 
 cp: cannot create regular file
 `/gnu/gcc/install.obj3/gnu/usr/lib/gcc/i686-pc-cygwin/4.7.0/adainclude/a-ztmoau.adb':
 File exists cp: cannot create regular file
 `/gnu/gcc/install.obj3/gnu/usr/lib/gcc/i686-pc-cygwin/4.7.0/adainclude/a-ztmoio.adb':
 File exists cp: cannot create regular file
 `/gnu/gcc/install.obj3/gnu/usr/lib/gcc/i686-pc-cygwin/4.7.0/adainclude/a-zttest.ads':
 File exists cp: cannot create regular file
 `/gnu/gcc/install.obj3/gnu/usr/lib/gcc/i686-pc-cygwin/4.7.0/adainclude/a-zzboio.ads':
 File exists cp: cannot create regular file
 `/gnu/gcc/install.obj3/gnu/usr/lib/gcc/i686-pc-cygwin/4.7.0/adainclude/ada.ads':
 File exists cp: cannot create regular file
 `/gnu/gcc/install.obj3/gnu/usr/lib/gcc/i686-pc-cygwin/4.7.0/adainclude/directio.ads':
 File exists
   [ ... snip ... ]
 
   Sure enough, all the files did exist, so I guess it must have been trying to
 install them twice.  Before I try digging deeper, I thought I'd quickly ask:
 Does anyone else see this?  (Is it perhaps something that wouldn't show up on
 a different host, such as linux, owing to differing filesystem semantics?)

  Okay, confirmed; I wonder why this isn't causing problems for anyone else?

  The issue is that there are two dependency chains that lead to the
install-gnatlib target in the gcc/ada/gcc-interface/Makefile.in-derived
Makefile in $objdir:

[1] top level make install - $objdir/$target/libada/Makefile install:
install-gnatlib - install-gnatlib: - $objdir/gcc/ada/Makefile(*)
install-gnatlib: - $objdir/gcc/ada/gcc-interface/Makefile
install-gnatlib:.

[2] top level make install - $objdir/gcc/Makefile install: install-common
- install-common: lang.install-common - lang.install-common:
ada.install-common - $(srcdir)/ada/gcc-interface/Make-lang.in
ada.install-common - install-gnatlib - $objdir/gcc/ada/Makefile(*)
install-gnatlib: - $objdir/gcc/ada/gcc-interface/Makefile
install-gnatlib:.

  The two paths merge at (*), and so a parallel top-level make can end up
running both of them at the same time.  That gets broken, because the
install-gnatlib target begins by wiping and recreating the install dirs:

 install-gnatlib: ../stamp-gnatlib-$(RTSDIR)
 # Create the directory before deleting it, in case the directory is
 # a list of directories (as it may be on VMS). This ensures we are
 # deleting the right one.
   -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
   -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
   $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
   $(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)
   -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR)
   -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR)

  Depending how out-of-sync the two separate sub-makes are, this results in an
incomplete installation.  Here's what happened in my latest test:

 make[2]: Entering directory `/gnu/gcc/obj3/i686-pc-cygwin/libada'
 make -C ../.././gcc/ada MAKEOVERRIDES= LDFLAGS= LN_S=ln -s 
 SHELL=/bin/sh GNATLIBFLAGS=-W -Wall -gnatpg -nostdinc  GNATLIBCFLAGS=-g 
 -O2  GNATLIBCFLAGS_FOR_C=-W -Wall -g -O2  -fexceptions -DIN_RTS 
 -DHAVE_GETIPINFO  PICFLAG_FOR_TARGET= THREAD_KIND=native TRACE=no 
 MULTISUBDIR= libsubdir=/gnu/usr/lib/gcc/i686-pc-cygwin/4.7.0 objext=.o 
 prefix=/gnu/usr exeext=.exeext.should.not.be.used  
 'CC=the.host.compiler.should.not.be.needed' 
 GCC_FOR_TARGET=/gnu/gcc/obj3/./gcc/xgcc -B/gnu/gcc/obj3/./gcc/ 
 -B/gnu/usr/i686-pc-cygwin/bin/ -B/gnu/usr/i686-pc-cygwin/lib/ -isystem 
 /gnu/usr/i686-pc-cygwin/include -isystem /gnu/usr/i686-pc-cygwin/sys-include  
   CFLAGS=-g -O2 install-gnatlib
 make[3]: Entering directory `/gnu/gcc/obj3/gcc/ada'
 mkdir -p /gnu/gcc/install.obj3/gnu/usr/lib/gcc/i686-pc-cygwin/4.7.0/adalib
 mkdir -p /gnu/gcc/install.obj3/gnu/usr/lib/gcc/i686-pc-cygwin/4.7.0/adainclude
 rm -rf /gnu/gcc

[Bug ada/864] --program-suffix is ignored (for ada)

2011-12-06 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=864

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |

--- Comment #20 from Dave Korn davek at gcc dot gnu.org 2011-12-07 00:42:31 
UTC ---
And re-reopened.  In the patch applied at comment 10, this code from
Program_Name ...

  if End_Of_Prefix  1 then
 Start_Of_Suffix := End_Of_Prefix + Prog'Length + 1;
  end if;

... means that it only recognizes a suffix if there is also a prefix, i.e. it
only works for cross-compilers.  The documentation suggests this is deliberate:

   function Program_Name (Nam : String; Prog : String) return String_Access;
   --  In the native compilation case, Create a string containing Nam. In the
   --  cross compilation case, looks at the prefix of the current program being
   --  run and prepend it to Nam. For instance if the program being run is
   --  target-gnatmake and Nam is gcc, the returned value will be a pointer
   --  to target-gcc. In the specific case where AAMP_On_Target is set, the
   --  name gcc is mapped to gnaamp, and names of the form gnat* are
   --  mapped to gnaamp*. This function clobbers Name_Buffer and Name_Len.
   --  Also look at any suffix, e.g. gnatmake-4.1 - gcc-4.1. Prog is the
   --  default name of the current program being executed, e.g. gnatmake,
   --  gnatlink.

... but why?  The native behaviour is wrong and it seems incorrect to me that
it should have different semantics from the cross-compiler case.

I would also very much like to see the patch in comment 16 applied.  There is
now a second report open at bug 51095, I will mark it as a dup.  Are there
copyright or licensing reasons why it would have to be submitted by RG, or does
posting it in BZ count as an assignment?


[Bug ada/51095] make install with --program-suffix does not install the bin/gnat* binaries with that suffix

2011-12-06 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51095

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||davek at gcc dot gnu.org
 Resolution||DUPLICATE

--- Comment #3 from Dave Korn davek at gcc dot gnu.org 2011-12-07 00:45:10 
UTC ---
Confirmed.  I would also like to see the patch in Attachment 18256 applied.

I have re-opened bug 864 because there is (what I think is) a bug in the patch
that was applied to resolve it.  Since it's open again, we may as well resume
the discussion here, so I'm marking this bug as a dup.

*** This bug has been marked as a duplicate of bug 864 ***


[Bug ada/864] --program-suffix is ignored (for ada)

2011-12-06 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=864

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||mark at grondar dot org

--- Comment #21 from Dave Korn davek at gcc dot gnu.org 2011-12-07 00:45:10 
UTC ---
*** Bug 51095 has been marked as a duplicate of this bug. ***


[Bug ada/51095] make install with --program-suffix does not install the bin/gnat* binaries with that suffix

2011-12-06 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51095

--- Comment #4 from Dave Korn davek at gcc dot gnu.org 2011-12-07 00:46:18 
UTC ---
 we may as well resume the discussion here

there, not here, sorry for any confusion.


[Bug libstdc++/51135] [4.7 Regression] SIGSEGV during exception cleanup on win32

2011-12-05 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51135

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||davek at gcc dot gnu.org

--- Comment #2 from Dave Korn davek at gcc dot gnu.org 2011-12-05 15:10:54 
UTC ---
Doesn't reproduce on Cygwin, and I don't have a current mingw cross compiler
handy.  It would be best if Kai can look at this as I'm up to my neck in ada at
the moment, if he hasn't found time in the next four or five days I'll try and
investigate.


[Bug c++/43601] Enormous increase in DLL object files size in 4.5

2011-04-20 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43601

--- Comment #61 from Dave Korn davek at gcc dot gnu.org 2011-04-21 00:40:17 
UTC ---
(In reply to comment #59)

 I review the patch, and found that we can add -fno-keep-inline-dllexport to
 the compiler option, and then, the compiler and linker stage works well. But
 the wxWidgets release mono dll's size is so large.(about 17M)

In newer versions of GCC there is also a lot more debug info and Dwarf-2
exception table data that didn't used to be there.  Stripping the dll and/or
building a compiler with SJLJ rather than dwarf exceptions might help, although
SJLJ trades off executable size for slower runtime.  (Badly; dwarf exceptions
only take CPU time when one is actually thrown, whereas SJLJ exceptions take
CPU time every time you enter or exit a try block.  Since exceptions are meant
to be exceptional conditions that only happen occasionally, this tradeoff is
probably worthwhile on desktop platforms where memory is not in short supply,
but SJLJ might still be better on embedded platforms where memory is so
critical that slower runtime performance might be the preferable option.)


[Bug c++/43601] Enormous increase in DLL object files size in 4.5

2011-04-07 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43601

--- Comment #56 from Dave Korn davek at gcc dot gnu.org 2011-04-07 15:15:14 
UTC ---
What works for me on Cygwin, and so may well also work for anyone using MSYS,
is setting the heap_chunk_in_mb registry parameter to some value in the range
1024 - 1536.  I use 1024 myself and that gives me sufficient headroom to link
libgcj dll, which is huge; if it works for that, it's likely to help with wx
dll as well.

http://cygwin.com/cygwin-ug-net/setup-maxmem.html


[Bug lto/48447] LTO link fails to link libgcc correctly when -nostdlib option is specified

2011-04-07 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48447

--- Comment #5 from Dave Korn davek at gcc dot gnu.org 2011-04-07 15:49:29 
UTC ---
Well, this is basically a weakness in the pass-through solution implemented for
PR 42690; it only knows about the compilers stdlibs, and doesn't process any
user-specified libs on the command line.  In the general case that's how things
ought to be: LTRANS only generates new references to builtins/libcalls, not any
of the user's code.  However when you use -nostdlib and pass libgcc as if it
were a user library, as in case 3, the pass-through mechanism doesn't know that
it's actually a compiler runtime rather than user library and doesn't pass it
through.

The correct fix is going to be in the linker, not the compiler, by implementing
a second library scan pass and obsoleting the pass-through mechanism.  I've got
a revised version of that experimental patch that I'll attach to this PR for
reference.


[Bug lto/48447] LTO link fails to link libgcc correctly when -nostdlib option is specified

2011-04-07 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48447

--- Comment #6 from Dave Korn davek at gcc dot gnu.org 2011-04-07 15:51:30 
UTC ---
Created attachment 23913
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=23913
WIP patch

Work in progress: see comment at start of do_rescan_work() re DT_NEEDED libs,
but should be worth trying.


[Bug lto/48447] LTO link fails to link libgcc correctly when -nostdlib option is specified

2011-04-07 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48447

--- Comment #9 from Dave Korn davek at gcc dot gnu.org 2011-04-07 22:22:51 
UTC ---
(In reply to comment #8)
  The correct fix is going to be in the linker, not the compiler, by 
  implementing
  a second library scan pass and obsoleting the pass-through mechanism.  I've 
  got
  a revised version of that experimental patch that I'll attach to this PR for
  reference.
 
 How does this affect circular dependencies between user supplied libraries. ld
 used to resolve these ok, and from the outside it seems like a similar 
 problem.

It doesn't affect them at all.

This problem only arises because the LTRANS phase (when the plugin invokes
lto-wrapper to recompile all the IR files that it has claimed) sometimes
creates new undefined references that weren't in the LTO symbol tables in the
original IR.  However, it is guaranteed that these references are only ever
going to be to functions that the compiler knows about itself as builtins, so
will only ever result in references to the various compiler language runtimes
and the core system libraries; for user-supplied functions.

LTO creates symbol tables in the IR files that drive the linker's initial
symbol resolution process, and these symbol tables will contain explicit
references to any external functions that aren't part of the language and
compiler runtimes; it however deliberately omits references to compiler
builtins, since they may well be optimised out during LTRANS.

So, everything related to user-supplied functions should behave identically
regardless of LTO, either with or without this extra patch to cause GCC to
rescan the libraries.


[Bug lto/43157] Segmentation fault in aggregate_value_p, asm aliases do not work

2011-02-13 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43157

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED

--- Comment #9 from Dave Korn davek at gcc dot gnu.org 2011-02-14 01:08:17 
UTC ---
Verified that the problem was indeed fixed by the patch in comment 8.


[Bug lto/46652] undefined reference to '__udivdi3' with -flto -fuse-linker-plugin

2011-02-13 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46652

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID

--- Comment #8 from Dave Korn davek at gcc dot gnu.org 2011-02-14 01:31:15 
UTC ---
Closing this PR, since, as discussed, it is a binutils bug:

http://sourceware.org/bugzilla/show_bug.cgi?id=12305


[Bug lto/47527] [4.6 regression] -flto -flto-partition=none broken for arm-linux-gnueabi

2011-02-12 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47527

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 CC||davek at gcc dot gnu.org
 Resolution||INVALID

--- Comment #4 from Dave Korn davek at gcc dot gnu.org 2011-02-12 17:48:46 
UTC ---
Hi guys, yes, this is definitely a linker bug, what must be happening is that
there's some kind of private data not getting copied from the real BFD for the
file into the dummy replacement BFD used to hold the linker symbols.  I'm
working on plugin api fixes right now, I'll take a look at how to fix this. 
Definitely not a GCC bug, so closing, but I'll come back here to mention the
fix once I've posted it.


[Bug lto/47527] [4.6 regression] -flto -flto-partition=none broken for arm-linux-gnueabi

2011-02-12 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47527

--- Comment #5 from Dave Korn davek at gcc dot gnu.org 2011-02-12 20:27:18 
UTC ---
Created attachment 23321
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=23321
potential fix

With this patch, ld doesn't check the arch/mach/lang/etc. of dummy IR-only BFDs
any more.  Ramana, I don't have a cross-compiler handy; is it possible you
could check if this solves the problem?


[Bug middle-end/31827] limits-exprparen.c: Pid 2297 received a SIGSEGV for stack growth failure

2011-02-01 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31827

--- Comment #14 from Dave Korn davek at gcc dot gnu.org 2011-02-01 17:37:08 
UTC ---
(In reply to comment #13)
 [ ... ] -fsplit-stack [ ... ] need for gold as host linker [ ... ]

One of the ELF guys will have to answer that one for you!


[Bug lto/47274] [4.6 regression] ICE in lto_varpool_replace_node, at lto-symtab.c:306

2011-02-01 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47274

--- Comment #30 from Dave Korn davek at gcc dot gnu.org 2011-02-01 19:17:04 
UTC ---
*** Bug 47287 has been marked as a duplicate of this bug. ***


[Bug lto/47287] FAIL: gcc.c-torture/execute/builtins/20010124-1.c execution with -flto

2011-02-01 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47287

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 CC||davek at gcc dot gnu.org
 Resolution||DUPLICATE

--- Comment #12 from Dave Korn davek at gcc dot gnu.org 2011-02-01 19:17:04 
UTC ---
  I could be wrong (reopen the bug if I turn out to be mistaken), but I'll bet
this is the same as PR47274: the IR symtabs are being generated incorrectly in
the source .o files.

  To confirm, run the failing command again with --save-temps, and look for the
.gnu.lto_.symtab.* sections; if you see a lot of stuff like this:

.stringzFinside_main
.stringz
.stringz
.stringz
.stringz

(to be precise, if there are more than two NUL bytes trailing the name), then
it's the same bug.

*** This bug has been marked as a duplicate of bug 47274 ***


[Bug lto/47274] [4.6 regression] ICE in lto_varpool_replace_node, at lto-symtab.c:306

2011-01-31 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47274

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||davek at gcc dot gnu.org

--- Comment #22 from Dave Korn davek at gcc dot gnu.org 2011-01-31 17:22:55 
UTC ---
(In reply to comment #21)

 The problem is that first one is defined as prevailing_def_ironly while it is
 not an definition, just use of the symbol. Correct would be to have
 PREVAILING_DEF_IRONLY on the second and PREEMTED_IR on the first. 
 We probably should add sanity check that functions with PREVAILING_DEFs are
 always analyzed and vars finalized.
 
 As observer by Richard, it comes from resolution file already:
 abs-1.o 3
 70 262910e5 PREEMPTED_IR main_test
 main.o 3
 76 e5772d37 PREVAILING_DEF_IRONLY main_test
 should be the other way around
 
 I am quite convinced that we are seeing GNU LD bug and adding Dave Korn to CC
 thus. 

  Looking into it.


[Bug lto/47274] [4.6 regression] ICE in lto_varpool_replace_node, at lto-symtab.c:306

2011-01-31 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47274

--- Comment #23 from Dave Korn davek at gcc dot gnu.org 2011-01-31 18:53:30 
UTC ---
(In reply to comment #21)

 The problem is that first one is defined as prevailing_def_ironly while it is
 not an definition, just use of the symbol. Correct would be to have
 PREVAILING_DEF_IRONLY on the second and PREEMTED_IR on the first. 
 We probably should add sanity check that functions with PREVAILING_DEFs are
 always analyzed and vars finalized.
 
 As observer by Richard, it comes from resolution file already:
 abs-1.o 3
 70 262910e5 PREEMPTED_IR main_test
 main.o 3
 76 e5772d37 PREVAILING_DEF_IRONLY main_test
 should be the other way around

  Why would you expect to see PREEMPTED_IR?  There is only one definition of
main_test; I would expect RESOLVED_IR.  Rather than swapped, aren't they just
plain wrong?

 I am quite convinced that we are seeing GNU LD bug and adding Dave Korn to CC
 thus. 

  I also think you must be seeing a bug in LD, but haven't reproduced it yet;
on both x86_64-linux and i686-cygwin I get the same correct resolution file:

davek@gcc10:~/binutils/obj-gcc/gcc/pr47274$ cat *.res
3
abs-1.o 2
79 7d1d28a3 PREVAILING_DEF_IRONLY main_test
93 7d1d28a3 PREVAILING_DEF_IRONLY abs_called
abs-1-lib.o 2
110 4db0e4c5 RESOLVED_IR inside_main
112 4db0e4c5 RESOLVED_IR abs_called
main.o 4
79 8cf841f3 PREVAILING_DEF main
85 8cf841f3 PREVAILING_DEF_IRONLY link_error
89 8cf841f3 RESOLVED_IR main_test
99 8cf841f3 PREVAILING_DEF_IRONLY inside_main

  What endian-ness are the ppc and hppa targets?


[Bug lto/47274] [4.6 regression] ICE in lto_varpool_replace_node, at lto-symtab.c:306

2011-01-31 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47274

--- Comment #25 from Dave Korn davek at gcc dot gnu.org 2011-01-31 19:40:52 
UTC ---
(In reply to comment #24)
What endian-ness are the ppc and hppa targets?
 
 hppa is big.  I believe ppc is also big.
 
 Dave

  Probably the first time this code has been tested on a big endian machine. 
Maybe some field's being read wrong out of the symbols or something.

  If one of you could try the whole thing with --save-temps -v -Wl,-v
-Wl,--verbose, and attach the various .o and @ arg files (some of which still
get left in /tmp) and the log of the build output, I may be able to run far
enough through the link with just a cross binutils to get to the symbol
resolution stage and debug it.


[Bug middle-end/31827] limits-exprparen.c: Pid 2297 received a SIGSEGV for stack growth failure

2011-01-31 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31827

--- Comment #12 from Dave Korn davek at gcc dot gnu.org 2011-02-01 04:03:02 
UTC ---
(In reply to comment #11)
 Recreated this on linux x86_64 with gcc 4.6-20110129. Running ulimit -a shows
 me that the default stack limit is 8192 and increasing this to 18000 allows 
 the
 test to complete at all optimization levels that are tested by make check.
 Running at 17000 fails.

  This has gotten worse over the past couple of months; I fixed it on cygwin a
while ago by turning up the stack size, finding that it needed somewhere
between 10MB and 12MB on that target; now it's just started failing again.

  I don't know at what point we should consider this a compile-time performance
regression.  Paolo, even a 30% reduction seems like a good idea to me; why not
submit that patch you developed?


[Bug lto/47274] [4.6 regression] ICE in lto_varpool_replace_node, at lto-symtab.c:306

2011-01-31 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47274

--- Comment #28 from Dave Korn davek at gcc dot gnu.org 2011-02-01 06:59:58 
UTC ---
It looks like the problem is much earlier than the linker; it looks like the IR
symtabs in the input object files are being generated incorrectly.  Here are
the real symbol tables:

$ ./obj/binutils/.libs/nm-new.exe *.o

abs-1-lib.o:
0001 C __gnu_lto_v1
 U abort
 T abs
 U abs_called
 U inside_main
0024 T labs

abs-1.o:
0001 C __gnu_lto_v1
 U abort
 U abs
 B abs_called
 T main_test

main.o:
0001 C __gnu_lto_v1
0004 C inside_main
 T main
 U main_test


And here are the IR symtabs (I built a cross GCC just far enough to get the
liblto_plugin):

$ ./obj/binutils/.libs/nm-new.exe --plugin ./obj-xgcc/lto-plugin/.libs/cyglto_p
lugin-0.dll *.o

abs-1-lib.o:
 T abs
 T abs_called
 T inside_main

abs-1.o:
 T abs
 T abs_called
 T main_test

main.o:
 T inside_main
 T main
 T main_test

To confirm that the symtabs really are wrong in the object files, rather than
that the plugin is misreading them, here's a binary dump from one:

$ ./obj/binutils/.libs/objdump.exe -h abs-1-lib.o

abs-1-lib.o: file format elf32-hppa-linux

Sections:
Idx Name  Size  VMA   LMA   File off  Algn
  0 .text 0058      0034  2**2
  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
  1 .data       008c  2**0
  CONTENTS, ALLOC, LOAD, DATA
  2 .bss        008c  2**0
  ALLOC
  3 .gnu.lto_.jmpfuncs.29f392e1 0019      008c  2**0
  CONTENTS, READONLY, EXCLUDE
  4 .gnu.lto_.pureconst.29f392e1 0016      00a5  2**0
  CONTENTS, READONLY, EXCLUDE
  5 .gnu.lto_abs.29f392e1 0192      00bb  2**0
  CONTENTS, READONLY, EXCLUDE
  6 .gnu.lto_labs.29f392e1 0189      024d  2**0
  CONTENTS, READONLY, EXCLUDE
  7 .gnu.lto_.cgraph.29f392e1 003c      03d6  2**0
  CONTENTS, READONLY, EXCLUDE
  8 .gnu.lto_.vars.29f392e1 0018      0412  2**0
  CONTENTS, READONLY, EXCLUDE
  9 .gnu.lto_.refs.29f392e1 001b      042a  2**0
  CONTENTS, READONLY, EXCLUDE
 10 .gnu.lto_.statics.29f392e1 0014      0445  2**0
  CONTENTS, READONLY, EXCLUDE
 11 .gnu.lto_.decls.29f392e1 02ab      0459  2**0
  CONTENTS, READONLY, EXCLUDE
 12 .gnu.lto_.symtab.29f392e1 0048      0704  2**0
  CONTENTS, READONLY, EXCLUDE
 13 .gnu.lto_.opts 0012      074c  2**0
  CONTENTS, READONLY, EXCLUDE
 14 .PARISC.unwind 0020      0760  2**2
  CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
 15 .comment  0042      0780  2**0
  CONTENTS, READONLY

$ ./obj/binutils/.libs/objcopy.exe -j .gnu.lto_.symtab.29f392e1 abs-1-lib.o sym
s-abs-1-lib.o

$ ./obj/binutils/.libs/objdump.exe -s syms-abs-1-lib.o

syms-abs-1-lib.o: file format elf32-hppa-linux

Contents of section .gnu.lto_.symtab.29f392e1:
  61627300     abs.
 0010 4669 6e736964 655f6d61 696e  ..Finside_main..
 0020    00656162  .eab
 0030 735f6361 6c6c6564    s_called
 0040  0067...g

  The format of the IR symtab entries is: 
(variable-length) NUL-terminated name
(variable-length) NUL-terminated comdat group
(1 byte) symbol kind from LDPK_ enumeration
(1 byte) symbol visibility from LDPV_ enumeration
(8 bytes) 64-bit symbol size
(4 bytes) 32-bits symbol aux info.

  As you can see, this symtab claims that abs-1-lib.o defines inside_main

  61627300     abs.
 0010 4669 6e736964 655f6d61 696e  ..Finside_main..
\/ \/\/\/\/ \/\/\/\/ \/\/\/\/
name++ +
comdat-+
 0020    00656162  .eab
  \/\/
kind--+ +   0 = LDPK_DEF
vis-+   0 = LDPV_DEFAULT
 0030 735f6361 6c6c6564    s_called
 0040  0067...g


So the problem is that the object files are being written incorrectly in the
first place, I think.  Indeed, the contents of abs-1-lib.s look that way:

.section.gnu.lto_.symtab.29f392e1,,@progbits
.stringzabs
.stringz
.stringz
.stringz
.stringz
.stringz
.stringz

[Bug target/45325] [4.6 Regression] target attribute doesn't work with -march=i586

2011-01-28 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45325

--- Comment #15 from Dave Korn davek at gcc dot gnu.org 2011-01-28 15:28:33 
UTC ---
(In reply to comment #14)
 The test is invalid on i[345]86-*-* without also enabling -msse.

  Does the same apply to libcpp/lex.c?  i.e. Is that code invalid unless
compiled with -msse2?  LTO bootstrap with arch=i686,tune=generic was still
broken last time I checked.


[Bug lto/46652] undefined reference to '__udivdi3' with -flto -fuse-linker-plugin

2011-01-26 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46652

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||davek at gcc dot gnu.org

--- Comment #7 from Dave Korn davek at gcc dot gnu.org 2011-01-26 15:19:43 
UTC ---
(In reply to comment #6)
 Gold was updated to handle this well for binutils 2.11.1, so H.J.'s branch.
 We still have issues with mainline GNU LD.  Dave, what about getting this 
 fixed
 the gold way?

Seems worth investigating.  I'll take a look at it starting tomorrow sometime.


[Bug c++/43601] Enormous increase in DLL object files size in 4.5

2011-01-25 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43601

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.6.0

--- Comment #52 from Dave Korn davek at gcc dot gnu.org 2011-01-26 01:50:14 
UTC ---
Committed rev.169268.

http://gcc.gnu.org/viewcvs?view=revisionrevision=169268

(Then added the missing PR refs to the changelogss in the next rev:
http://gcc.gnu.org/viewcvs?view=revisionrevision=169269)


[Bug target/40125] libgcc_s DLL installed in wrong directory in cross toolchain

2011-01-25 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40125

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.6.0

--- Comment #8 from Dave Korn davek at gcc dot gnu.org 2011-01-26 03:33:14 
UTC ---
Author: davek
Date: Wed Jan 26 03:33:09 2011
New Revision: 169272

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=169272
Log:
PR target/40125
* configure.ac (AM_LTLDFLAGS): Add -bindir option for windows DLLs.
* configure: Regenerate.


Modified:
trunk/libffi/ChangeLog
trunk/libffi/configure
trunk/libffi/configure.ac

--- Comment #9 from Dave Korn davek at gcc dot gnu.org 2011-01-26 04:20:02 
UTC ---
Author: davek
Date: Wed Jan 26 04:19:58 2011
New Revision: 169274

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=169274
Log:
gcc/ChangeLog:

PR target/40125
* config.gcc (i[34567]86-*-pe | i[34567]86-*-cygwin*): Select suitable
t-dlldir{,-x} fragment for build and add it to tmake_file.
(i[34567]86-*-mingw* | x86_64-*-mingw*): Likewise.
* Makefile.in (libgcc.mvars): Also export SHLIB_DLLDIR to libgcc.
* config/i386/t-dlldir: New file.
(SHLIB_DLLDIR): Define.
* config/i386/t-dlldir-x: New file.
(SHLIB_DLLDIR): Define.
* config/i386/t-cygming: Error out if SHLIB_DLLDIR is not set.
(SHLIB_INSTALL): Use it.

libgcc/ChangeLog:

PR target/40125
* configure.ac: Call ACX_NONCANONICAL_TARGET.
(toolexecdir): Calculate and AC_SUBST.
(toolexeclibdir): Likewise.
* Makefile.in (target_noncanonical): Import.
(toolexecdir): Likewise.
(toolexeclibdir): Likewise.
* configure: Regenerate.


Added:
trunk/gcc/config/i386/t-dlldir
trunk/gcc/config/i386/t-dlldir-x
Modified:
trunk/gcc/ChangeLog
trunk/gcc/Makefile.in
trunk/gcc/config.gcc
trunk/gcc/config/i386/t-cygming
trunk/libgcc/ChangeLog
trunk/libgcc/Makefile.in
trunk/libgcc/configure
trunk/libgcc/configure.ac

--- Comment #10 from Dave Korn davek at gcc dot gnu.org 2011-01-26 04:25:51 
UTC ---
Those two commits should take care of it.


[Bug target/47468] New: FAIL: tmpdir-g++.dg-struct-layout-1/*

2011-01-25 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47468

   Summary: FAIL: tmpdir-g++.dg-struct-layout-1/*
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: da...@gcc.gnu.org


Configuring GCC with '--with-arch=native' '--with-tune=native' on
i686-pc-cygwin.  All the g++ testsuite struct layout compat tests have compile
failures:

FAIL: tmpdir-g++.dg-struct-layout-1/t001 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t001 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t002 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t002 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t003 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t003 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t004 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t004 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t005 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t005 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t006 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t006 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t007 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t007 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t008 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t008 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t009 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t009 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t010 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t010 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t011 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t011 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t012 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t012 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t013 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t013 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t014 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t014 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t015 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t015 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t016 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t016 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t017 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t017 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t018 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t018 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t019 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t019 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t020 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t020 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t021 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t021 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t022 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t022 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t023 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t023 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t024 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t024 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t025 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t025 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t026 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t026 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t026 cp_compat_x_tst.o-cp_compat_y_tst.o
execute 
FAIL: tmpdir-g++.dg-struct-layout-1/t027 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t027 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t028 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t028 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t029 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t029 cp_compat_y_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t030 cp_compat_x_tst.o compile
FAIL: tmpdir-g++.dg-struct-layout-1/t030 cp_compat_y

all of which are of the same form:

spawn /gnu/gcc/obj-pr43601/gcc/testsuite/g++/../../g++
-B/gnu/gcc/obj-pr43601/gcc/testsuite/g++/../../ -nostdinc++
-I/gnu/gcc/obj-pr43601/i686-pc-cygwin/libstdc++-v3/include/i686-pc-cygwin
-I/gnu/gcc/obj-pr43601/i686-pc-cygwin/libstdc++-v3/include
-I/gnu/gcc/gcc/libstdc++-v3/libsupc++
-I/gnu/gcc/gcc/libstdc++-v3/include/backward

[Bug target/47468] FAIL: tmpdir-g++.dg-struct-layout-1/*

2011-01-25 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47468

--- Comment #1 from Dave Korn davek at gcc dot gnu.org 2011-01-26 04:47:09 
UTC ---
Created attachment 23128
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=23128
preprocessed source for testcase (first failing test)

This is what causes:
FAIL: tmpdir-g++.dg-struct-layout-1/t001 cp_compat_x_tst.o compile


[Bug target/47468] FAIL: tmpdir-g++.dg-struct-layout-1/*

2011-01-25 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47468

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Target||i686-pc-cygwin
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.01.26 04:50:09
 CC||hjl.tools at gmail dot com
   Host||i686-pc-cygwin
 Ever Confirmed|0   |1
  Build||i686-pc-cygwin

--- Comment #2 from Dave Korn davek at gcc dot gnu.org 2011-01-26 04:50:09 
UTC ---
HJ, you offered to take a look at what's causing this problem.  Any ideas?


[Bug c++/43601] Enormous increase in DLL object files size in 4.5

2011-01-20 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43601

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||patch
URL||http://gcc.gnu.org/ml/gcc-p
   ||atches/2011-01/msg01432.htm
   ||l
  Known to work||3.4.5
Version|4.5.0   |4.6.0
  Known to fail||4.3.4, 4.5.0, 4.6.0

--- Comment #51 from Dave Korn davek at gcc dot gnu.org 2011-01-21 04:17:24 
UTC ---
Patch submitted.


[Bug c++/41201] #pragma GCC target (sse2) doesn't alter __SSE2__ in C++ (as it does in C)

2011-01-10 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41201

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|NEW
 AssignedTo|davek at gcc dot gnu.org|unassigned at gcc dot
   ||gnu.org


[Bug bootstrap/46037] --enable-stage1-languages=c,lto --enable-languages=c,lto --with-build-config=bootstrap-lto fails on darwin

2011-01-10 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46037

--- Comment #4 from Dave Korn davek at gcc dot gnu.org 2011-01-10 15:28:51 
UTC ---
(In reply to comment #2)
 the optimize attribute isn't used in the preprocessed file but only the
 target attribute which is supported.  Thus, worksforme.

Target attributes must be implying optimisation attributes.  Bug depends also
on --with-{arch,tune,fpmath} settings.  I'll try and reproduce it on
x86_64-linux, it should be possible if I choose the right settings - will reply
again later.

(In reply to comment #3)

 It would be interesting to know if COFF's lto support has the same issues
 (since they share the same backend design for lto support).

No, it's not related to the backend lto support at all; the sorry comes from
the lto output streamer.  It does depend on the backend's attribute handling
though.

(See also PR41201, vaguely related.)


[Bug c++/43601] Enormous increase in DLL object files size in 4.5

2011-01-09 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43601

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011.01.09 17:25:25
 AssignedTo|unassigned at gcc dot   |davek at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1


[Bug c++/43601] Enormous increase in DLL object files size in 4.5

2011-01-09 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43601

--- Comment #49 from Dave Korn davek at gcc dot gnu.org 2011-01-09 17:30:31 
UTC ---
Created attachment 22935
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22935
trial patch

brings the earlier change that nathan made to always keep dllexported inlines
under control of a command-line flag.  Before:

--snip--
make[1]: Leaving directory `/tmp/wx/obj-x-ming-clean/utils/wxrc'
Creating library file:
/tmp/wx/obj-x-ming-clean/lib/libwx_mswd_core-2.8.dll.a/op
t/mingw-pr43601-clean/lib/gcc/i686-pc-mingw32/4.6.0/../../../../i686-pc-mingw32/
bin/ld: final link failed: Memory exhausted
collect2: ld returned 1 exit status

make: *** [/tmp/wx/obj-x-ming-clean/lib/wxmsw28d_core_gcc_custom.dll] Error 1

real79m46.081s
user50m1.166s
sys 5m45.723s

$ du -cxsh lib/*.dll
59M lib/wxbase28d_gcc_custom.dll
1.4Mlib/wxbase28d_net_gcc_custom.dll
512Klib/wxbase28d_xml_gcc_custom.dll
61M total
--snip--

... and after ... 

--snip--
Creating library file: /tmp/wx/obj-x-ming-new/lib/libwx_mswd_aui-2.8.dll.a
Creating library file: /tmp/wx/obj-x-ming-new/lib/libwx_mswd_richtext-2.8.dll.a
Creating library file: /tmp/wx/obj-x-ming-new/lib/libwx_mswd_xrc-2.8.dll.a

real39m32.531s
user21m52.641s
sys4m53.111s


$ du -cxsh lib/*.dll
33M lib/wxbase28d_gcc_custom.dll
1.3Mlib/wxbase28d_net_gcc_custom.dll
512Klib/wxbase28d_xml_gcc_custom.dll
5.2Mlib/wxmsw28d_adv_gcc_custom.dll
2.2Mlib/wxmsw28d_aui_gcc_custom.dll
117Mlib/wxmsw28d_core_gcc_custom.dll
4.7Mlib/wxmsw28d_html_gcc_custom.dll
576Klib/wxmsw28d_qa_gcc_custom.dll
4.2Mlib/wxmsw28d_richtext_gcc_custom.dll
8.2Mlib/wxmsw28d_xrc_gcc_custom.dll
176Mtotal
--snip--

Needs testcase + doco before I can submit it.


[Bug c++/47218] [4.6.0 regression] C++ multiple definitions of non-virtual thunk problem

2011-01-09 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47218

--- Comment #9 from Dave Korn davek at gcc dot gnu.org 2011-01-10 00:33:35 
UTC ---
Author: davek
Date: Mon Jan 10 00:33:32 2011
New Revision: 168624

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168624
Log:
gcc/ChangeLog:

PR c++/47218
* cgraphunit.c (assemble_thunk): Call resolve_unique_section.

gcc/testsuite/ChangeLog:

PR c++/47218
* g++.dg/other/pr47218-1.C: New test file.
* g++.dg/other/pr47218.C: Likewise.
* g++.dg/other/pr47218.h: New supporting header.


Added:
trunk/gcc/testsuite/g++.dg/other/pr47218-1.C
trunk/gcc/testsuite/g++.dg/other/pr47218.C
trunk/gcc/testsuite/g++.dg/other/pr47218.h
Modified:
trunk/gcc/ChangeLog
trunk/gcc/cgraphunit.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/47218] [4.6.0 regression] C++ multiple definitions of non-virtual thunk problem

2011-01-09 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47218

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #10 from Dave Korn davek at gcc dot gnu.org 2011-01-10 00:53:45 
UTC ---
Done.


[Bug c++/47218] [4.6.0 regression] C++ multiple definitions of non-virtual thunk problem

2011-01-08 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47218

--- Comment #4 from Dave Korn davek at gcc dot gnu.org 2011-01-08 16:35:31 
UTC ---
(In reply to comment #3)
 A simple test in PR47116:
 http://gcc.gnu.org/bugzilla/attachment.cgi?id=22866


Thankyou, that should make debugging it easier :)


[Bug c++/47218] [4.6.0 regression] C++ multiple definitions of non-virtual thunk problem

2011-01-08 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47218

--- Comment #5 from Dave Korn davek at gcc dot gnu.org 2011-01-08 18:06:07 
UTC ---
Bug is caused by the change at rev 167795 applied to fix PR46667.

http://gcc.gnu.org/viewcvs?view=revisionrevision=167795


[Bug c++/47218] [4.6.0 regression] C++ multiple definitions of non-virtual thunk problem

2011-01-08 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47218

--- Comment #6 from Dave Korn davek at gcc dot gnu.org 2011-01-08 19:00:25 
UTC ---
(In reply to comment #5)
 Bug is caused by the change at rev 167795 applied to fix PR46667.
 
 http://gcc.gnu.org/viewcvs?view=revisionrevision=167795

Full details at http://gcc.gnu.org/ml/gcc-patches/2011-01/msg00446.html:

  It turns out that resolve_unique_function() is not called at all for the
thunk function any more, where previously it was called from
assemble_start_function called from cgraph_expand_function.  This is because
gimple_expand_cfg() isn't called for these thunk functions; they are emitted
through a call chain that looks like:

 (gdb) bt
 #0  assemble_start_function (decl=0x7fe32f00,
 fnname=0x7fe41860 _ZThn4_N7FooBase3BarEv)
 at /gnu/gcc/gcc-patched/gcc/varasm.c:1524
 #1  0x007aa73c in cgraph_expand_function (node=0x7ff80c30)
 at /gnu/gcc/gcc-patched/gcc/cgraphunit.c:1328
 #2  0x007ad210 in cgraph_optimize ()
 at /gnu/gcc/gcc-patched/gcc/cgraphunit.c:1567
 #3  0x007ad69a in cgraph_finalize_compilation_unit ()
 at /gnu/gcc/gcc-patched/gcc/cgraphunit.c:1031
 #4  0x004ce825 in cp_write_global_declarations ()
 at /gnu/gcc/gcc-patched/gcc/cp/decl2.c:3974
 #5  0x0080ed6d in toplev_main (argc=14, argv=0x5079f78)
 at /gnu/gcc/gcc-patched/gcc/toplev.c:591
 #6  0x0060699f in main (argc=Cannot access memory at address 0x0
 ) at /gnu/gcc/gcc-patched/gcc/main.c:36  

That's the main part of it.


[Bug c++/47218] [4.6.0 regression] C++ multiple definitions of non-virtual thunk problem

2011-01-08 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47218

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED


[Bug c++/47218] [4.6.0 regression] C++ multiple definitions of non-virtual thunk problem

2011-01-08 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47218

--- Comment #7 from Dave Korn davek at gcc dot gnu.org 2011-01-09 00:47:15 
UTC ---
Created attachment 22932
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22932
proposed patch

Ensures thunks get a section name assigned in cgraphunit.c#assemble_thunk(). 
Taking this for a bootstrap/test cycle.


[Bug c++/47218] New: [4.6.0 regression] C++ multiple definitions of non-virtual thunk problem

2011-01-07 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47218

   Summary: [4.6.0 regression] C++ multiple definitions of
non-virtual thunk problem
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: da...@gcc.gnu.org


Sometime between 2010-12-22 and rev.167484, something changed in the behaviour
of the C++ compiler w.r.t the way it handles non-virtual thunks.  I have just
discovered this while working on a patch for PR43601; a compiler built from
trunk on the earlier date reproduces the problem described there, ending in an
out-of-memory error during the final link:

Creating library file:
/tmp/wx/obj-x-ming-new/lib/libwx_mswd_core-2.8.dll.a/opt/
mingw-new/lib/gcc/i686-pc-mingw32/4.6.0/../../../../i686-pc-mingw32/bin/ld:
fina
l link failed: Memory exhausted
collect2: ld returned 1 exit status


... whereas a compiler built from r.167484 emits a whole lot of
multiple-definition errors, and stops before trying to complete the link:

Creating library file:
/tmp/wx/obj-x-ming-clean/lib/libwx_based-2.8.dll.abasedll_wfstream.o:/tmp/wx/wxWidgets-2.8.11/src/common/wfstream.cpp:407:
multiple definition of `non-virtual thunk to wxFFileStream::~wxFFileStream()'
basedll_filesys.o:/tmp/wx/wxWidgets-2.8.11/src/common/filesys.cpp:697: first
defined here
basedll_wfstream.o:/tmp/wx/wxWidgets-2.8.11/src/common/wfstream.cpp:407:
multiple definition of `non-virtual thunk to wxFFileStream::~wxFFileStream()'
basedll_filesys.o:/tmp/wx/wxWidgets-2.8.11/src/common/filesys.cpp:697: first
defined here
basedll_wfstream.o:/tmp/wx/wxWidgets-2.8.11/src/common/wfstream.cpp:407:
multiple definition of `non-virtual thunk to wxFileStream::~wxFileStream()'
basedll_filesys.o:/tmp/wx/wxWidgets-2.8.11/src/common/filesys.cpp:697: first
defined here
basedll_wfstream.o:/tmp/wx/wxWidgets-2.8.11/src/common/wfstream.cpp:407:
multiple definition of `non-virtual thunk to wxFileStream::~wxFileStream()'
basedll_filesys.o:/tmp/wx/wxWidgets-2.8.11/src/common/filesys.cpp:697: first
defined here
basedll_zipstrm.o:/tmp/wx/wxWidgets-2.8.11/src/common/zipstrm.cpp:2423:
multiple definition of `non-virtual thunk to wxFFileStream::~wxFFileStream()'
basedll_filesys.o:/tmp/wx/wxWidgets-2.8.11/src/common/filesys.cpp:697: first
defined here
basedll_zipstrm.o:/tmp/wx/wxWidgets-2.8.11/src/common/zipstrm.cpp:2423:
multiple definition of `non-virtual thunk to wxFFileStream::~wxFFileStream()'
basedll_filesys.o:/tmp/wx/wxWidgets-2.8.11/src/common/filesys.cpp:697: first
defined here
basedll_zipstrm.o:/tmp/wx/wxWidgets-2.8.11/src/common/zipstrm.cpp:2423:
multiple definition of `non-virtual thunk to wxFileStream::~wxFileStream()'
basedll_filesys.o:/tmp/wx/wxWidgets-2.8.11/src/common/filesys.cpp:697: first
defined here
basedll_zipstrm.o:/tmp/wx/wxWidgets-2.8.11/src/common/zipstrm.cpp:2423:
multiple definition of `non-virtual thunk to wxFileStream::~wxFileStream()'
basedll_filesys.o:/tmp/wx/wxWidgets-2.8.11/src/common/filesys.cpp:697: first
defined here
basedll_registry.o:/tmp/wx/wxWidgets-2.8.11/src/msw/registry.cpp:1428: multiple
definition of `non-virtual thunk to wxFFileStream::~wxFFileStream()'
basedll_filesys.o:/tmp/wx/wxWidgets-2.8.11/src/common/filesys.cpp:697: first
defined here
basedll_registry.o:/tmp/wx/wxWidgets-2.8.11/src/msw/registry.cpp:1428: multiple
definition of `non-virtual thunk to wxFFileStream::~wxFFileStream()'
basedll_filesys.o:/tmp/wx/wxWidgets-2.8.11/src/common/filesys.cpp:697: first
defined here
basedll_registry.o:/tmp/wx/wxWidgets-2.8.11/src/msw/registry.cpp:1428: multiple
definition of `non-virtual thunk to wxFileStream::~wxFileStream()'
basedll_filesys.o:/tmp/wx/wxWidgets-2.8.11/src/common/filesys.cpp:697: first
defined here
basedll_registry.o:/tmp/wx/wxWidgets-2.8.11/src/msw/registry.cpp:1428: multiple
definition of `non-virtual thunk to wxFileStream::~wxFileStream()'
basedll_filesys.o:/tmp/wx/wxWidgets-2.8.11/src/common/filesys.cpp:697: first
defined here
collect2: ld returned 1 exit status

In both cases the build was configured with a cygwin-x-mingw cross compiler
using the same command line:

$ /tmp/wx/wxWidgets-2.8.11/configure --with-msw --enable-debug
--enable-debug_gdb --enable-shared 21 --host=i686-pc-mingw32 

More once I've diagnosed what's going on in some of the generated object files.
 I've marked this major as it could easily affect a whole lot of c++ library
builds, but may reduce that severity if it turns out to be something unusual
that wx is doing.  However it's still a regression.


[Bug bootstrap/47215] [4.6 Regression] Failed to bootstrap

2011-01-07 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47215

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||davek at gcc dot gnu.org

--- Comment #4 from Dave Korn davek at gcc dot gnu.org 2011-01-07 20:27:01 
UTC ---
(In reply to comment #3)
 I am just about to test a patch for this. Java misses to build some 
 type-nodes,

Yeah, see also http://gcc.gnu.org/ml/gcc-patches/2010-12/msg00921.html (ignore
the linked PR though, it was a red herring.)


[Bug c++/47218] [4.6.0 regression] C++ multiple definitions of non-virtual thunk problem

2011-01-07 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47218

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.01.07 21:05:02
 Ever Confirmed|0   |1

--- Comment #1 from Dave Korn davek at gcc dot gnu.org 2011-01-07 21:05:02 
UTC ---
Yeah, confirmed that.  With the older compiler the NVT is emitted in a comdat
section as you'd expect: the symbols ...

[6421](sec 2101)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x
__ZThn32_N13wxFFileStreamD1Ev
[6427](sec 2103)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x
__ZThn32_N13wxFFileStreamD0Ev

... point to sections (note MS numbers sections from 1, objdump from zero) like
so:

2100 .text$_ZThn32_N13wxFFileStreamD1Ev 000c      0002d368 
2**2
  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE,
LINK_ONCE_DISCARD (COMDAT __ZThn32_N13wxFFileStreamD1Ev 6421)

2102 .text$_ZThn32_N13wxFFileStreamD0Ev 000c      0002d3e0 
2**2
  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE,
LINK_ONCE_DISCARD (COMDAT __ZThn32_N13wxFFileStreamD0Ev 6427)

With the latest trunk however, the same symbols ... 

[6419](sec  1)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x0fa8
__ZThn32_N13wxFFileStreamD1Ev
[6423](sec  1)(fl 0x00)(ty  20)(scl   2) (nx 0) 0x0fb2
__ZThn32_N13wxFFileStreamD0Ev

... both point to section 1: the .text section.

  0 .text 0fd0      0001633c  2**2
  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE


This being replicated across all object files, no wonder we have multiple
defintion errors.  It's a bug that the NVT doesn't get emitted in a comdat, I
expect.

(I think I remember some kind of recent change to section handling that I saw
fly past on the patches list, wonder if it could be related.)


[Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away

2010-12-19 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46674

--- Comment #12 from Dave Korn davek at gcc dot gnu.org 2010-12-19 11:14:23 
UTC ---
Author: davek
Date: Sun Dec 19 11:14:19 2010
New Revision: 168047

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168047
Log:
PR middle-end/46674
PR middle-end/46221
* varasm.c (symbol_alias_set_t): New typedef for derived pointer_set
wrapper class.
(symbol_alias_set_create): New wrapper function.
(symbol_alias_set_destroy): Likewise.
(symbol_alias_set_contains): Likewise.
(symbol_alias_set_insert): Likewise.
(compute_visible_aliases): Use the above and return symbol_alias_set_t,
not a pointer_set.
(remove_unreachable_alias_pairs): Adjust likewise to match.
(finish_aliases_1): Likewise.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/varasm.c


[Bug middle-end/46221] [4.6 Regression] huge number of c++ testsuite failures, libstdc++.so alias missing

2010-12-19 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46221

--- Comment #27 from Dave Korn davek at gcc dot gnu.org 2010-12-19 11:14:23 
UTC ---
Author: davek
Date: Sun Dec 19 11:14:19 2010
New Revision: 168047

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=168047
Log:
PR middle-end/46674
PR middle-end/46221
* varasm.c (symbol_alias_set_t): New typedef for derived pointer_set
wrapper class.
(symbol_alias_set_create): New wrapper function.
(symbol_alias_set_destroy): Likewise.
(symbol_alias_set_contains): Likewise.
(symbol_alias_set_insert): Likewise.
(compute_visible_aliases): Use the above and return symbol_alias_set_t,
not a pointer_set.
(remove_unreachable_alias_pairs): Adjust likewise to match.
(finish_aliases_1): Likewise.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/varasm.c


[Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away

2010-12-19 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46674

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #13 from Dave Korn davek at gcc dot gnu.org 2010-12-19 11:17:27 
UTC ---
Fully fixed now, I trust.


[Bug middle-end/46221] [4.6 Regression] huge number of c++ testsuite failures, libstdc++.so alias missing

2010-12-19 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46221

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution||FIXED

--- Comment #28 from Dave Korn davek at gcc dot gnu.org 2010-12-19 11:18:37 
UTC ---
Problems (PR46674) with this fix now resolved.


[Bug testsuite/46938] FAIL: gcc.dg/pr43157.c (test for excess errors)

2010-12-15 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46938

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
URL||http://gcc.gnu.org/ml/gcc-p
   ||atches/2010-12/msg00917.htm
   ||l
   Keywords||patch
   Last reconfirmed||2010.12.15 09:29:22
 AssignedTo|unassigned at gcc dot   |davek at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1

--- Comment #1 from Dave Korn davek at gcc dot gnu.org 2010-12-15 09:29:22 
UTC ---
Patch got approved while I was out of town for a couple of days, will commit it
shortly.


[Bug testsuite/46938] FAIL: gcc.dg/pr43157.c (test for excess errors)

2010-12-15 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46938

--- Comment #2 from Dave Korn davek at gcc dot gnu.org 2010-12-15 09:51:30 
UTC ---
Author: davek
Date: Wed Dec 15 09:51:26 2010
New Revision: 167848

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=167848
Log:
PR testsuite/46938
* gcc.dg/pr43157.c: Add dg-require-linker-plugin  directive.


Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/pr43157.c


[Bug testsuite/46938] FAIL: gcc.dg/pr43157.c (test for excess errors)

2010-12-15 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46938

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #3 from Dave Korn davek at gcc dot gnu.org 2010-12-15 09:53:13 
UTC ---
Should be fixed now.


[Bug middle-end/46221] [4.6 Regression] huge number of c++ testsuite failures, libstdc++.so alias missing

2010-12-15 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46221

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Target|powerpc-linux, i?86-linux,  |powerpc-linux, i?86-linux,
   |alpha-linux |alpha-linux, i?86-pc-cygwin
 Status|RESOLVED|REOPENED
 CC||davek at gcc dot gnu.org
 Depends on||46674
 Resolution|FIXED   |
 AssignedTo|rguenth at gcc dot gnu.org  |davek at gcc dot gnu.org

--- Comment #26 from Dave Korn davek at gcc dot gnu.org 2010-12-15 16:28:12 
UTC ---
(In reply to comment #25)
 *** Bug 46674 has been marked as a duplicate of this bug. ***

Actually, it's a genuine bug in the patch; it ends up comparing C identifiers
to actual assembler names, which works fine when there's no USER_LABEL_PREFIX
and when none of the nodes in question have __asm(..) names, but runs into
problems if/when there is/they do.

See attachment 22765 for the patch to resolve all this by always using
assembler names.  Bootstraps and testruns are under way.


[Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away

2010-12-15 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46674

--- Comment #11 from Dave Korn davek at gcc dot gnu.org 2010-12-15 16:17:54 
UTC ---
Created attachment 22765
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22765
Lower all C identifiers to actual assembler symbols for comparison.

This should resolve the problem by ensuring that aliases and decls are lowered
to the canonical assembler form before doing any comparisons or testing if they
are used.


[Bug tree-optimization/29710] gnat ICEs on -fprefetch-loop-arrays -O1.

2010-12-11 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29710

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

   Last reconfirmed|2006-11-10 19:32:46 |2010-12-11 19:32:46
 CC||davek at gcc dot gnu.org
Version|4.2.0   |4.6.0
  Known to fail||4.6.0

--- Comment #6 from Dave Korn davek at gcc dot gnu.org 2010-12-11 10:17:11 
UTC ---
  I've run into what appears to be the same problem with 4.6.0 HEAD in java:

http://gcc.gnu.org/ml/gcc/2010-12/msg00308.html
http://gcc.gnu.org/ml/gcc/2010-12/msg00315.html

 FAIL: newarray_overflow -O3 compilation from source
 FAIL: newarray_overflow -O3 -findirect-dispatch compilation from source

  The problem showed up as a crash during gimple stmt verification.  Turning on
tree dumps moved the crash earlier, to a point where it was trying to dump a
call to builtin_prefetch during the 118t.aprefetch pass.  The GIMPLE context in
that file, after working around the dump problem, shows:

;; Function newarray_overflow.int_check()
(_ZN17newarray_overflow9int_checkEJvv)
  [ . . . ]
bb 13:
  D.1283_116 = MEM[(int *)#ref#2#2_6].data[#slot#3#12.29_44]{lb: 0 sz: 4};
  D.1284_85 = D.1283_116 + 1275068416;
  newarray_overflow.int_check.__builtin_prefetch (D.1284_85, 0, );
  #slot#2#0_53 = MEM[(int *)#ref#2#2_6].data[#slot#3#12.29_44]{lb: 0 sz: 4};
  goto bb 15;

  Judging by the way all the RTL dump files (and the generated assembler
source) leave off immediately before this function, it's some kind of invalid
GIMPLE problem.  The verification failure occurred here:

 (gdb) bt
 #0  walk_gimple_op (stmt=0x7fe106e0,
 callback_op=0x4a0ef0 verify_expr.265801, wi=0x326c554)
 at /gnu/gcc/gcc/gcc/gimple.c:1342
 #1  0x0054a0fd in verify_stmts () at /gnu/gcc/gcc/gcc/tree-cfg.c:4156
 #2  0x0054a94a in verify_ssa (check_modified_stmt=1 '\001')
 at /gnu/gcc/gcc/gcc/tree-ssa.c:878
 #3  0x008cc671 in execute_function_todo.56548 (data=0x1)
 at /gnu/gcc/gcc/gcc/passes.c:1237
 #4  0x00776449 in do_per_function (
 callback=0x8cc530 execute_function_todo.56548, data=0x1)
 at /gnu/gcc/gcc/gcc/passes.c:1084
 #5  0x00540e90 in execute_todo (flags=1) at /gnu/gcc/gcc/gcc/passes.c:1268
 #6  0x00541140 in execute_one_pass (pass=0xaf1320)
 at /gnu/gcc/gcc/gcc/passes.c:1576

... verifying a gimple call statement:

 (gdb) p stmt[0].gimple_call
 $8 = {membase = {opbase = {gsbase = {code = TS_IDENTIFIER, no_warning = 0,
 visited = 0, nontemporal_move = 0, plf = 0, modified = 0,
 has_volatile_ops = 0, pad = 0, subcode = 0, uid = 0, location = 0,
 num_ops = 6, bb = 0x7fda3210, block = 0x0}, def_ops = 0x0,
   use_ops = 0x7fed6f30}, vdef = 0x0, vuse = 0x0}, call_used = {
 anything = 1, nonlocal = 0, escaped = 0, ipa_escaped = 0, null = 0,
 vars_contains_global = 0, vars_contains_restrict = 0, vars = 0x0},
   call_clobbered = {anything = 0, nonlocal = 0, escaped = 0, ipa_escaped = 0,
 null = 0, vars_contains_global = 0, vars_contains_restrict = 0,
 vars = 0x0}, op = {0x0}}

  By forcing the num_ops down to 5, I managed to defer the crash until
expand_builtin_prefetch:

Program received signal SIGSEGV, Segmentation fault.
expand_builtin_prefetch (exp=value optimized out)
at /gnu/gcc/gcc/gcc/builtins.c:1131
1131  if (TREE_CODE (arg2) != INTEGER_CST)

  So that made me suspect the third argument to the call was invalid, and
breakpointing on gimple_build_call showed the problem:

 (gdb) bt
#0  gimple_build_call (fn=0x7ff8f580, nargs=3) at /gnu/gcc/gcc/gcc/gimple.c:261
#1  0x008c310d in tree_ssa_loop_prefetch () at
/gnu/gcc/gcc/gcc/tree-ssa-loop-pr
efetch.c:1121
(gdb) x/8xw $esp
0x326c5fc:  0x008c310d  0x7ff8f580  0x0003  0x7feb8280
0x326c60c:  0x7fef03d8  0x  0x  0x0008

  fn and nargs can be seen in the middle of the first row there, and the next
three words should be the arguments to the gimple call, but you can see the
third one is null.  That comes from this line in issue_prefetch_ref() in
tree-ssa-loop-prefetch.c:

  prefetch = gimple_build_call (built_in_decls[BUILT_IN_PREFETCH],
3, addr, write_p, local);

and the variable local is set like so:

  local = nontemporal ? integer_zero_node : integer_three_node;

Sure enough, on investigating the integer_xxx_nodes, 

  TI_INTEGER_ZERO,  // = 13
  TI_INTEGER_ONE,  // = 14
  TI_INTEGER_THREE,  // = 15
  TI_INTEGER_MINUS_ONE,  // = 16

(gdb) p global_trees[13]
$20 = (union tree_node *) 0x7fef03d8
(gdb) p global_trees[14]
$21 = (union tree_node *) 0x7fef03f0
(gdb) p global_trees[15]
$22 = (union tree_node *) 0x0
(gdb) p global_trees[16]
$23 = (union tree_node *) 0x7fef0438

... it appears that integer_three_node has not been initialised.  Looks to me
like that might be something

[Bug tree-optimization/29710] gnat ICEs on -fprefetch-loop-arrays -O1.

2010-12-11 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29710

--- Comment #7 from Dave Korn davek at gcc dot gnu.org 2010-12-11 10:46:22 
UTC ---
(In reply to comment #6)

 Although I haven't verified that this is the same as the original problem
 report, it really looks like it, modulo various changes to the compiler's
 internals since 4.2; in particular, 
 
 (In reply to comment #4)
  (gdb) p current_stmt_group
  $6 = (struct stmt_group *) 0x0
 
 ... that looks like that null third argument causing problems to me.

  Ah, but there was no integer_three_node back then and builtin_expect only
used to take two args at the time.  So it can't be the same thing after all.


[Bug c++/45201] ICE: stack overflow

2010-12-11 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45201

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||davek at gcc dot gnu.org

--- Comment #10 from Dave Korn davek at gcc dot gnu.org 2010-12-11 16:08:37 
UTC ---
Should be fixed for 4.6.0: compiler stack size was increased to 12MB by:

http://gcc.gnu.org/viewcvs?view=revisionrevision=167400


[Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away

2010-12-10 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46674

--- Comment #10 from Dave Korn davek at gcc dot gnu.org 2010-12-10 14:29:03 
UTC ---
Author: davek
Date: Fri Dec 10 14:28:58 2010
New Revision: 167688

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=167688
Log:
gcc/ChangeLog:

PR middle-end/46674
PR lto/43157
* target.def (mangle_assembler_name): New target asm_out hook.
* targhooks.c (default_mangle_assembler_name): Add default hook
implementation.
* targhooks.h (default_mangle_assembler_name): Add prototype.
* lto-symtab.c (lto_symtab_register_decl): Use new hook when
processing DECL_ASSEMBLER_NAMEs for lto symtabs.
(lto_symtab_get_resolution): Likewise.
(lto_cgraph_replace_node): Likewise.
(lto_symtab_prevailing_decl): Likewise.
* lto-streamer-out.c (write_symbol): Likewise.
* doc/tm.texi.in (TARGET_MANGLE_ASSEMBLER_NAME): Add @hook directive.
* doc/tm.texi: Regenerate.
* config/i386/cygming.h (TARGET_MANGLE_ASSEMBLER_NAME): Define to
point at i386_pe_mangle_assembler_name.
* config/i386/winnt.c (i386_pe_mangle_assembler_name): New function.
* config/i386/i386-protos.h (i386_pe_mangle_assembler_name): Add
prototype.

lto-plugin/ChangeLog:

PR middle-end/46674
PR lto/43157
* configure.ac (SYM_STYLE): Don't AC_DEFINE.
* lto-plugin.c (sym_style): Don't use it; default to ss_none.
* configure: Regenerate.
* config.h.in: Likewise.

gcc/testsuite/ChangeLog:

PR middle-end/46674
PR lto/43157
* gcc.dg/pr43157.c: New file.


Added:
trunk/gcc/testsuite/gcc.dg/pr43157.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/cygming.h
trunk/gcc/config/i386/i386-protos.h
trunk/gcc/config/i386/winnt.c
trunk/gcc/doc/tm.texi
trunk/gcc/doc/tm.texi.in
trunk/gcc/lto-streamer-out.c
trunk/gcc/lto-symtab.c
trunk/gcc/target.def
trunk/gcc/targhooks.c
trunk/gcc/targhooks.h
trunk/gcc/testsuite/ChangeLog
trunk/lto-plugin/ChangeLog
trunk/lto-plugin/config.h.in
trunk/lto-plugin/configure
trunk/lto-plugin/configure.ac
trunk/lto-plugin/lto-plugin.c


[Bug lto/43157] Segmentation fault in aggregate_value_p, asm aliases do not work

2010-12-10 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43157

--- Comment #8 from Dave Korn davek at gcc dot gnu.org 2010-12-10 14:29:03 
UTC ---
Author: davek
Date: Fri Dec 10 14:28:58 2010
New Revision: 167688

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=167688
Log:
gcc/ChangeLog:

PR middle-end/46674
PR lto/43157
* target.def (mangle_assembler_name): New target asm_out hook.
* targhooks.c (default_mangle_assembler_name): Add default hook
implementation.
* targhooks.h (default_mangle_assembler_name): Add prototype.
* lto-symtab.c (lto_symtab_register_decl): Use new hook when
processing DECL_ASSEMBLER_NAMEs for lto symtabs.
(lto_symtab_get_resolution): Likewise.
(lto_cgraph_replace_node): Likewise.
(lto_symtab_prevailing_decl): Likewise.
* lto-streamer-out.c (write_symbol): Likewise.
* doc/tm.texi.in (TARGET_MANGLE_ASSEMBLER_NAME): Add @hook directive.
* doc/tm.texi: Regenerate.
* config/i386/cygming.h (TARGET_MANGLE_ASSEMBLER_NAME): Define to
point at i386_pe_mangle_assembler_name.
* config/i386/winnt.c (i386_pe_mangle_assembler_name): New function.
* config/i386/i386-protos.h (i386_pe_mangle_assembler_name): Add
prototype.

lto-plugin/ChangeLog:

PR middle-end/46674
PR lto/43157
* configure.ac (SYM_STYLE): Don't AC_DEFINE.
* lto-plugin.c (sym_style): Don't use it; default to ss_none.
* configure: Regenerate.
* config.h.in: Likewise.

gcc/testsuite/ChangeLog:

PR middle-end/46674
PR lto/43157
* gcc.dg/pr43157.c: New file.


Added:
trunk/gcc/testsuite/gcc.dg/pr43157.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/cygming.h
trunk/gcc/config/i386/i386-protos.h
trunk/gcc/config/i386/winnt.c
trunk/gcc/doc/tm.texi
trunk/gcc/doc/tm.texi.in
trunk/gcc/lto-streamer-out.c
trunk/gcc/lto-symtab.c
trunk/gcc/target.def
trunk/gcc/targhooks.c
trunk/gcc/targhooks.h
trunk/gcc/testsuite/ChangeLog
trunk/lto-plugin/ChangeLog
trunk/lto-plugin/config.h.in
trunk/lto-plugin/configure
trunk/lto-plugin/configure.ac
trunk/lto-plugin/lto-plugin.c


[Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away

2010-12-10 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46674

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|REOPENED|ASSIGNED
 AssignedTo|unassigned at gcc dot   |davek at gcc dot gnu.org
   |gnu.org |


[Bug debug/46123] [4.5/4.6 Regression] ICE: in output_aranges, at dwarf2out.c:11531 with -feliminate-dwarf2-dups -g

2010-12-10 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46123

--- Comment #13 from Dave Korn davek at gcc dot gnu.org 2010-12-11 04:34:07 
UTC ---
Didn't crop up in my latest testrun (based on r.167484 / 20101206), so whatever
it was seems to have gone away.


[Bug c/46859] Attribute depends on location

2010-12-09 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46859

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||davek at gcc dot gnu.org

--- Comment #2 from Dave Korn davek at gcc dot gnu.org 2010-12-09 20:31:25 
UTC ---
I note that if you re-write foo2 like this:

int 
 __attribute__((aligned(4096))) 
*
foo2a ()
{
  return 0;
}

it gets aligned properly.  I think something must be going wrong when the
parser starts to build a derived pointer type based on the underlying scalar
type, but that's just a first guess.


[Bug lto/43157] Segmentation fault in aggregate_value_p, asm aliases do not work

2010-12-09 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43157

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||davek at gcc dot gnu.org

--- Comment #7 from Dave Korn davek at gcc dot gnu.org 2010-12-10 06:57:54 
UTC ---
I can't reproduce any segfault, but this slightly-modified version of the
testcase fails on i686-pc-cygwin, which is a target where __USER_LABEL_PREFIX
is an underscore:

ad...@ubik /gnu/gcc/obj-lto/gcc
$ cat pr43157.c
/* { dg-do link } */
/* { dg-require-effective-target lto } */
/* { dg-options -O1 -flto -fuse-linker-plugin } */

#define LABEL3(pfx, x) # pfx x
#define LABEL2(pfx, x) LABEL3(pfx, x)
#define LABEL(x) LABEL2(__USER_LABEL_PREFIX__, x)

unsigned int factorial_ (unsigned int) __asm__ (LABEL (factorial));

unsigned int factorial (unsigned int i)
{
  return i  1 ? i * factorial_ (i - 1) : 1;
}

int main (void)
{
  return factorial (5);
}

ad...@ubik /gnu/gcc/obj-lto/gcc
$ ./xgcc.exe -B. -O1 -flto -fuse-linker-plugin pr43157.c -o pr43157.exe
/win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccroMaGc.ltrans0.ltrans.o:ccroMaGc.ltrans
0.o:(.text.startup+0x16): undefined reference to `_factorial'
collect2: ld returned 1 exit status


Looking at the lto symtab in the generated .o file:

ad...@ubik /gnu/gcc/obj-lto/gcc
$ nm --plugin /gnu/gcc/obj-asm-mangle/gcc/cyglto_plugin-0.dll pr43157.o
 U _factorial
 T factorial
 T main

... you can see it's gotten confused about c-level vs. asm-level symbols, this
reflects in the generated resolution file:

ad...@ubik /gnu/gcc/obj-lto/gcc
$ ./xgcc.exe -B. -O1 -flto -fuse-linker-plugin pr43157.c -o pr43157.exe --save-
temps
[Leaving LTRANS /win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccU0cpRH.args]
[Leaving LTRANS pr43157.exe.ltrans.out]
[Leaving LTRANS /win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccGUCoPM.args]
[Leaving LTRANS pr43157.exe.ltrans0.o]
pr43157.exe.ltrans0.ltrans.o:pr43157.exe.ltrans0.o:(.text.startup+0x16):
undefin
ed reference to `_factorial'
collect2: ld returned 1 exit status

ad...@ubik /gnu/gcc/obj-lto/gcc
$ cat pr43157.res
1
pr43157.o 3
75 d804d237 PREVAILING_DEF_IRONLY _factorial
84 d804d237 PREVAILING_DEF _main
87 d804d237 UNDEF __factorial

With my patch for asm name mangling in lto symtabs, it works fine.  The
generated lto symtab contains asm-level symbols only:

ad...@ubik /gnu/gcc/obj-asm-mangle/gcc
$ ./xgcc.exe -B. -O1 -flto -fuse-linker-plugin -c pr43157.c -o pr43157.o

ad...@ubik /gnu/gcc/obj-asm-mangle/gcc
$ nm --plugin /gnu/gcc/obj-asm-mangle/gcc/cyglto_plugin-0.dll pr43157.o
 T _factorial
 T _main

ad...@ubik /gnu/gcc/obj-asm-mangle/gcc
$ ./xgcc.exe -B. -O1 -flto -fuse-linker-plugin pr43157.c -o pr43157.exe --save-
temps
[Leaving LTRANS /win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccBfa3cb.args]
[Leaving LTRANS pr43157.exe.ltrans.out]
[Leaving LTRANS /win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccmkGBnN.args]
[Leaving LTRANS pr43157.exe.ltrans0.o]

ad...@ubik /gnu/gcc/obj-asm-mangle/gcc
$ cat pr43157.res
1
pr43157.o 2
75 f3900364 PREVAILING_DEF_IRONLY _factorial
84 f3900364 PREVAILING_DEF _main

ad...@ubik /gnu/gcc/obj-asm-mangle/gcc

... and so the resolution file comes out correct.


[Bug c++/41201] #pragma GCC target (sse2) doesn't alter __SSE2__ in C++ (as it does in C)

2010-12-08 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41201

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2010.12.08 14:10:43
 CC||davek at gcc dot gnu.org
 AssignedTo|unassigned at gcc dot   |davek at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1

--- Comment #6 from Dave Korn davek at gcc dot gnu.org 2010-12-08 14:10:43 
UTC ---
I stumbled into the underlying cause of this bug while working on
dllimport/dllexport attributes.  It turns out that the TARGET_INSERT_ATTRIBUTES
hook is broken in C++, because of a bit of premature optimisation in the
routine gcc/cp/decl2.c#cplus_decl_attributes().  This is a C++-specific wrapper
round the core compiler's gcc/attribs.c#decl_attributes() which takes care of
deferred attribute handling for templates:

/* Like decl_attributes, but handle C++ complexity.  */

void
cplus_decl_attributes (tree *decl, tree attributes, int flags)
{
  if (*decl == NULL_TREE || *decl == void_type_node
  || *decl == error_mark_node
  || attributes == NULL_TREE)
return;

  if (processing_template_decl)
{
  if (check_for_bare_parameter_packs (attributes))
return;

  save_template_attributes (attributes, decl);
  if (attributes == NULL_TREE)
return;
}

  if (TREE_CODE (*decl) == TEMPLATE_DECL)
decl = DECL_TEMPLATE_RESULT (*decl);

  decl_attributes (decl, attributes, flags);

  if (TREE_CODE (*decl) == TYPE_DECL)
SET_IDENTIFIER_TYPE_VALUE (DECL_NAME (*decl), TREE_TYPE (*decl));
}

  The early exits when attributes == NULL_TREE are (I suppose) intended to save
the time taken calling decl_attributes when there aren't any attributes to be
added to the newly-created decl, but it has the side-effect of bypassing the
call that decl_attributes makes to TARGET_INSERT_ATTRIBUTES.  The consequence
is that the default/target/pragma-derived attributes don't get inserted onto
any decls in C++ - except for decls that have some explicit attributes
specified!

  I'm going to be testing this fix as part of a larger patch over the next
couple of days, perhaps others would like to give it a try on their platforms:


Index: gcc/cp/decl2.c
===
--- gcc/cp/decl2.c(revision 167484)
+++ gcc/cp/decl2.c(working copy)
@@ -1269,8 +1269,7 @@ void
 cplus_decl_attributes (tree *decl, tree attributes, int flags)
 {
   if (*decl == NULL_TREE || *decl == void_type_node
-  || *decl == error_mark_node
-  || attributes == NULL_TREE)
+  || *decl == error_mark_node)
 return;

   if (processing_template_decl)
@@ -1279,13 +1278,13 @@ cplus_decl_attributes (tree *decl, tree attributes
 return;

   save_template_attributes (attributes, decl);
-  if (attributes == NULL_TREE)
-return;
 }

   if (TREE_CODE (*decl) == TEMPLATE_DECL)
 decl = DECL_TEMPLATE_RESULT (*decl);

+  /* Even if ATTRIBUTES is null, we must call this in order to
+ give the TARGET_INSERT_ATTRIBUTES hook a chance to run.  */
   decl_attributes (decl, attributes, flags);

   if (TREE_CODE (*decl) == TYPE_DECL)


[Bug c++/41201] #pragma GCC target (sse2) doesn't alter __SSE2__ in C++ (as it does in C)

2010-12-08 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41201

--- Comment #7 from Dave Korn davek at gcc dot gnu.org 2010-12-08 14:19:40 
UTC ---
(In reply to comment #6)
 I stumbled into the underlying cause of this bug 

Should clarify: I'm referring to the broken-ness referred to in comments 1 and
4.  My patch probably won't make any difference to the original testcase,
because it's to do with declarations, not preprocessor macros.


[Bug c++/40269] ICE during processing class attributes

2010-12-07 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40269

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||davek at gcc dot gnu.org
 Resolution||WORKSFORME

--- Comment #1 from Dave Korn davek at gcc dot gnu.org 2010-12-07 23:26:26 
UTC ---
Couldn't reproduce this on the released 4.5.0 nor on 4.6.0 current trunk, so I
assume this was a transient thing that got fixed.  Please re-open if you see it
again anytime.


[Bug target/45754] Driver core dump when duplicating -Wall command line option

2010-12-07 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45754

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||davek at gcc dot gnu.org
 Resolution||FIXED

--- Comment #3 from Dave Korn davek at gcc dot gnu.org 2010-12-08 05:57:07 
UTC ---
(In reply to comment #2)
 Subject: Re:  Driver core dump when duplicating -Wall
  command line option
 
 Unless this can be reproduced with trunk I'd guess it was fixed by:
 
 2010-06-09  Dave Korn  dave.korn.cyg...@gmail.com
 
 * opts-common.c (prune_options): Ensure replacement argv array
 is correctly terminated by a NULL entry.

  Yes, I confirmed that the bug is fixed on head.  Martin, it is also fixed in
the cygwin gcc-4.5.0-1 test release.

  BTW, use 'g++', not 'gcc', when compiling C++, or you will run into link
errors vs. libstdc!


[Bug middle-end/46671] [4.6 Regression] ICE in default_no_named_section, at varasm .c:5994

2010-12-06 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46671

--- Comment #9 from Dave Korn davek at gcc dot gnu.org 2010-12-06 17:27:06 
UTC ---
(In reply to comment #8)
 sdbout.c is broken then.

  Quite likely, but I don't understand what it thinks it's trying to do yet
well enough to be sure how.

  If it doesn't care in which code section it emits the
 stuff, it should at least not switch_to_section (text_section) if
 in_section != NULL  (in_section-flags  SECTION_CODE) != 0.

  I'll take a look at that possibility, thanks.  I'm going to have to read up
on the coff debug spec to see what it says about the matter.

 And in any case, it should remember in_section from the beginning of the
 function into say saved_section automatic var and if it was non-NULL, do
 switch_to_section (saved_section) at the end of the function.

  In fact I don't think that would help, GAS does not accept switching section
in the middle of an open CFI directive block (though this is probably an
implementation limitation rather than a deliberate design choice; cfi is
tracked on a per-frag basis, switching to a new section and back leads to
starting a new frag which doesn't have any pointer to the previously-begun cfi
block.)


[Bug driver/42690] Undefined reference errors with -flto -fuse-linker-plugin

2010-12-06 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42690

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
   See Also||http://www.sourceware.org/b
   ||ugzilla/show_bug.cgi?id=122
   ||48
 Resolution||FIXED

--- Comment #40 from Dave Korn davek at gcc dot gnu.org 2010-12-06 17:54:12 
UTC ---
The implicit -static problem is fixed at the gcc end, and the remaining aspects
of this problem will be resolved by HJ's patch to binutils (see 'See also'
URL).


[Bug middle-end/46674] [4.6 Regression] Weak alias is mistakenly optimized away

2010-12-06 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46674

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 CC||davek at gcc dot gnu.org
 Resolution|FIXED   |

--- Comment #9 from Dave Korn davek at gcc dot gnu.org 2010-12-07 04:31:08 
UTC ---
Not fixed on platforms where USER_LABEL_PREFIX is non-empty.  On
i686-pc-cygwin:

FAIL: gcc.dg/pr46674.c scan-assembler wobbly

Stripping the star isn't enough, because behind that star it's a
fully-qualified assembler name, i.e. prefixed if prefixes are in use.  The
alias names are C level symbols.  We can't just compare them; this is the same
as the lto symtab problem.  We should be able to fix this fully using the
mangle_assembler_name hook I'm testing a patch for
(http://gcc.gnu.org/ml/gcc-patches/2010-12/msg00403.html).


[Bug target/40125] libgcc_s DLL installed in wrong directory in cross toolchain

2010-12-05 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40125

--- Comment #6 from Dave Korn davek at gcc dot gnu.org 2010-12-06 00:50:11 
UTC ---
Author: davek
Date: Mon Dec  6 00:50:04 2010
New Revision: 167480

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=167480
Log:
config/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* lthostflags.m4: New file.
(ACX_LT_HOST_FLAGS): Define.

libgfortran/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* Makefile.am (LTLDFLAGS): Use lt_host_flags.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.

libgomp/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* Makefile.am (libgomp_la_LDFLAGS): Use lt_host_flags.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.

libjava/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* configure.host (libgcj_sublib_ltflags): Use lt_host_flags.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
* gcj/Makefile.in: Regenerate.
* include/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.

libobjc/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac (extra_ldflags_libobjc): Invoke ACX_LT_HOST_FLAGS.
* Makefile.in (lt_host_flags): Import AC_SUBST'd value.
* aclocal.m4: Regenerate.
* configure: Regenerate.

libquadmath/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* Makefile.am (libquadmath_la_LDFLAGS): Use lt_host_flags.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.

libssp/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* Makefile.am (libssp_la_LDFLAGS): Use lt_host_flags.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.

libstdc++-v3/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* configure.host (OPT_LDFLAGS): Use lt_host_flags for cygming.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* include/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* python/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.

lto-plugin/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* Makefile.am (liblto_plugin_la_LDFLAGS): Use lt_host_flags but
override -bindir setting.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.



Added:
trunk/config/lthostflags.m4
Modified:
trunk/config/ChangeLog
trunk/libgfortran/ChangeLog
trunk/libgfortran/Makefile.am
trunk/libgfortran/Makefile.in
trunk/libgfortran/aclocal.m4
trunk/libgfortran/configure
trunk/libgfortran/configure.ac
trunk/libgomp/ChangeLog
trunk/libgomp/Makefile.am
trunk/libgomp/Makefile.in
trunk/libgomp/aclocal.m4
trunk/libgomp/configure
trunk/libgomp/configure.ac
trunk/libgomp/testsuite/Makefile.in
trunk/libjava/ChangeLog
trunk/libjava/Makefile.in
trunk/libjava/aclocal.m4
trunk/libjava/configure
trunk/libjava/configure.ac
trunk/libjava/configure.host
trunk/libjava/gcj/Makefile.in
trunk/libjava/include/Makefile.in
trunk/libjava/testsuite/Makefile.in
trunk/libobjc/ChangeLog
trunk/libobjc/Makefile.in
trunk/libobjc/aclocal.m4
trunk/libobjc/configure
trunk/libobjc/configure.ac
trunk/libquadmath/ChangeLog
trunk/libquadmath/Makefile.am
trunk/libquadmath/Makefile.in
trunk/libquadmath/aclocal.m4
trunk/libquadmath/configure
trunk/libquadmath/configure.ac
trunk/libssp/ChangeLog
trunk/libssp/Makefile.am
trunk/libssp/Makefile.in
trunk/libssp/aclocal.m4
trunk/libssp/configure
trunk/libssp/configure.ac
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/Makefile.in
trunk/libstdc++-v3/aclocal.m4
trunk/libstdc++-v3/configure
trunk/libstdc++-v3/configure.ac
trunk/libstdc++-v3/configure.host
trunk/libstdc++-v3/doc/Makefile.in
trunk/libstdc++-v3/include/Makefile.in
trunk/libstdc++-v3/libsupc++/Makefile.in
trunk

[Bug lto/46695] [4.6 regression] failure to build X from darwin to cris-elf with lto enabled

2010-12-05 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46695

--- Comment #7 from Dave Korn davek at gcc dot gnu.org 2010-12-06 00:50:11 
UTC ---
Author: davek
Date: Mon Dec  6 00:50:04 2010
New Revision: 167480

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=167480
Log:
config/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* lthostflags.m4: New file.
(ACX_LT_HOST_FLAGS): Define.

libgfortran/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* Makefile.am (LTLDFLAGS): Use lt_host_flags.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.

libgomp/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* Makefile.am (libgomp_la_LDFLAGS): Use lt_host_flags.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.

libjava/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* configure.host (libgcj_sublib_ltflags): Use lt_host_flags.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
* gcj/Makefile.in: Regenerate.
* include/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.

libobjc/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac (extra_ldflags_libobjc): Invoke ACX_LT_HOST_FLAGS.
* Makefile.in (lt_host_flags): Import AC_SUBST'd value.
* aclocal.m4: Regenerate.
* configure: Regenerate.

libquadmath/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* Makefile.am (libquadmath_la_LDFLAGS): Use lt_host_flags.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.

libssp/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* Makefile.am (libssp_la_LDFLAGS): Use lt_host_flags.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.

libstdc++-v3/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* configure.host (OPT_LDFLAGS): Use lt_host_flags for cygming.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* include/Makefile.in: Regenerate.
* libsupc++/Makefile.in: Regenerate.
* po/Makefile.in: Regenerate.
* python/Makefile.in: Regenerate.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.

lto-plugin/ChangeLog:

2010-12-06  Dave Korn  dave.korn.cyg...@gmail.com

PR target/40125
PR lto/46695
* configure.ac: Invoke ACX_LT_HOST_FLAGS.
* Makefile.am (liblto_plugin_la_LDFLAGS): Use lt_host_flags but
override -bindir setting.
* aclocal.m4: Regenerate.
* configure: Regenerate.
* Makefile.in: Regenerate.



Added:
trunk/config/lthostflags.m4
Modified:
trunk/config/ChangeLog
trunk/libgfortran/ChangeLog
trunk/libgfortran/Makefile.am
trunk/libgfortran/Makefile.in
trunk/libgfortran/aclocal.m4
trunk/libgfortran/configure
trunk/libgfortran/configure.ac
trunk/libgomp/ChangeLog
trunk/libgomp/Makefile.am
trunk/libgomp/Makefile.in
trunk/libgomp/aclocal.m4
trunk/libgomp/configure
trunk/libgomp/configure.ac
trunk/libgomp/testsuite/Makefile.in
trunk/libjava/ChangeLog
trunk/libjava/Makefile.in
trunk/libjava/aclocal.m4
trunk/libjava/configure
trunk/libjava/configure.ac
trunk/libjava/configure.host
trunk/libjava/gcj/Makefile.in
trunk/libjava/include/Makefile.in
trunk/libjava/testsuite/Makefile.in
trunk/libobjc/ChangeLog
trunk/libobjc/Makefile.in
trunk/libobjc/aclocal.m4
trunk/libobjc/configure
trunk/libobjc/configure.ac
trunk/libquadmath/ChangeLog
trunk/libquadmath/Makefile.am
trunk/libquadmath/Makefile.in
trunk/libquadmath/aclocal.m4
trunk/libquadmath/configure
trunk/libquadmath/configure.ac
trunk/libssp/ChangeLog
trunk/libssp/Makefile.am
trunk/libssp/Makefile.in
trunk/libssp/aclocal.m4
trunk/libssp/configure
trunk/libssp/configure.ac
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/Makefile.in
trunk/libstdc++-v3/aclocal.m4
trunk/libstdc++-v3/configure
trunk/libstdc++-v3/configure.ac
trunk/libstdc++-v3/configure.host
trunk/libstdc++-v3/doc/Makefile.in
trunk/libstdc++-v3/include/Makefile.in
trunk/libstdc++-v3/libsupc++/Makefile.in
trunk

[Bug lto/46695] [4.6 regression] failure to build X from darwin to cris-elf with lto enabled

2010-12-05 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46695

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #8 from Dave Korn davek at gcc dot gnu.org 2010-12-06 00:53:15 
UTC ---
Haven't verified but should be fixed now that you don't have -no-undefined
getting added any more.  Please reopen if any problem persists.


[Bug target/40125] libgcc_s DLL installed in wrong directory in cross toolchain

2010-12-05 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40125

--- Comment #7 from Dave Korn davek at gcc dot gnu.org 2010-12-06 00:54:23 
UTC ---
That still leaves libffi and libgcc_s to fix; I'll get to them shortly.


[Bug lto/46695] [4.6 regression] failure to build X from darwin to cris-elf with lto enabled

2010-12-03 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46695

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

  Component|other   |lto

--- Comment #6 from Dave Korn davek at gcc dot gnu.org 2010-12-04 00:29:15 
UTC ---
Problems with the plugin are filed under the LTO category, so adjusting.  This
bug should be resolved by the patch I've posted for Bug 40125.


[Bug target/40125] libgcc_s DLL installed in wrong directory in cross toolchain

2010-12-03 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40125

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

  Attachment #22549|0   |1
is obsolete||
   Keywords||patch
URL||http://gcc.gnu.org/ml/gcc-p
   ||atches/2010-12/msg00132.htm
   ||l

--- Comment #5 from Dave Korn davek at gcc dot gnu.org 2010-11-28 05:40:58 
UTC ---
Created attachment 22552
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22552
revised patch

last one had a couple of quoting glitches in it.  fixed in this spin.

don't forget to regenerate everything.  aclocal requires the args -I ../config
-I . -I ..  in every directory except libjava where it requires -I . -I .. -I
../config -I libltdl.  autoconf required in each of the top-level subdirs
touched, automake in all but libobjc.


[Bug middle-end/46671] [4.6 Regression] ICE in default_no_named_section, at varasm .c:5994

2010-12-03 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46671

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||davek at gcc dot gnu.org

--- Comment #7 from Dave Korn davek at gcc dot gnu.org 2010-12-04 05:36:36 
UTC ---
  I think this may also have caused

FAIL: g++.dg/debug/debug9.C (test for excess errors)

on i686-pc-cygwin.  I get all sorts of assembler complaints:

/gnu/gcc/obj-pr40125/gcc/testsuite/g++/../../g++
-B/gnu/gcc/obj-pr40125/gcc/testsuite/g++/../../ -nostdinc++
-I/gnu/gcc/obj-pr40125/i686-pc-cygwin/libstdc++-v3/include/i686-pc-cygwin
-I/gnu/gcc/obj-pr40125/i686-pc-cygwin/libstdc++-v3/include
-I/gnu/gcc/gcc-patched/libstdc++-v3/libsupc++
-I/gnu/gcc/gcc-patched/libstdc++-v3/include/backward
-I/gnu/gcc/gcc-patched/libstdc++-v3/testsuite/util -fmessage-length=0 -gcoff3
-O2 -c -o debug9.o /gnu/gcc/gcc-patched/gcc/testsuite/g++.dg/debug/debug9.C 
/win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccaVQnkC.s: Assembler messages:
/win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccaVQnkC.s:61: Error: CFI instruction
used without previous .cfi_startproc
/win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccaVQnkC.s:62: Error: CFI instruction
used without previous .cfi_startproc
/win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccaVQnkC.s:63: Error: CFI instruction
used without previous .cfi_startproc
/win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccaVQnkC.s:65: Error: CFI instruction
used without previous .cfi_startproc
/win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccaVQnkC.s:67: Error: CFI instruction
used without previous .cfi_startproc
/win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccaVQnkC.s:69: Error: CFI instruction
used without previous .cfi_startproc
/win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccaVQnkC.s:71: Error: CFI instruction
used without previous .cfi_startproc
/win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccaVQnkC.s:75: Error: CFI instruction
used without previous .cfi_startproc
/win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccaVQnkC.s:135: Error: .cfi_endproc
without corresponding .cfi_startproc
/win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/ccaVQnkC.s:178: Error: open CFI at the
end of file; missing .cfi_endproc directive
compiler exited with status 1

... and these are caused because we're hopping around between .text and
.text.startup, and we do so:

.filedebug9.C
.text
.def_s;.scl10;.type010;.size1;.endef
.def.eos;.val1;.scl102;.tag_s;.size1;  
 .endef
.def_s;.scl13;.tag_s;.size1;.type010;  
 .endef
.def___main;.scl2;.type32;.endef
.section.text.startup,x
.p2align 4,,15
.text
.def_main;.val_main;.scl2;.type044;.endef
.globl_main
_main:
.def.bf;.val.;.scl101;.line23;.endef
.section.text.startup,x
LFB1:
.cfi_startproc
.cfi_personality 0,___gxx_personality_v0
.cfi_lsda 0,LLSDA1
leal4(%esp), %ecx
.cfi_def_cfa 1, 0
andl$-16, %esp
pushl-4(%ecx)
pushl%ebp
movl%esp, %ebp
.cfi_escape 0x10,0x5,0x2,0x75,0
pushl%esi
pushl%ebx
pushl%ecx
.cfi_escape 0xf,0x3,0x75,0x74,0x6
.cfi_escape 0x10,0x3,0x2,0x75,0x78
.cfi_escape 0x10,0x6,0x2,0x75,0x7c
subl$44, %esp
.ln1
call___main
.def.bb;.val.;.scl100;.line1;.endef
.def.bb;.val.;.scl100;.line1;.endef
.text

... here, right in the middle of an open CFI.  GAS can't handle this even if we
were to switch back to the original section anyway, but in this case it's even
worse:

.def_c;.val-26;.scl1;.tag_s;.size1;   
.type010;.endef
leal-26(%ebp), %ebx
leal-25(%ebp), %esi

... as we end up carrying on code generation in a different section.  Urk!

  This test is compiled with -gcoff in effect, and the problematic switch back
to the .text section is generated in sdbout.c#sdbout_one_type(), right here at
the start:

static void
sdbout_one_type (tree type)
{
  if (current_function_decl != NULL_TREE
   DECL_SECTION_NAME (current_function_decl) != NULL_TREE)
; /* Don't change section amid function.  */
  else
switch_to_section (text_section);

  For some reason this doesn't realise that we may be in a section other than
the .text section any more.  current_function_decl points to main() at the time
of the problem, but DECL_SECTION_NAME is indeed null.

  Honza, any ideas how to teach it about the new sections?


[Bug debug/46123] [4.5/4.6 Regression] ICE: in output_aranges, at dwarf2out.c:11531 with -feliminate-dwarf2-dups -g

2010-12-03 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46123

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||davek at gcc dot gnu.org

--- Comment #9 from Dave Korn davek at gcc dot gnu.org 2010-12-04 06:26:55 
UTC ---
The testcase is failing for me on i686-pc-cygwin:

spawn /gnu/gcc/obj-pr40125/gcc/testsuite/g++/../../g++
-B/gnu/gcc/obj-pr40125/gcc/testsuite/g++/../../
/gnu/gcc/gcc-patched/gcc/testsuite/g++.dg/debug/pr46123.C -nostdinc++
-I/gnu/gcc/obj-pr40125/i686-pc-cygwin/libstdc++-v3/include/i686-pc-cygwin
-I/gnu/gcc/obj-pr40125/i686-pc-cygwin/libstdc++-v3/include
-I/gnu/gcc/gcc-patched/libstdc++-v3/libsupc++
-I/gnu/gcc/gcc-patched/libstdc++-v3/include/backward
-I/gnu/gcc/gcc-patched/libstdc++-v3/testsuite/util -fmessage-length=0 -gdwarf-2
-g -feliminate-dwarf2-dups -S -o pr46123.s 
/gnu/gcc/gcc-patched/gcc/testsuite/g++.dg/debug/pr46123.C:47:1: internal
compiler error: in output_aranges, at dwarf2out.c:11678

 It happens here, 

(gdb) bt
#0  0x007c7c70 in fancy_abort (
file=0xe22afc /gnu/gcc/gcc-patched/gcc/dwarf2out.c, line=11678,
function=0xe284b4 output_aranges)
at /gnu/gcc/gcc-patched/gcc/diagnostic.c:101
#1  0x0066b9c1 in dwarf2out_finish (
filename=0x59bccaa
/gnu/gcc/gcc-patched/gcc/testsuite/g++.dg/debug/pr46123.
C) at /gnu/gcc/gcc-patched/gcc/dwarf2out.c:1109

... in dwarf2out.c, where output_aranges() has been inlined into
dwarf2out_finish:

  /* It is necessary not to output these entries if the sections were
 not used; if the sections were not used, the length will be 0 and
 the address may end up as 0 if the section is discarded by ld
 --gc-sections, leaving an invalid (0, 0) entry that can be
 confused with the terminator.  */
  if (text_section_used)
{
  dw2_asm_output_addr (DWARF2_ADDR_SIZE, text_section_label, Address);
  dw2_asm_output_delta (DWARF2_ADDR_SIZE, text_end_label,
text_section_label, Length);
}
  if (cold_text_section_used)
{
  dw2_asm_output_addr (DWARF2_ADDR_SIZE, cold_text_section_label,
   Address);
  dw2_asm_output_delta (DWARF2_ADDR_SIZE, cold_end_label,
cold_text_section_label, Length);
}

  for (i = 0; i  arange_table_in_use; i++)
{
  dw_die_ref die = arange_table[i];

  /* We shouldn't see aranges for DIEs outside of the main CU.  */
  gcc_assert (die-die_mark);

  This assertion triggers on the second address range in the table:

(gdb) p arange_table[0][0]
$2 = {die_id = {die_symbol = 0x0, die_type_node = 0x0},
  die_attr = 0x7ff01400, die_parent = 0x7feb1980, die_child = 0x7feb1b00,
  die_sib = 0x7feb19e0, die_definition = 0x0, die_offset = 98,
  die_abbrev = 4, die_mark = 0, die_perennial_p = 0, decl_id = 1705,
  die_tag = DW_TAG_subprogram}
(gdb) p arange_table[1][0]
$3 = {die_id = {die_symbol = 0x0, die_type_node = 0x0},
  die_attr = 0x7ff816c0, die_parent = 0x7feb0360, die_child = 0x7feb1e00,
  die_sib = 0x7feb2340, die_definition = 0x0, die_offset = 78,
  die_abbrev = 9, die_mark = 1, die_perennial_p = 0, decl_id = 1697,
  die_tag = DW_TAG_subprogram}
(gdb) p arange_table[2]
$4 = (dw_die_ref) 0x0
(gdb)

  Any ideas what this could mean?


[Bug debug/46123] [4.5/4.6 Regression] ICE: in output_aranges, at dwarf2out.c:11531 with -feliminate-dwarf2-dups -g

2010-12-03 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46123

--- Comment #10 from Dave Korn davek at gcc dot gnu.org 2010-12-04 06:28:04 
UTC ---
Created attachment 22625
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22625
generated assembler

This is the assembler output that has been generated up to the point when it
ICEs.


[Bug debug/46123] [4.5/4.6 Regression] ICE: in output_aranges, at dwarf2out.c:11531 with -feliminate-dwarf2-dups -g

2010-12-03 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46123

--- Comment #11 from Dave Korn davek at gcc dot gnu.org 2010-12-04 06:28:48 
UTC ---
Created attachment 22626
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22626
preprocessed source


[Bug lto/45375] [meta-bug] Issues with building Mozilla with LTO

2010-12-02 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45375

--- Comment #14 from Dave Korn davek at gcc dot gnu.org 2010-12-02 08:52:20 
UTC ---
(In reply to comment #13)
Yeh, precisely.  The ironly file is a placeholder into which we put the
  symbols found in the lto symtab so that they can take part in the link and
  their resolutions be determined.  We have no way of conveying any symbol 
  type
 
 The error comes out after the lto1 invocation, so why the ironly section is
 still around?
 I would expect it to be discarded at that time and replaced by whatever
 compiler
 returns to you.

  It's the symbol from the ironly section that remains, and it gets discarded
and replaced by the the symbol from the real object file by the linker
multiple_definition callback hook when _bfd_generic_link_add_one_symbol is
called to add the symbol from the real object file into the link hash table.

  Unfortunately, the elf linker has some additional checking that it does
before calling that routine which preemptively complains about the multiple
definition before the linker hook has a chance to replace the original ironly
symbol by the new one.


[Bug driver/46760] LTO doesn't work with FDO

2010-12-02 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46760

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Depends on||42690
 AssignedTo|davek at gcc dot gnu.org|unassigned at gcc dot
   ||gnu.org

--- Comment #7 from Dave Korn davek at gcc dot gnu.org 2010-12-02 09:08:42 
UTC ---
(In reply to comment #6)
 Hi,
 at one point I tried profiledbootstrap and problem is that we can not merge
 multiple LTO files
 that has been profiled different amount of times.  This happens during our
 build because lto1
 and cc1 share libbackend.  We probably need to add code rescaling 
 corresponding
 events...
 
 Honza

  Rather than open a second bug for this part of the problem, let's leave this
PR to handle it; the first part of the problem that HJ originally reported can
be considered a part of bug 42690, which I'm in the course of testing the
attached patch as part of.

  So, de-assigning myself from this PR.  Possibly we should consider this a
build system bug and the makefile should be responsible for swapping sets of
gcda files in and out?  Otherwise the component should be changed to lto.


[Bug other/46695] [4.6 regression] failure to build X from darwin to cris-elf with lto enabled

2010-12-01 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46695

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2010.12.01 12:17:35
 CC||davek at gcc dot gnu.org
 AssignedTo|unassigned at gcc dot   |davek at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1

--- Comment #3 from Dave Korn davek at gcc dot gnu.org 2010-12-01 12:17:35 
UTC ---
(In reply to comment #2)

 not I, 
 the addition of -no-undefined was from the Dave K. who needs it to get a .dll
 to build
 - without that change, everything is hunky-dory with libtool defaults.

  Based on our off-list discussion, I thought that it actually required an
explicit -undefined dynamic_lookup?

 (Dave also has a patch that makes the addition conditional on the *win*
 target).

  Yep, that will resolve this problem.  Just need to agree the fine details
with Ralf.


[Bug other/46695] [4.6 regression] failure to build X from darwin to cris-elf with lto enabled

2010-12-01 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46695

--- Comment #4 from Dave Korn davek at gcc dot gnu.org 2010-12-01 12:31:28 
UTC ---
(In reply to comment #3)
 (In reply to comment #2)
 
  not I, 
  the addition of -no-undefined was from the Dave K. who needs it to get a 
  .dll
  to build
  - without that change, everything is hunky-dory with libtool defaults.
 
   Based on our off-list discussion, I thought that it actually required an
 explicit -undefined dynamic_lookup?

  Ah, hang on, I re-read our earlier emails and think I misunderstood.  My
understanding now is that that is what you get by default, so simply /not/
passing -no-undefined on Darwin is all that is required.  That is how I will
respin the patch.


[Bug lto/45375] [meta-bug] Issues with building Mozilla with LTO

2010-12-01 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45375

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||davek at gcc dot gnu.org

--- Comment #12 from Dave Korn davek at gcc dot gnu.org 2010-12-02 01:03:43 
UTC ---
(In reply to comment #11)
 OK,
 working around the previous issues we fail with:
 
 /abuild/jh/trunk-install/lib/gcc/x86_64-unknown-linux-gnu/4.6.0/../../../../x86_64-unknown-linux-gnu/bin/ld:
 gTLSIsMainThread: TLS reference in /tmp/cczRYvg1.ltrans0.ltrans.o mismatches
 non-TLS definition in nsThreadManager.o.ironly section .text
 
 Dave, is this a GNU LD bug?  It seems to me that most likely that
 nsThreadManager.o.ironly section is the one got from lto plugin and we don't
 put TLS annotations there because we have no way to do so?

  Yeh, precisely.  The ironly file is a placeholder into which we put the
symbols found in the lto symtab so that they can take part in the link and
their resolutions be determined.  We have no way of conveying any symbol type
info.  We'll need to handle this in the multiple-def linker hook in LD's plugin
code, by getting it to copy type info from the newly-added symbols to the
ironly ones.

Oh, hang on, that won't work.  elflink.c calls _bfd_elf_merge_symbol /before/
_bfd_generic_link_add_one_symbol, which is where the multiple-def hook gets
called back from.  So it'll error on the mismatch before we get a chance to do
anything about it.  That's awkward.  Need to scratch my head over that for a
bit.


[Bug driver/46760] LTO doesn't work with FDO

2010-12-01 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46760

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2010.12.02 04:57:41
 AssignedTo|unassigned at gcc dot   |davek at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1

--- Comment #3 from Dave Korn davek at gcc dot gnu.org 2010-12-02 04:57:41 
UTC ---
Created attachment 22600
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=22600
extend pass-throughs

I'm testing this, which adds pass-thoughs for gcov and the endfiles (see also
Bug 42690).


[Bug driver/46760] LTO doesn't work with FDO

2010-12-01 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46760

--- Comment #4 from Dave Korn davek at gcc dot gnu.org 2010-12-02 07:14:34 
UTC ---

  With my patch we no longer get the undefined symbols building lto-wrapper,
but instead later on we hit this problem:

--
   [ . . . ]
/home/davek/gcc/obj-gold/./prev-gcc/xgcc -B/home/davek/gcc/obj-gold/./prev-gcc/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/bin/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/bin/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/lib/ -isystem
/n/10/davek/gcc/x86_64-unknown-linux-gnu/include -isystem
/n/10/davek/gcc/x86_64-unknown-linux-gnu/sys-include  -g -O2
-flto=jobserver -fuse-linker-plugin -frandom-seed=1 -fprofile-use -DIN_GCC   -W
-Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes
-Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros
-Wno-overlength-strings -Werror -Wold-style-definition -Wc++-compat -fno-common
 -DHAVE_CONFIG_H -DGENERATOR_FILE  -o build/genchecksum \
build/genchecksum.o .././libiberty/libiberty.a
lto1: sorry, unimplemented: combining units with different profiles is not
supported
lto1: internal compiler error: in lto_file_decl_data_get_fn_decl, at
lto-streamer.h:1075
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
lto-wrapper: /home/davek/gcc/obj-gold/./prev-gcc/xgcc returned 1 exit status
gold: fatal error: lto-wrapper failed
collect2: ld returned 1 exit status
make[3]: *** [build/genchecksum] Error 1
make[3]: *** Waiting for unfinished jobs
rm gfdl.pod cpp.pod gfortran.pod gcov.pod fsf-funding.pod gcc.pod
make[3]: Leaving directory `/home/davek/gcc/obj-gold/gcc'
make[2]: *** [all-stagefeedback-gcc] Error 2
make[2]: Leaving directory `/home/davek/gcc/obj-gold'
make[1]: *** [stagefeedback-bubble] Error 2
make[1]: Leaving directory `/home/davek/gcc/obj-gold'
make: *** [profiledbootstrap] Error 2
--

As far as I can see though, everything relevant was compiled with -fprofile-use
in effect:


--
Configuring stage feedback in ./libiberty
   [ . . . ]
/home/davek/gcc/obj-gold/./prev-gcc/xgcc -B/home/davek/gcc/obj-gold/./prev-gcc/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/bin/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/bin/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/lib/ -isystem
/n/10/davek/gcc/x86_64-unknown-linux-gnu/include -isystem
/n/10/davek/gcc/x86_64-unknown-linux-gnu/sys-include-c -DHAVE_CONFIG_H -g
-O2 -flto=jobserver -fuse-linker-plugin -frandom-seed=1 -fprofile-use  -I.
-I/n/10/davek/gcc/gcc/libiberty/../include  -W -Wall -Wwrite-strings
-Wc++-compat -Wstrict-prototypes -pedantic  /n/10/davek/gcc/gcc/libiberty/md5.c
-o md5.o
   [ . . . ]
/home/davek/gcc/obj-gold/./prev-gcc/xgcc -B/home/davek/gcc/obj-gold/./prev-gcc/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/bin/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/bin/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/lib/ -isystem
/n/10/davek/gcc/x86_64-unknown-linux-gnu/include -isystem
/n/10/davek/gcc/x86_64-unknown-linux-gnu/sys-include-c -DHAVE_CONFIG_H -g
-O2 -flto=jobserver -fuse-linker-plugin -frandom-seed=1 -fprofile-use  -I.
-I/n/10/davek/gcc/gcc/libiberty/../include  -W -Wall -Wwrite-strings
-Wc++-compat -Wstrict-prototypes -pedantic 
/n/10/davek/gcc/gcc/libiberty/fopen_unlocked.c -o fopen_unlocked.o
   [ . . . ]
/home/davek/gcc/obj-gold/./prev-gcc/xgcc -B/home/davek/gcc/obj-gold/./prev-gcc/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/bin/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/bin/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/lib/ -isystem
/n/10/davek/gcc/x86_64-unknown-linux-gnu/include -isystem
/n/10/davek/gcc/x86_64-unknown-linux-gnu/sys-include-c -DHAVE_CONFIG_H -g
-O2 -flto=jobserver -fuse-linker-plugin -frandom-seed=1 -fprofile-use  -I.
-I/n/10/davek/gcc/gcc/libiberty/../include  -W -Wall -Wwrite-strings
-Wc++-compat -Wstrict-prototypes -pedantic 
/n/10/davek/gcc/gcc/libiberty/xstrerror.c -o xstrerror.o
   [ . . . ]
/home/davek/gcc/obj-gold/./prev-gcc/xgcc -B/home/davek/gcc/obj-gold/./prev-gcc/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/bin/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/bin/
-B/n/10/davek/gcc/x86_64-unknown-linux-gnu/lib/ -isystem
/n/10/davek/gcc/x86_64-unknown-linux-gnu/include -isystem
/n/10/davek/gcc/x86_64-unknown-linux-gnu/sys-include-c   -g -O2
-flto=jobserver -fuse-linker-plugin -frandom-seed=1 -fprofile-use -DIN_GCC   -W
-Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes
-Wmissing-format-attribute -pedantic -Wno-long-long -Wno-variadic-macros
-Wno-overlength-strings -Werror -Wold-style-definition -Wc++-compat -fno-common
 -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I/n/10/davek/gcc/gcc/gcc
-I/n/10/davek/gcc/gcc/gcc/build

[Bug driver/46760] LTO doesn't work with FDO

2010-12-01 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46760

--- Comment #5 from Dave Korn davek at gcc dot gnu.org 2010-12-02 07:47:13 
UTC ---
(In reply to comment #4)

  -DHAVE_CONFIG_H -DGENERATOR_FILE  -o build/genchecksum \
 build/genchecksum.o .././libiberty/libiberty.a
 lto1: sorry, unimplemented: combining units with different profiles is not
 supported
 lto1: internal compiler error: in lto_file_decl_data_get_fn_decl, at
 lto-streamer.h:1075


  This sorry comes from input_profile_summary() in lto-cgraph.c, in fact:


static struct gcov_ctr_summary lto_gcov_summary;

/* Input profile_info from IB.  */
static void
input_profile_summary (struct lto_input_block *ib)
{
  unsigned int runs = lto_input_uleb128 (ib);
  if (runs)
{
  if (!profile_info)
{
  profile_info = lto_gcov_summary;
  lto_gcov_summary.runs = runs;
  lto_gcov_summary.sum_all = lto_input_sleb128 (ib);
  lto_gcov_summary.run_max = lto_input_sleb128 (ib);
  lto_gcov_summary.sum_max = lto_input_sleb128 (ib);
}
  /* We can support this by scaling all counts to nearest common multiple
 of all different runs, but it is perhaps not worth the effort.  */
  else if (profile_info-runs != runs
   || profile_info-sum_all != lto_input_sleb128 (ib)
   || profile_info-run_max != lto_input_sleb128 (ib)
   || profile_info-sum_max != lto_input_sleb128 (ib))
sorry (combining units with different profiles is not supported);
  /* We allow some units to have profile and other to not have one.  This
will
 just make unprofiled units to be size optimized that is sane.  */
}

}

This is the start of the cgraph data from build/genchecksum.o:

(gdb) c
Continuing.

Breakpoint 5, lto_create_simple_input_block (file_data=0x77267000,
section_type=LTO_section_cgraph, datar=0x7fffd858, len=0x7fffd860)
at /n/10/davek/gcc/gcc/gcc/lto-section-in.c:294
294 {
$17 = {current_decl_state = 0x77275000,
  global_decl_state = 0x77275000, cgraph_node_encoder = 0x0,
  varpool_node_encoder = 0x0, function_decl_states = 0x7735dcb0,
  file_name = 0x1bde940 build/genchecksum.o, section_hash_table = 0x1bfa560,
  renaming_hash_table = 0x1bfb4a0, next = 0x0, id = 3807079657,
  resolutions = 0x1bfab30}
(gdb) fin
Run till exit from #0  lto_create_simple_input_block (
file_data=0x77267000, section_type=LTO_section_cgraph,
datar=0x7fffd858, len=0x7fffd860)
at /n/10/davek/gcc/gcc/gcc/lto-section-in.c:294
input_cgraph () at /n/10/davek/gcc/gcc/gcc/lto-cgraph.c:1475
1475  if (!ib)
Value returned is $18 = (struct lto_input_block *) 0x1bfa250
(gdb) p $18[0]
$19 = {data = 0x1bfa020 \004\201?\225\r??\237\003?\233\f\002\177, p = 0,
  len = 551}
(gdb) x/551xb $18-data
0x1bfa020:  0x040x810xf10x950x0d0xc00xdc0x9f
0x1bfa028:  0x030xda0xb90x9b0x0c0x020x7f0x00
0x1bfa030:  0x000x000x060x070x050x0f0x7f0x7f
0x1bfa038:  0xbc0xa00x0a0x000x000x020x7f0x01
0x1bfa040:  0xbd0x010xc80x200xe40x000x060xe2

and here is how it gets read into lto_gcov_summary first time
input_profile_summary is called:

(gdb) p 'lto_gcov_summary.170684.49820'
$27 = (data variable, no debug info *) 0x1777280
(gdb) p (struct gcov_ctr_summary *)'lto_gcov_summary.170684.49820'
$28 = (struct gcov_ctr_summary *) 0x1777280
(gdb) p $28[0]
$29 = {num = 0, runs = 4, sum_all = 27621505, run_max = 6811200,
  sum_max = 25615578}
(gdb) p/x $28[0]
$30 = {num = 0x0, runs = 0x4, sum_all = 0x1a57881, run_max = 0x67ee40,
  sum_max = 0x186dcda}
(gdb)

But here's the start of the ../libiberty/md5.o cgraph section data:

(gdb) c
Continuing.

Breakpoint 5, lto_create_simple_input_block (file_data=0x772670b0,
section_type=LTO_section_cgraph, datar=0x7fffd858, len=0x7fffd860)
at /n/10/davek/gcc/gcc/gcc/lto-section-in.c:294
294 {
$22 = {current_decl_state = 0x77275870,
  global_decl_state = 0x77275870, cgraph_node_encoder = 0x0,
  varpool_node_encoder = 0x0, function_decl_states = 0x7735dd20,
  file_name = 0x1bfb480 ../libiberty/md5.o, section_hash_table = 0x1bfcdd0,
  renaming_hash_table = 0x1bfae30, next = 0x0, id = 3807079657,
  resolutions = 0x1bfb770}
(gdb) fin
Run till exit from #0  lto_create_simple_input_block (
file_data=0x772670b0, section_type=LTO_section_cgraph,
datar=0x7fffd858, len=0x7fffd860)
at /n/10/davek/gcc/gcc/gcc/lto-section-in.c:294
input_cgraph () at /n/10/davek/gcc/gcc/gcc/lto-cgraph.c:1475
1475  if (!ib)
Value returned is $23 = (struct lto_input_block *) 0x1bfbb50
(gdb) p $23[0]
$24 = {
  data = 0x1bfc0e0 ?\016??\212?\212\002\220?\204\017??\204?\002\002\177,
  p = 0, len = 352}
(gdb) x/352xb $23-data
0x1bfc0e0:  0xc00x0e0xaf0xbc0x8a0xed0x8a0x02
0x1bfc0e8:  0x900xcf0x840x0f0xa30xa10x84

[Bug middle-end/46709] [4.6 regression] internal compiler error: process_function_and_variable_attributes gcc/cgraphunit.c:847

2010-11-30 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46709

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #3 from Dave Korn davek at gcc dot gnu.org 2010-11-30 16:56:37 
UTC ---
Committed revision 167302.

http://gcc.gnu.org/viewcvs?root=gccview=revrev=167302

(Changelog fixed in r.167303)


[Bug target/42904] Attribute dllexport should imply externally_visible

2010-11-30 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42904

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
URL||http://gcc.gnu.org/ml/gcc-p
   ||atches/2010-11/msg02190.htm
   ||l
 Depends on||46709
 Resolution||FIXED
 AssignedTo|davek at gcc dot gnu.org|ktietz at gcc dot gnu.org

--- Comment #5 from Dave Korn davek at gcc dot gnu.org 2010-11-30 17:31:32 
UTC ---
Yes, Kai's patch (see URL) works for -fwhole-program as well as LTO :)


[Bug target/42904] Attribute dllexport should imply externally_visible

2010-11-30 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42904

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.6.0


[Bug middle-end/46709] [4.6 regression] internal compiler error: process_function_and_variable_attributes gcc/cgraphunit.c:847

2010-11-29 Thread davek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46709

Dave Korn davek at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||patch
 Status|UNCONFIRMED |ASSIGNED
URL||http://gcc.gnu.org/ml/gcc-p
   ||atches/2010-11/msg02837.htm
   ||l
   Last reconfirmed||2010.11.29 21:02:17
 CC||davek at gcc dot gnu.org
 AssignedTo|unassigned at gcc dot   |davek at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1

--- Comment #2 from Dave Korn davek at gcc dot gnu.org 2010-11-29 21:02:17 
UTC ---
Patch posted.


  1   2   >