New Failure in GCC testsuite from PR35318

2009-02-04 Thread Nick Clifton
Hi Jakub,

  You recently added gcc.c-torture/compile/pr35318.c to the gcc
  testsuite.  This has introduced a new group of failures for the m32c
  port because of this error message:

pr35318.c: In function 'foo':
pr35318.c:7: error: can't find a register in class 'GENERAL_REGS' while 
reloading 'asm'
pr35318.c:7: error: 'asm' operand has impossible constraints

  Looking at the test it appears to assume that a double can be put
  into register class r, but this is not true for the m32c (and
  probably other 16-bit ports as well), since doubles occupy two
  registers.

  I can add an xfail for the m32c, but I was wondering if it would
  break the importance of the test if the double type was changed to
  float ?  This would allow the test to pass for the m32c as well.

Cheers
  Nick


The Linux binutils 2.19.51.0.2 is released

2009-02-04 Thread H.J. Lu
This is the beta release of binutils 2.19.51.0.2 for Linux, which is
based on binutils 2009 0204 in CVS on sourceware.org plus various
changes. It is purely for Linux.

All relevant patches in patches have been applied to the source tree.
You can take a look at patches/README to see what have been applied and
in what order they have been applied.

Starting from the 2.18.50.0.4 release, the x86 assembler no longer
accepts

fnstsw %eax

fnstsw stores 16bit into %ax and the upper 16bit of %eax is unchanged.
Please use

fnstsw %ax

Starting from the 2.17.50.0.4 release, the default output section LMA
(load memory address) has changed for allocatable sections from being
equal to VMA (virtual memory address), to keeping the difference between
LMA and VMA the same as the previous output section in the same region.

For

.data.init_task : { *(.data.init_task) }

LMA of .data.init_task section is equal to its VMA with the old linker.
With the new linker, it depends on the previous output section. You
can use

.data.init_task : AT (ADDR(.data.init_task)) { *(.data.init_task) }

to ensure that LMA of .data.init_task section is always equal to its
VMA. The linker script in the older 2.6 x86-64 kernel depends on the
old behavior.  You can add AT (ADDR(section)) to force LMA of
.data.init_task section equal to its VMA. It will work with both old
and new linkers. The x86-64 kernel linker script in kernel 2.6.13 and
above is OK.

The new x86_64 assembler no longer accepts

monitor %eax,%ecx,%edx

You should use

monitor %rax,%ecx,%edx

or
monitor

which works with both old and new x86_64 assemblers. They should
generate the same opcode.

The new i386/x86_64 assemblers no longer accept instructions for moving
between a segment register and a 32bit memory location, i.e.,

movl (%eax),%ds
movl %ds,(%eax)

To generate instructions for moving between a segment register and a
16bit memory location without the 16bit operand size prefix, 0x66,

mov (%eax),%ds
mov %ds,(%eax)

should be used. It will work with both new and old assemblers. The
assembler starting from 2.16.90.0.1 will also support

movw (%eax),%ds
movw %ds,(%eax)

without the 0x66 prefix. Patches for 2.4 and 2.6 Linux kernels are
available at

http://www.kernel.org/pub/linux/devel/binutils/linux-2.4-seg-4.patch
http://www.kernel.org/pub/linux/devel/binutils/linux-2.6-seg-5.patch

The ia64 assembler is now defaulted to tune for Itanium 2 processors.
To build a kernel for Itanium 1 processors, you will need to add

ifeq ($(CONFIG_ITANIUM),y)
CFLAGS += -Wa,-mtune=itanium1
AFLAGS += -Wa,-mtune=itanium1
endif

to arch/ia64/Makefile in your kernel source tree.

Please report any bugs related to binutils 2.19.51.0.2 to
hjl.to...@gmail.com

and

http://www.sourceware.org/bugzilla/

Changes from binutils 2.19.51.0.1:

1. Update from binutils 2009 0204.
2. Support AVX Programming Reference (January, 2009)
3. Improve .s suffix support in x86 disassembler.
4. Add --prefix/--prefix-strip for objdump -S.  PR 9784.
5. Change ld --as-needed to resolve undefined references in DSO.
6. Add -Ttext-segment to ld to set address of text segment.
7. Fix ld -r --gc-sections --entry crash with COMDAT group.  PR 9727.
8. Improve linker compatibility for g++ 3.4 `.gnu.linkonce.r.*.
9. Add VMS/ia64 support.
10. Improve arm support.
11. Improve cris support.
12. Improve m68k support.
13. Improve mips support.
14. Improve spu support.

Changes from binutils 2.19.50.0.1:

1. Update from binutils 2009 0106.
2. Support AVX Programming Reference (December, 2008)
2. Encode AVX insns with 2byte VEX prefix if possible.
4. Add .s suffix support to swap register operands to x86 assembler.
5. Properly select NOP insns for code alignment in x86 assembler.
6. Fix 2 symbol visibility linker bugs.  PRs 9676/9679.
7. Fix an ia64 linker relaxation bug.  PR 7036.
8. Fix a symbol versioning bug. PR 7047.
9. Fix unitialized data in linker.  PR 7028.
10. Avoid a linker crash on bad input.  PR 7023.
11. Fix a linker memory leak.  PR 7012.
12. Fix strip/objcopy crash on PT_GNU_RELRO.  PR 7011.
13. Improve MacOS support.
14. Fix a COFF linker bug.  PR 6945.
15. Add LM32 support.
16. Fix various arm bugs.
17. Fix various avr bugs.
18. Fix various CR16  bugs.
19. Fix various cris bugs.
20. Fix various m32c bugs.
21. Fix various m68k bugs.
22. Fix various mips bugs.
23. Fix various ppc bugs.
24. Fix various s390 bugs.
25. Fix various sparc bugs.
26. Fix various spu bugs.
27. Fix various xtensa bugs.

The file list:

1. binutils-2.19.51.0.2.tar.bz2. Source code.
2. binutils-2.19.50.1.1-2.19.51.0.2.diff.bz2. Patch against the
   previous beta source code.
3. binutils-2.19.51.0.2.i686.tar.bz2. IA-32 binary tar ball for RedHat
   EL 4.
4. binutils-2.19.51.0.2.ia64.tar.bz2. IA-64 binary tar ball for RedHat
   EL 4.
5. binutils-2.19.51.0.2.x86_64.tar.bz2. X64_64 binary tar ball for RedHat
   EL 4.

The primary sites for the 

invalid may be used uninitialized warning with g++ current

2009-02-04 Thread Дмитрий Дьяченко
The following code

int bar(int *global)
{
int local;
if(local != global)
return 0;
return local;
}

compiled with gcc/x86/Linux version 4.4.0 20090204 (experimental)
[trunk revision 143938]
trigger warning:

# g++ -Wall -O2 -c test4.cpp
test4.cpp: In function 'int bar(int*)':
test4.cpp:6: warning: 'local' may be used uninitialized in this function

gcc-3.4.6/FreeBSD/x86 and gcc-4.1.2/FedoraCore8/x86 does not warning.

I was tried to find anything similar in bugzilla (including #24639), but fail.

I miss something or I need to file bug report?

Dmitry


Re: Creating imaginary inf/nan in GCC

2009-02-04 Thread Kaveh R. Ghazi

From: Richard Guenther richard.guent...@gmail.com


Thanks, I do want to test the middle-end.  However I need to do more than
just create the complex expression.  I also have to pass it to a builtin
that evaluates using MPC like __builtin_csin().  The fortran frontend
evaluates complex transcendentals in fortran/simplify.c, not in the
middle-end.  So it wouldn't test what I want AFAICT.  It's not a big 
deal,

the nan cases are error paths that should *avoid* folding via MPC.


If you go through memory the compiler should promote that to a register
and constant propagate the result, isn't that enough?


All the previous tests of this nature were in 
gcc.dg/torture/builtin-math-*.c and are done at all opt levels 
including -O0.  I think your suggestion works, but only when optimizing. 
Also, I think it doesn't work with -fdump-tree-original, I'd have to inspect 
a different dump file.  (Any thoughts on which one?)


The obsessive part of my brain wants to keep everything the same as the 
other tests. :-)   But I suppose it would work, I just have to tweek it with 
these things in mind.


   --Kaveh




Re: invalid may be used uninitialized warning with g++ current

2009-02-04 Thread Andrew Pinski
On Wed, Feb 4, 2009 at 1:18 PM, Дмитрий Дьяченко dim...@gmail.com wrote:
 The following code

 int bar(int *global)
 {
int local;
if(local != global)
return 0;
return local;
 }

The issue is that GCC does not figure that global cannot point to
local so it does not optimize away the if statement.

Thanks,
Andrew Pinski


Re: invalid may be used uninitialized warning with g++ current

2009-02-04 Thread Дмитрий Дьяченко
Thanks,

Sorry, but I don't understood  - is it impossible to fix, so there are
no needs in bug report?
Or PR about this issue already exists?
Or it's not a bug?

Dmitry


2009/2/5 Andrew Pinski pins...@gmail.com:
 On Wed, Feb 4, 2009 at 1:18 PM, Дмитрий Дьяченко dim...@gmail.com wrote:
 The following code

 int bar(int *global)
 {
int local;
if(local != global)
return 0;
return local;
 }

 The issue is that GCC does not figure that global cannot point to
 local so it does not optimize away the if statement.

 Thanks,
 Andrew Pinski



gcc-4.2-20090204 is now available

2009-02-04 Thread gccadmin
Snapshot gcc-4.2-20090204 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.2-20090204/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.2 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/branches/gcc-4_2-branch 
revision 143942

You'll find:

gcc-4.2-20090204.tar.bz2  Complete GCC (includes all of below)

gcc-core-4.2-20090204.tar.bz2 C front end and core compiler

gcc-ada-4.2-20090204.tar.bz2  Ada front end and runtime

gcc-fortran-4.2-20090204.tar.bz2  Fortran front end and runtime

gcc-g++-4.2-20090204.tar.bz2  C++ front end and runtime

gcc-java-4.2-20090204.tar.bz2 Java front end and runtime

gcc-objc-4.2-20090204.tar.bz2 Objective-C front end and runtime

gcc-testsuite-4.2-20090204.tar.bz2The GCC testsuite

Diffs from 4.2-20090128 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.2
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.


PATCH: Update classification of aggregates with __m256 ([AVX]: Update x86-64 psABI for aggregates with __m256)

2009-02-04 Thread H.J. Lu
On Tue, Feb 3, 2009 at 8:41 AM, H.J. Lu hjl.to...@gmail.com wrote:
 On Sun, Feb 1, 2009 at 11:44 AM, H.J. Lu hjl.to...@gmail.com wrote:
 Hi,

 We like to update x86-64 psABI to pass aggregates of 32 bytes with
 single __m256 field
 in AVX registers, instead of memory. However, finding the proper
 wording seems tricky.
 Here is what I got.  Any comments?


 Here is the revised proposal. Any comments. I will post a gcc
 patch soon.


Here is the gcc patch with testcases. OK for trunk?

Thanks.

-- 
H.J.
gcc/

2009-02-03  H.J. Lu  hongjiu...@intel.com

* config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
(x86_64_reg_class_name): Removed.
(classify_argument): Return 0 if bytes  32.  Return 0 if the
first one isn't X86_64_SSE_CLASS or any other ones aren't
X86_64_SSEUP_CLASS when size  16bytes.  Don't turn
X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
is X86_64_SSEUP_CLASS.  Set AVX modes to 1 X86_64_SSE_CLASS
and 3 X86_64_SSEUP_CLASS.
(construct_container): Remove X86_64_AVX_CLASS.  Handle 4
registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.

gcc/testsuite/

2009-02-04  H.J. Lu  hongjiu...@intel.com

* gcc.target/x86_64/abi/avx/abi-avx.exp: New.
* gcc.target/x86_64/abi/avx/args.h: Likewise.
* gcc.target/x86_64/abi/avx/asm-support.S: Likewise.
* gcc.target/x86_64/abi/avx/avx-check.h: Likewise.
* gcc.target/x86_64/abi/avx/test_m256_returning.c: Likewise.
* gcc.target/x86_64/abi/avx/test_passing_m256.c: Likewise.
* gcc.target/x86_64/abi/avx/test_passing_structs.c: Likewise.
* gcc.target/x86_64/abi/avx/test_passing_unions.c: Likewise.

Index: gcc/config/i386/i386.c
===
--- gcc/config/i386/i386.c  (revision 5119)
+++ gcc/config/i386/i386.c  (revision 5120)
@@ -1773,7 +1773,6 @@ enum x86_64_reg_class
 X86_64_NO_CLASS,
 X86_64_INTEGER_CLASS,
 X86_64_INTEGERSI_CLASS,
-X86_64_AVX_CLASS,
 X86_64_SSE_CLASS,
 X86_64_SSESF_CLASS,
 X86_64_SSEDF_CLASS,
@@ -1783,11 +1782,6 @@ enum x86_64_reg_class
 X86_64_COMPLEX_X87_CLASS,
 X86_64_MEMORY_CLASS
   };
-static const char * const x86_64_reg_class_name[] =
-{
-  no, integer, integerSI, sse, sseSF, sseDF,
-  sseup, x87, x87up, cplx87, no
-};
 
 #define MAX_CLASSES 4
 
@@ -4863,8 +4857,8 @@ classify_argument (enum machine_mode mod
   tree field;
   enum x86_64_reg_class subclasses[MAX_CLASSES];
 
-  /* On x86-64 we pass structures larger than 16 bytes on the stack.  */
-  if (bytes  16)
+  /* On x86-64 we pass structures larger than 32 bytes on the stack.  */
+  if (bytes  32)
return 0;
 
   for (i = 0; i  words; i++)
@@ -4974,6 +4968,20 @@ classify_argument (enum machine_mode mod
  gcc_unreachable ();
}
 
+  if (words  2)
+   {
+ /* When size  16 bytes, if the first one isn't
+X86_64_SSE_CLASS or any other ones aren't
+X86_64_SSEUP_CLASS, everything should be passed in
+memory.  */
+ if (classes[0] != X86_64_SSE_CLASS)
+ return 0;
+
+ for (i = 1; i  words; i++)
+   if (classes[i] != X86_64_SSEUP_CLASS)
+ return 0;
+   }
+
   /* Final merger cleanup.  */
   for (i = 0; i  words; i++)
{
@@ -4983,10 +4991,15 @@ classify_argument (enum machine_mode mod
return 0;
 
  /* The X86_64_SSEUP_CLASS should be always preceded by
-X86_64_SSE_CLASS.  */
+X86_64_SSE_CLASS or X86_64_SSEUP_CLASS.  */
  if (classes[i] == X86_64_SSEUP_CLASS
-  (i == 0 || classes[i - 1] != X86_64_SSE_CLASS))
-   classes[i] = X86_64_SSE_CLASS;
+  classes[i - 1] != X86_64_SSE_CLASS
+  classes[i - 1] != X86_64_SSEUP_CLASS)
+   {
+ /* The first one should never be X86_64_SSEUP_CLASS.  */
+ gcc_assert (i != 0);
+ classes[i] = X86_64_SSE_CLASS;
+   }
 
  /*  X86_64_X87UP_CLASS should be preceded by X86_64_X87_CLASS.  */
  if (classes[i] == X86_64_X87UP_CLASS
@@ -5107,8 +5120,11 @@ classify_argument (enum machine_mode mod
 case V16HImode:
 case V4DFmode:
 case V4DImode:
-  classes[0] = X86_64_AVX_CLASS;
-  return 1;
+  classes[0] = X86_64_SSE_CLASS;
+  classes[1] = X86_64_SSEUP_CLASS;
+  classes[2] = X86_64_SSEUP_CLASS;
+  classes[3] = X86_64_SSEUP_CLASS;
+  return 4;
 case V4SFmode:
 case V4SImode:
 case V16QImode:
@@ -5165,7 +5181,6 @@ examine_argument (enum machine_mode mode
   case X86_64_INTEGERSI_CLASS:
(*int_nregs)++;
break;
-  case X86_64_AVX_CLASS:
   case X86_64_SSE_CLASS:
   case X86_64_SSESF_CLASS:
   case X86_64_SSEDF_CLASS:
@@ -5264,7 +5279,6 @@ construct_container (enum machine_mode m
   case 

ARM compiler generating never-used constant data structures

2009-02-04 Thread Zoltán Kócsi
I have various constants. If I define them in a header file like this:

static const int my_thing_a = 3;
static const int my_thing_b = 12345;

then everything is nice, if I use them the compiler knows their value
and uses them as literals and it doesn't actually put them into the
.rodata section (which is important because I have a lot of them and
code space is at premium).

Now these things are very closely related, so it would make the program
much clearer is they could be collected in a structure. That is:

struct things { int a; int b; }; 

and then I could define a global structure

const struct things my_things = { 3, 12345 };

so that I can refer them as my_things.a or my_things.b;

The problem is that I do not want to instantiate the actual things
structure, for the same reason I did not want to instantiate the
individual const int definitions. So, I tried the GCC extension of
compound literals like this:

#define my_things ((struct things) { 3, 12345 })

int func( int x )
{
   if ( x )
  return my_things.a;
   else
  return my_things.b;
}

If I compile the above with -O2 or -Os, then if the target is AVR or
x86_64 then the result is what I expected, func() just loads 3 or 12345
then returns and that's all. There is no .rodata generated.

However, compiling for the ARM generates the same function code, but it
also generates the image of things in the .rodata segment. Twice. Even
when it stores 12345 separatelly. The code never actually references
any of them and they are not global thus it is just wasted memory:

.section.rodata
.align  2
.type   C.1.1095, %object
.size   C.1.1095, 8
C.1.1095:
.word   3
.word   12345
.align  2
.type   C.0.1094, %object
.size   C.0.1094, 8
C.0.1094:
.word   3
.word   12345
.text
.align  2
.global func2
.type   func2, %function
func2:
ldr r3, .L6
cmp r0, #0
moveq   r0, r3
movne   r0, #3
bx  lr
.L7:
.align  2
.L6:
.word   12345
 
Is there a reason why GCC generates the unused .rodata for the ARM
while for the other two it does not?

I guess I'm doing something fundamentally wrong, as usual...

Thanks,

Zoltan


Re: Plugin API Comments (was Re: GCC Plug-in Framework ready to port)

2009-02-04 Thread Le-Chun Wu
Hi Sean,

It's great that you updated the wiki page with the latest and more
detailed API design.

We (at Google) also started to look at the GCC plugin support a couple
of weeks ago. We had a quick prototype implemented based on the
original APIs that Taras put together in the old wiki. (I can send out
the patch later for people's reference.) The updated APIs in general
look good to me. I do have some comments based on our experience with
the initial prototyping:


 void register_callbacks(int nregistrations, struct plugin_registration 
 *registrations);


Instead of passing in an array of plugin_registration objects with a
single register_callbacks call, it's probably better to have the
plugin call a sequence of register_callback with the necessary
information, as shown in the following example:

void plugin_register_callback (const char *plugin_name, enum
plugin_event event, plugin_callback_func  callback, void *user_data);

/* In plugin code */
void
plugin_init()
{
  ...
  register_callback (plugin_name, PLUGIN_FINISH_STRUCT, handle_struct, NULL);
  register_callback (plugin_name, PLUGIN_FINISH_UNIT,
handle_end_of_compilation_unit, NULL);
  ...
}

In the function body of register_callback, GCC can then create the
plugin_registration objects and chain them together based on the event
type. Because GCC will need to maintain a list of plugin_registration
objects for each event anyway, we might as well let it create (and
destroy if necessary) the objects instead of leaving the task to the
plugins.

Note that in my example an additional parameter, plugin_name, is added
in register_callback. We found it useful to have the name around when
emitting error messages if something goes wrong during the callback
registration process.


 -fplugin=/path/to/plugin.so;arg1=value;arg2=value;...


I am not sure if it is GCC's responsibility to understand key-value
(or any other types of) arguments to plugins. I think GCC should
simply take a string (which, of course, can be something like
arg1=value arg2=value) and pass it (unparsed) to the plugin. It is
plugin's job to parse/process the given arguments (whatever way it
likes). So the prototype of the plugin_init would look like this:

void plugin_init (const char *plugin_name, const char *plugin_arg);

In our current prototype, we implemented the originally proposed flag
-fplugin-arg=, which is associated with the plugin specified in the
most recently parsed -fplugin flag. If a -fplugin-arg flag is used
in the command-line without any preceding -fplugin, an error message
is emitted. Having the plugin name and its arguments concatenated as
currently proposed is also fine, but I would prefer a simple string
(like below) to a series of key-value pairs.

-fplugin=/path/to/plugin.so;arguments

(Note that the double quotes may not needed if the arguments doesn't
contain characters such as spaces.)


 Pass Manager


We think it would be quite daunting (and probably open up a can of
worms) to allow plugins to re-order passes. So to get things moving
quickly, in our initial prototype we only support insertion of a new
pass and replacing an existing pass. When registering a new pass with
GCC, the plugin uses the normal register_callback call with the
PLUGIN_PASS_MANAGER_SETUP event. However, instead of registering a
callback function, it passes in a plugin_pass object (see below) that
specifies the opt_pass object of the new pass, the name of the
reference pass, the static instance number of the reference pass, and
whether to insert before/after or replacing the reference pass.

enum pass_positioning_ops
{
  PASS_POS_INSERT_AFTER,
  PASS_POS_INSERT_BEFORE,
  PASS_POS_REPLACE
};

struct plugin_pass
{
  struct opt_pass *pass;
  const char *reference_pass_name;
  /* Insert the pass at the specified instance of the reference pass.
 If it's 0, do that for every instance.  */
  int ref_pass_instance_number;
  enum pass_positioning_ops pos_op;
};

/* In plugin code */
void
plugin_init()
{
  ...
  register_callback (plugin_name, PLUGIN_PASS_MANAGER_SETUP, NULL, pass_info);
  ...
}

When registering and positioning a new pass, GCC will search the
passes chained up in all_lowering_passes, all_ipa_passes, and
all_passes (similar to Mozilla dehydra's implementation) to find the
reference pass(es) with the matching name and instance number, and
then either insert the new pass or replace the reference pass.

One caveat with our current implementation is that because the
registration of new plugin passes happens after the command-line
options are parsed, we cannot specify single pass dumping for plugin
passes (e.g. -fdump-tree-newpass).  IR dumping of plugin passes is
enabled only when the dump-all flags (e.g. -fdump-tree-all) are
specified.

What do people think about this pass registration/positioning
interface that I described? (Again, I will send out our patch later so
that people can get a better idea if my description is not clear
enough.)

Le-chun Wu


On Mon, Feb 2, 2009 at 2:42 

Re: Plugin API Comments (was Re: GCC Plug-in Framework ready to port)

2009-02-04 Thread Daniel Jacobowitz
On Wed, Feb 04, 2009 at 05:04:10PM -0800, Le-Chun Wu wrote:
  -fplugin=/path/to/plugin.so;arg1=value;arg2=value;...
 
 
 I am not sure if it is GCC's responsibility to understand key-value
 (or any other types of) arguments to plugins. I think GCC should
 simply take a string (which, of course, can be something like
 arg1=value arg2=value) and pass it (unparsed) to the plugin. It is
 plugin's job to parse/process the given arguments (whatever way it
 likes).

Please let GCC do this, so that argument parsing can be (A)
centralized, and (B) standardized.  Otherwise the right way to pass
arguments will end up different for every plugin.

-- 
Daniel Jacobowitz
CodeSourcery


[Bug tree-optimization/38977] [4.4 Regression] bash no longer builds with profile-feedback

2009-02-04 Thread jakub at gcc dot gnu dot org


--- Comment #13 from jakub at gcc dot gnu dot org  2009-02-04 08:18 ---
Even if it fixes just PR38292, I'd say it would be worth applying.
I'll bootstrap/regtest and submit it then.


-- 


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



[Bug target/39076] internal compiler error when cross-compiling flac

2009-02-04 Thread ramana dot r at gmail dot com


--- Comment #6 from ramana dot r at gmail dot com  2009-02-04 08:34 ---
(In reply to comment #5)
 (In reply to comment #4)
 
  Looking at the dumps this rtx is generated by the rename registers pass in
  4.3.x . In trunk however rename register does not generate this rtx and 
  hence
  there is no problem. It could still be latent but one has to dig deeper. 
 
 A quick comparison of trunk and gcc 4.3 branch shows the following patch being
 applied in trunk vs. the 4.3 branch. 
 
 http://gcc.gnu.org/ml/gcc-patches/2008-04/msg01577.html
 
 A quick check with the patch at 
 
 ram...@numenor:~/cos/mycos/gcc/gcc$ svn diff -r137128:137235 regrename.c 
 Index: regrename.c
 ===
 --- regrename.c (revision 137128)
 +++ regrename.c (revision 137235)
 @@ -812,7 +812,7 @@
 OP_IN, 0);
 
   for (i = 0; i  recog_data.n_dups; i++)
 -   *recog_data.dup_loc[i] = copy_rtx (old_dups[i]);
 +   *recog_data.dup_loc[i] = old_dups[i];
   for (i = 0; i  n_ops; i++)
 *recog_data.operand_loc[i] = old_operands[i];
   if (recog_data.n_dups)
 

Related discussions and patch proposed here. 

http://gcc.gnu.org/ml/gcc/2009-02/msg00074.html

This is essentially a backport of a patch in trunk - A full bootstrap and
regression test is underway. I've confirmed that this patch fixes the ICE
mentioned with the ARM port.




-- 


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



[Bug target/27855] [4.3/4.4 regression] reassociation causes the RA to be confused

2009-02-04 Thread ubizjak at gmail dot com


--- Comment #30 from ubizjak at gmail dot com  2009-02-04 08:57 ---
(In reply to comment #29)
 A similar problem was fixed with PR38533, is this still an issue?

TYPE=double:
gcc -DREPS=1000 -msse3 -O2 -mfpmath=sse -ffast-math -fno-tree-reassoc:
atlasmm   60   1000   0.208 2076.79
gcc -DREPS=1000 -msse3 -O2 -mfpmath=sse -ffast-math
atlasmm   60   1000   0.272 1588.14

TYPE=float:
gcc -DREPS=1000 -msse3 -O2 -mfpmath=sse -ffast-math -fno-tree-reassoc
atlasmm   60   1000   0.176 2454.39
gcc -DREPS=1000 -msse3 -O2 -mfpmath=sse -ffast-math
atlasmm   60   1000   0.168 2571.28



FLOAT case is OK now, but we regressed somehow.
DOUBLE case still shows problem and runtime regression too.


-- 


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



[Bug c/39093] inline code optimized wrong with -O3

2009-02-04 Thread schwab at suse dot de


--- Comment #1 from schwab at suse dot de  2009-02-04 09:33 ---
 char* pw = (char*) bcAtomCompareExchange((void**) px, py, pz);

This is violating the C aliasing rules.  Declare px as void* to fix that.


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


-- 

schwab at suse dot de changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE
Summary|inline code optimized wrong |inline code optimized wrong
   |with -O3|with -O3


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



[Bug c/21920] aliasing violations

2009-02-04 Thread schwab at suse dot de


--- Comment #137 from schwab at suse dot de  2009-02-04 09:33 ---
*** Bug 39093 has been marked as a duplicate of this bug. ***


-- 

schwab at suse dot de changed:

   What|Removed |Added

 CC||ricardo at teli dot org


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



[Bug tree-optimization/39074] PTA constraint processing for *x = y is wrong

2009-02-04 Thread rguenther at suse dot de


--- Comment #8 from rguenther at suse dot de  2009-02-04 09:35 ---
Subject: Re:  PTA constraint processing for *x
 = y is wrong

On Wed, 4 Feb 2009, dberlin at dberlin dot org wrote:

 --- Comment #7 from dberlin at gcc dot gnu dot org  2009-02-04 00:29 
 ---
 Subject: Re:  PTA constraint processing for *x = 
 y is wrong
 
 On Tue, Feb 3, 2009 at 9:24 AM, rguenther at suse dot de
 gcc-bugzi...@gcc.gnu.org wrote:
 
 
  --- Comment #6 from rguenther at suse dot de  2009-02-03 14:24 ---
  Subject: Re:  PTA constraint processing for *x
   = y is wrong
 
  On Tue, 3 Feb 2009, dberlin at dberlin dot org wrote:
 
  Subject: Re:  PTA constraint processing for *x =
  y is wrong
 
  There used to be a *ANYTHING = ANYTHING constraint + ANYTHING
  containing all the variables pointing to ANYTHING that would have
  taken care of this.
  You certainly don't want to dynamically add all variables at solving
  time yourself, since that can't be optimized.
 
  This is the reason it works for ESCAPED, there we have an
  *ESCAPED = ESCAPED constraint.  It doesn't work for CALLUSED though,
  I have a simple fix (CALLUSED is not big usually, so just not using
  it as a placeholder fixes the issue here).
 
  For the ANYTHING problem I have just dealt with it in do_ds_constraint
  (I'll post an updated patch soon after testing finished).
 
 My onl concern is practicality.
 The last time I did this solely at solving time it was ridiculously
 slow on large cases, since the solver is much better at difference
 propagation.

Do you remember what testcase(s) this was?  I can certainly time
removing the shortcutting against handling *ANYTHING (and I'll try
to come up with a testcase that is not fixed with just removing
the shortcutting).

Richard.


-- 


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



[Bug target/27855] [4.3/4.4 regression] reassociation causes the RA to be confused

2009-02-04 Thread bonzini at gnu dot org


--- Comment #31 from bonzini at gnu dot org  2009-02-04 11:22 ---
Created an attachment (id=17241)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17241action=view)
source code to reproduce the bug

Code from PR27827 that still regresses (also with -DTYPE=float, so it's not a
target-specific issue; the numbers Uros posted used different code for float
and double)


-- 


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



[Bug target/28481] [4.2/4.3/4.4 Regression] uses memory where it can use registers

2009-02-04 Thread bonzini at gnu dot org


--- Comment #11 from bonzini at gnu dot org  2009-02-04 11:24 ---
Reconfirmed:

$ ./xgcc -B. serpent.c -O2 -S -o -| wc -l = 1380
$ ./xgcc -B. serpent.c -fno-tree-reassoc -O2 -S -o -| wc -l   = 1304


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

   Last reconfirmed|2008-09-20 15:06:05 |2009-02-04 11:24:49
   date||


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



[Bug tree-optimization/39074] PTA constraint processing for *x = y is wrong

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #9 from rguenth at gcc dot gnu dot org  2009-02-04 12:16 ---
Testcase that is not fixed with removing the short-cutting:

int i;
long __attribute__((noinline,const)) bar(int ***p) { return (long)p; }
void __attribute__((noinline))
foo(void)
{
  int *y;
  int **a = y, **x;
  int ***p;
  long b;
  b = bar(a);
  p = (int ***)b;
  x = *p;
  *x = i;
  *y = 0;
}
extern void abort (void);
int main()
{
  i = 1;
  foo ();
  if (i != 0)
abort ();
  return 0;
}


-- 


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



[Bug tree-optimization/39074] PTA constraint processing for *x = y is wrong

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #10 from rguenth at gcc dot gnu dot org  2009-02-04 12:26 
---
This one fails on trunk (where we fall back to anything for empty points-to
sets, so just add some unrelated j and the vops are wrong):

int i;
long __attribute__((noinline,const)) bar(int ***p) { return (long)p; }
void __attribute__((noinline))
foo(void)
{
  int j;
  int *y = j;
  int **a = y, **x;
  int ***p;
  long b;
  b = bar(a);
  p = (int ***)b;
  x = *p;
  *x = i;
  *y = 0;
}
extern void abort (void);
int main()
{
  i = 1;
  foo ();
  if (i != 0)
abort ();
  return 0;
}


-- 


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



[Bug tree-optimization/39074] PTA constraint processing for *x = y is wrong

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #11 from rguenth at gcc dot gnu dot org  2009-02-04 12:31 
---
This one fails also on the branches that have PTA.

int i;
long __attribute__((noinline,const)) bar(int ***p) { return (long)p; }
extern void abort (void);
int main()
{
  int j;
  int *y = j;
  int **a = y, **x;
  int ***p;
  long b;
  b = bar(a);
  p = (int ***)b;
  x = *p;
  *x = i;
  i = 1;
  *y = 0;
  if (i != 0)
abort ();
  return 0;
}


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

  Known to fail||4.1.3 4.2.4 4.3.3 4.4.0
  Known to work||4.0.4


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



[Bug tree-optimization/39074] [4.2/4.3/4.4 Regression] PTA constraint processing for *x = y is wrong

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #12 from rguenth at gcc dot gnu dot org  2009-02-04 12:37 
---
Which makes it a regression.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

Summary|PTA constraint processing   |[4.2/4.3/4.4 Regression] PTA
   |for *x = y is wrong |constraint processing for *x
   ||= y is wrong
   Target Milestone|--- |4.2.5


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



[Bug tree-optimization/26854] [4.3/4.4 Regression] Inordinate compile times on large routines

2009-02-04 Thread bonzini at gnu dot org


--- Comment #80 from bonzini at gnu dot org  2009-02-04 12:45 ---
Brad, can you produce new stats?


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 CC||bonzini at gnu dot org


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



[Bug rtl-optimization/36758] [4.3/4.4 Regression] addition moved out of the loop when used with an argument

2009-02-04 Thread bonzini at gnu dot org


--- Comment #16 from bonzini at gnu dot org  2009-02-04 12:47 ---
Andrew, if you point me to the patch I'll be glad to pick it up.


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 CC||bonzini at gnu dot org


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



[Bug c++/39095] [4.4 Regression] Mangling changes break ABI

2009-02-04 Thread pedro dot lamarao at mndfck dot org


--- Comment #1 from pedro dot lamarao at mndfck dot org  2009-02-04 13:02 
---
I can confirm this bug on my system.

[psi...@joana GCC]$ uname -a
Linux joana 2.6.27.12-170.2.5.fc10.i686 #1 SMP Wed Jan 21 02:09:37 EST 2009
i686 i686 i386 GNU/Linux

[psi...@joana GCC]$ g++ -v
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla
--enable-bootstrap --enable-shared --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions
--enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk
--disable-dssi --enable-plugin
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre
--enable-libgcj-multifile --enable-java-maintainer-mode
--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib
--with-cpu=generic --build=i386-redhat-linux
Thread model: posix
gcc version 4.3.2 20081105 (Red Hat 4.3.2-7) (GCC)

[psi...@joana GCC]$ g++-4.4 -v
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../trunk/configure --prefix=/opt/gcc-4.4 --enable-bootstrap
--enable-shared --enable-threads=posix --enable-checking=release
--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions
--enable-languages=c,c++ --with-cpu=generic --build=i386-redhat-linux
Thread model: posix
gcc version 4.4.0 20090204 (experimental) (GCC)

[psi...@joana GCC]$ cat test.cpp
struct B
{
  int b;
};

B b;

struct A
{
  B *operator-() const
  {
return b;
  }
  A () {}
};

A a;

int foo ()
{
  return a-b;
}

[psi...@joana GCC]$ g++ -c -o 43.o test.cpp

[psi...@joana GCC]$ g++-4.4 -c -o 44.o test.cpp

[psi...@joana GCC]$ nm 43.o
0039 t _GLOBAL__I_b
 T _Z3foov
0016 t _Z41__static_initialization_and_destruction_0ii
 W _ZN1AC1Ev
 W _ZNK1AptEv
0004 B a
 B b

[psi...@joana GCC]$ nm 44.o
0039 t _GLOBAL__I_b
 T _Z3foov
0016 t _Z41__static_initialization_and_destruction_0ii
 W _ZN1AC1Ev
 W _ZNK1AdtEv
 U __gxx_personality_v0
0004 B a
 B b


-- 

pedro dot lamarao at mndfck dot org changed:

   What|Removed |Added

 CC||pedro dot lamarao at mndfck
   ||dot org


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



[Bug c/35433] [4.2/4.3 regression] ICE with typeof and ternary operator

2009-02-04 Thread jsm28 at gcc dot gnu dot org


--- Comment #5 from jsm28 at gcc dot gnu dot org  2009-02-04 13:07 ---
Subject: Bug 35433

Author: jsm28
Date: Wed Feb  4 13:07:43 2009
New Revision: 143922

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=143922
Log:
PR c/35433
* c-typeck.c (composite_type): Set TYPE_SIZE and TYPE_SIZE_UNIT
for composite type involving a zero-length array type.

testsuite:
* gcc.dg/init-bad-6.c: New test.

Added:
branches/gcc-4_3-branch/gcc/testsuite/gcc.dg/init-bad-6.c
Modified:
branches/gcc-4_3-branch/gcc/ChangeLog
branches/gcc-4_3-branch/gcc/c-typeck.c
branches/gcc-4_3-branch/gcc/testsuite/ChangeLog


-- 


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



[Bug c++/39095] [4.4 Regression] Mangling changes break ABI

2009-02-04 Thread jakub at gcc dot gnu dot org


--- Comment #2 from jakub at gcc dot gnu dot org  2009-02-04 13:39 ---
Just doing:
@@ -,12 +,18 @@ write_unqualified_name (const tree decl)
   else if (DECL_OVERLOADED_OPERATOR_P (decl))
 {
   operator_name_info_t *oni;
+  enum tree_code code = DECL_OVERLOADED_OPERATOR_P (decl);
+
   if (DECL_ASSIGNMENT_OPERATOR_P (decl))
 oni = assignment_operator_name_info;
   else
-oni = operator_name_info;
+{
+  oni = operator_name_info;
+  if (code == COMPONENT_REF)
+code = ARROW_EXPR;
+}

-  write_string (oni[DECL_OVERLOADED_OPERATOR_P (decl)].mangled_name);
+  write_string (oni[(int) code].mangled_name);
 }
   else if (VAR_OR_FUNCTION_DECL_P (decl)  ! TREE_PUBLIC (decl)
 DECL_NAMESPACE_SCOPE_P (decl)
is sufficient for the mangling, but still operator. appears in dumps etc.
instead of operator-, and I guess the name - mangled name stuff in
write_expression won't do the right thing either.  So, either the operators.def
change should be reverted and dt should use a different code from COMPONENT_REF
(or no code at all and just write_string (dt).  Or operator- should be
parsed and handled as operator with ARROW_EXPR code rather than COMPONENT_REF.


-- 


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



[Bug c++/39095] [4.4 Regression] Mangling changes break ABI

2009-02-04 Thread jakub at gcc dot gnu dot org


--- Comment #3 from jakub at gcc dot gnu dot org  2009-02-04 13:54 ---
Created an attachment (id=17242)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17242action=view)
gcc44-pr39095.patch

Patch I'm going to bootstrap/regtest.  I think changing code for operator-
in all places is more risky than this.
Jason, does this look ok?


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |jakub at gcc dot gnu dot org
   |dot org |
 Status|UNCONFIRMED |ASSIGNED


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



[Bug testsuite/39096] New: should not try to run -flto or -fwhopr testsuite if lto lang not defined.

2009-02-04 Thread zadeck at naturalbridge dot com
you get 10s of thousands of errors


-- 
   Summary: should not try to run -flto or -fwhopr testsuite if lto
lang not defined.
   Product: gcc
   Version: lto
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: testsuite
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: zadeck at naturalbridge dot com
  GCC host triplet: all


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



[Bug middle-end/38157] -fconserve-stack enabled by default

2009-02-04 Thread bonzini at gnu dot org


--- Comment #4 from bonzini at gnu dot org  2009-02-04 14:36 ---
Fixed.


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug c++/39095] [4.4 Regression] Mangling changes break ABI

2009-02-04 Thread jason at redhat dot com


--- Comment #4 from jason at redhat dot com  2009-02-04 15:57 ---
Subject: Re:  [4.4 Regression] Mangling changes break ABI

OK.

Jason


-- 


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



[Bug target/37488] register allocation spills floats needlessly

2009-02-04 Thread bonzini at gnu dot org


--- Comment #2 from bonzini at gnu dot org  2009-02-04 15:57 ---
minimized testcase:

void test(char *ip, double *reg_f)
{
static void * const addrs[] = {L1, L2};
double reg_f_a;

reg_f_a = 0.0;
goto *addrs[*++ip];

L1:
reg_f_a += reg_f[*++ip];
goto *addrs[*++ip];

L2:
reg_f[0] = reg_f_a;
}


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 CC||bonzini at gnu dot org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-02-04 15:57:37
   date||


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



[Bug target/37488] register allocation spills floats needlessly

2009-02-04 Thread bonzini at gnu dot org


--- Comment #3 from bonzini at gnu dot org  2009-02-04 16:03 ---
requires computed gotos and floats, even smaller testcase

void test(char *ip, double *reg_f)
{
  static void * const addrs[] = {L1, L2};
  double reg_f_a;

  reg_f_a = 0.0;
  goto *addrs[*++ip];

L1: reg_f_a = reg_f[*++ip];
L2: reg_f[0] = reg_f_a;
}


-- 


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



[Bug tree-optimization/39074] [4.2/4.3/4.4 Regression] PTA constraint processing for *x = y is wrong

2009-02-04 Thread dberlin at dberlin dot org


--- Comment #13 from dberlin at gcc dot gnu dot org  2009-02-04 16:09 
---
Subject: Re:  PTA constraint processing for *x = 
y is wrong

I don't remember offhand.  At one point during 4.2 we used to compute
the anything set exactly, and it led to massive issues. Of course,
most of those were because the anything set had hundreds or thousands
of SFT's :).

I'm happy to go with your idea for fixing since fixing shortcutting
won't fix it, except for two things:
1. ANYTHING is really limited to all addressable variables (IE address
taken and escaping), instead of all variables.  It was never meant to
represent completely unknown (IE user has set pointer to  (char *)
0xdeadbeef).
ISTM the set you union in should be based on CALLUSED and ESCAPED or
something thereof, or at least should be computable with constraints
during solving, and unioned in when it changes.

The way off the top of my head to do this is to simply stop using
ANYTHING, and use ANYTHING directly, and then have ANYTHING =
CALLUSED and ANYTHING = ESCAPED.

Assuming you hate that idea for some reason
2. It's probably a lot faster to make a bitmap of these and update it,
then union in the bitmap, than to iterate over all varinfos all the
time.

ISTM you are trying to avoid doing #1 by adding all variables, even
though this is going to give you worse than necessary results.

Intel actually iterates points-to solving in order to compute the set
of nonlocal locations without explicitly adding the set everywhere.

See the description of nloc in section 4.1 of  On the Importance of
Points=To Analysis and Other
Memory Disambiguation Methods For C Programs

On Wed, Feb 4, 2009 at 4:35 AM, rguenther at suse dot de
gcc-bugzi...@gcc.gnu.org wrote:


 --- Comment #8 from rguenther at suse dot de  2009-02-04 09:35 ---
 Subject: Re:  PTA constraint processing for *x
  = y is wrong

 On Wed, 4 Feb 2009, dberlin at dberlin dot org wrote:

 --- Comment #7 from dberlin at gcc dot gnu dot org  2009-02-04 00:29 
 ---
 Subject: Re:  PTA constraint processing for *x =
 y is wrong

 On Tue, Feb 3, 2009 at 9:24 AM, rguenther at suse dot de
 gcc-bugzi...@gcc.gnu.org wrote:
 
 
  --- Comment #6 from rguenther at suse dot de  2009-02-03 14:24 ---
  Subject: Re:  PTA constraint processing for *x
   = y is wrong
 
  On Tue, 3 Feb 2009, dberlin at dberlin dot org wrote:
 
  Subject: Re:  PTA constraint processing for *x =
  y is wrong
 
  There used to be a *ANYTHING = ANYTHING constraint + ANYTHING
  containing all the variables pointing to ANYTHING that would have
  taken care of this.
  You certainly don't want to dynamically add all variables at solving
  time yourself, since that can't be optimized.
 
  This is the reason it works for ESCAPED, there we have an
  *ESCAPED = ESCAPED constraint.  It doesn't work for CALLUSED though,
  I have a simple fix (CALLUSED is not big usually, so just not using
  it as a placeholder fixes the issue here).
 
  For the ANYTHING problem I have just dealt with it in do_ds_constraint
  (I'll post an updated patch soon after testing finished).

 My onl concern is practicality.
 The last time I did this solely at solving time it was ridiculously
 slow on large cases, since the solver is much better at difference
 propagation.

 Do you remember what testcase(s) this was?  I can certainly time
 removing the shortcutting against handling *ANYTHING (and I'll try
 to come up with a testcase that is not fixed with just removing
 the shortcutting).

 Richard.


 --


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

 --- You are receiving this mail because: ---
 You are on the CC list for the bug, or are watching someone who is.



-- 


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



[Bug libgomp/39098] New: FAIL: libgomp.fortran/reduction3.f90 at -O1 and above

2009-02-04 Thread danglin at gcc dot gnu dot org
Executing on host: /home/dave/gnu/gcc/objdir/gcc/xgcc
-B/home/dave/gnu/gcc/objdir/gcc/
/home/dave/gnu/gcc/gcc/libgomp/testsuite/libgomp.fortran/reduction3.f90 
-B/home/dave/gnu/gcc/objdir/arm-none-linux-gnueabi/./libgomp/
-I/home/dave/gnu/gcc/objdir/arm-none-linux-gnueabi/./libgomp
-I/home/dave/gnu/gcc/gcc/libgomp/testsuite/.. -fmessage-length=0 -fopenmp  -O1 

-B/home/dave/gnu/gcc/objdir/arm-none-linux-gnueabi/./libgomp/../libgfortran/.libs
  -L/home/dave/gnu/gcc/objdir/arm-none-linux-gnueabi/./libgomp/.libs -lgomp
-L/home/dave/gnu/gcc/objdir/arm-none-linux-gnueabi/./libgomp/../libgfortran/.libs
-lgfortranbegin -lgfortran -lm   -o ./reduction3.exe(timeout = 300)
PASS: libgomp.fortran/reduction3.f90  -O1  (test for excess errors)
Setting LD_LIBRARY_PATH to
.:/home/dave/gnu/gcc/objdir/arm-none-linux-gnueabi/./libgomp/.libs:/home/dave/gnu/gcc/objdir/gcc:/home/dave/gnu/gcc/objdir/arm-none-linux-gnueabi/./libgomp/../libgfortran/.libs:.:/home/dave/gnu/gcc/objdir/arm-none-linux-gnueabi/./libgomp/.libs:/home/dave/gnu/gcc/objdir/gcc:/home/dave/gnu/gcc/objdir/arm-none-linux-gnueabi/./libgomp/../libgfortran/.libs:/home/dave/gnu/gcc/objdir/arm-none-linux-gnueabi/libstdc++-v3/.libs:/home/dave/gnu/gcc/objdir/arm-none-linux-gnueabi/libgomp/.libs:/home/dave/gnu/gcc/objdir/./gcc:/home/dave/gnu/gcc/objdir/./prev-gcc:/home/dave/opt/gnu/gcc/gcc-4.3.3/lib:/home/dave/opt/gnu/lib
FAIL: libgomp.fortran/reduction3.f90  -O1  execution test

Starting program:
/home/dave/gnu/gcc/objdir/arm-none-linux-gnueabi/libgomp/testsuite/reduction3.xg
[Thread debugging using libthread_db enabled]
[New Thread 0x4030b000 (LWP 24657)]
[New Thread 0x40b0b450 (LWP 24658)]
[New Thread 0x4130b450 (LWP 24659)]
[Switching to Thread 0x4030b000 (LWP 24657)]

Breakpoint 2, _gfortran_abort ()
at ../../../gcc/libgfortran/intrinsics/abort.c:39
39abort ();
(gdb) bt
#0  _gfortran_abort () at ../../../gcc/libgfortran/intrinsics/abort.c:39
#1  0x8924 in MAIN__ ()
at
/home/dave/gnu/gcc/gcc/libgomp/testsuite/libgomp.fortran/reduction3.f90:52

-bash-3.2$ ./xgcc -B./ -v
Reading specs from ./specs
Target: arm-none-linux-gnueabi
Configured with: ../gcc/configure --host=arm-none-linux-gnueabi
--target=arm-none-linux-gnueabi --build=arm-none-linux-gnueabi
--enable-languages=c,c++,fortran --enable-shared --enable-threads
--disable-multilib --disable-libmudflap --disable-libssp --enable-symvers=gnu
--enable-__cxa_atexit --disable-libstdcxx-pch --enable-checking=release
--prefix=/home/dave/opt/gnu/gcc/gcc-4.4.0 --with-gmp=/home/dave/opt/gnu
Thread model: posix
gcc version 4.4.0 20090202 (experimental) [trunk revision 143869] (GCC)

(gdb) p r
$1 = 3
(gdb) p ra
$2 = (6.5, 6.5, 4, 4)


-- 
   Summary: FAIL: libgomp.fortran/reduction3.f90 at -O1 and above
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libgomp
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: danglin at gcc dot gnu dot org
 GCC build triplet: arm-none-linux-gnueabi
  GCC host triplet: arm-none-linux-gnueabi
GCC target triplet: arm-none-linux-gnueabi


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



[Bug c++/19618] Does warn if bit-fields exceed the size of bool types

2009-02-04 Thread tydeman at tybor dot com


--- Comment #4 from tydeman at tybor dot com  2009-02-04 16:16 ---
/*
 * _Bool bit-fields: C99: 6.7.2.1, paragraph 3 along with Defect Report 335.
 * _Bool bit-fields of size up to CHAR_BIT must be supported.
 */
#include limits.h /* CHAR_BIT */

int main(void){
  struct bits {
   int: 0;
   _Bool  : 0;  /* force alignment */
   _Bool bbf1 : 1;  /* holds values 0 and 1 */ 
   _Bool bbf8 : CHAR_BIT;   /* must be supported */
  } bits;
  return 0;
}

The above code fails to compile in gcc 4.3.2-7
The error message is:
error: width of 'bbf8' exceeds its type

A _Bool is one storage unit, so is CHAR_BIT bits.
Therefore, _Bool bit-fields of size 0, 1, 2, ... CHAR_BIT
must be supported.


-- 

tydeman at tybor dot com changed:

   What|Removed |Added

 CC||tydeman at tybor dot com


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



[Bug c/35433] [4.2 regression] ICE with typeof and ternary operator

2009-02-04 Thread jsm28 at gcc dot gnu dot org


--- Comment #6 from jsm28 at gcc dot gnu dot org  2009-02-04 13:09 ---
Fixed for 4.3.4 and 4.4.0.  Not planning to work on backport to 4.2 branch.


-- 

jsm28 at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|jsm28 at gcc dot gnu dot org|unassigned at gcc dot gnu
   ||dot org
 Status|ASSIGNED|NEW
  Known to fail||4.2.4 4.3.3
  Known to work||4.3.4 4.4.0
Summary|[4.2/4.3 regression] ICE|[4.2 regression] ICE with
   |with typeof and ternary |typeof and ternary operator
   |operator|


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



[Bug target/37488] register allocation spills floats needlessly

2009-02-04 Thread bonzini at gnu dot org


--- Comment #4 from bonzini at gnu dot org  2009-02-04 16:22 ---
We get a wrong choice of class

a1 (r59,l0) best FLOAT_REGS, cover FLOAT_REGS

(remember this is with -mfpmath=sse) despite the preferred reload class is
indeed SSE_REGS.

But then, we get the spill even without SSE math.


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 CC||vmakarov at gcc dot gnu dot
   ||org


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



[Bug libgomp/39098] FAIL: libgomp.fortran/reduction3.f90

2009-02-04 Thread danglin at gcc dot gnu dot org


--- Comment #1 from danglin at gcc dot gnu dot org  2009-02-04 16:26 ---
Actually, test also fails at -O0:

FAIL: libgomp.fortran/reduction3.f90  -O0  execution test
FAIL: libgomp.fortran/reduction3.f90  -O1  execution test
FAIL: libgomp.fortran/reduction3.f90  -O2  execution test
FAIL: libgomp.fortran/reduction3.f90  -O3 -fomit-frame-pointer  execution test
FAIL: libgomp.fortran/reduction3.f90  -O3 -fomit-frame-pointer -funroll-loops 
e
xecution test
FAIL: libgomp.fortran/reduction3.f90  -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions  execution test
FAIL: libgomp.fortran/reduction3.f90  -O3 -g  execution test
FAIL: libgomp.fortran/reduction3.f90  -Os  execution test


-- 

danglin at gcc dot gnu dot org changed:

   What|Removed |Added

Summary|FAIL:   |FAIL:
   |libgomp.fortran/reduction3.f|libgomp.fortran/reduction3.f
   |90 at -O1 and above |90


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



[Bug tree-optimization/39074] [4.2/4.3/4.4 Regression] PTA constraint processing for *x = y is wrong

2009-02-04 Thread rguenther at suse dot de


--- Comment #14 from rguenther at suse dot de  2009-02-04 16:26 ---
Subject: Re:  [4.2/4.3/4.4 Regression] PTA
 constraint processing for *x = y is wrong

On Wed, 4 Feb 2009, dberlin at dberlin dot org wrote:

 --- Comment #13 from dberlin at gcc dot gnu dot org  2009-02-04 16:09 
 ---
 Subject: Re:  PTA constraint processing for *x = 
 y is wrong
 
 I don't remember offhand.  At one point during 4.2 we used to compute
 the anything set exactly, and it led to massive issues. Of course,
 most of those were because the anything set had hundreds or thousands
 of SFT's :).
 
 I'm happy to go with your idea for fixing since fixing shortcutting
 won't fix it, except for two things:
 1. ANYTHING is really limited to all addressable variables (IE address
 taken and escaping), instead of all variables.  It was never meant to
 represent completely unknown (IE user has set pointer to  (char *)
 0xdeadbeef).

Yes, is there a bitmap / array in the PTA graph that I can iterate
over instead of all vars?

 ISTM the set you union in should be based on CALLUSED and ESCAPED or
 something thereof, or at least should be computable with constraints
 during solving, and unioned in when it changes.

Ah, you mean whenever I see *ANYTHING = x union x into a new
STORE_TO_ANYTHING solution and have an explicit
*ANYTHING = STORE_TO_ANYTHING constraint (which I of course need
to handle properly in do_ds_constraint)?  That may be indeed faster.

 The way off the top of my head to do this is to simply stop using
 ANYTHING, and use ANYTHING directly, and then have ANYTHING =
 CALLUSED and ANYTHING = ESCAPED.

I don't think CALLUSED or ESCAPED are related here.  You can store
non-addressables into *ANYTHING.

 Assuming you hate that idea for some reason
 2. It's probably a lot faster to make a bitmap of these and update it,
 then union in the bitmap, than to iterate over all varinfos all the
 time.
 
 ISTM you are trying to avoid doing #1 by adding all variables, even
 though this is going to give you worse than necessary results.
 
 Intel actually iterates points-to solving in order to compute the set
 of nonlocal locations without explicitly adding the set everywhere.
 
 See the description of nloc in section 4.1 of  On the Importance of
 Points=To Analysis and Other
 Memory Disambiguation Methods For C Programs

I'll have a look there.

Richard.


-- 


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



[Bug c++/19618] Does warn if bit-fields exceed the size of bool types

2009-02-04 Thread joseph at codesourcery dot com


--- Comment #5 from joseph at codesourcery dot com  2009-02-04 16:30 ---
Subject: Re:  Does warn if bit-fields exceed the size of bool
 types

On Wed, 4 Feb 2009, tydeman at tybor dot com wrote:

 /*
  * _Bool bit-fields: C99: 6.7.2.1, paragraph 3 along with Defect Report 335.
  * _Bool bit-fields of size up to CHAR_BIT must be supported.
  */

I don't know why you think C99 is relevant to a C++ bug report.  As I have 
explained at length before and as we discussed at length at the London 
WG14 meeting, the width of a type is the number of value and sign bits, 
so post-TC2 a _Bool:CHAR_BIT bit-field is valid only if the implementation 
defines _Bool to have CHAR_BIT value bits.  GCC defines it to have one 
value bit with the other bits being padding bits and undefined behavior if 
you access a _Bool representation with any of the padding bits having a 
nonzero value (such representations being trap representations).  Thus the 
width of _Bool is 1 with GCC and the diagnostics are required.

As you know, TC2 changed the number of bits in an object of the type that 
is specified if the colon and expression are omitted to the width of an 
object of the type that would be specified were the colon and expression 
omitted. in 6.7.2.1 paragraph 3.

I have no idea what is required by C++ and whether GCC implements the C++ 
requirements correctly or not.


-- 


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



[Bug target/37488] register allocation spills floats needlessly

2009-02-04 Thread bonzini at gnu dot org


--- Comment #5 from bonzini at gnu dot org  2009-02-04 16:31 ---
The old register allocator chose 

  Register 59 pref FLOAT_SSE_REGS or none

but that is not a cover class.


-- 


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



[Bug c++/39095] [4.4 Regression] Mangling changes break ABI

2009-02-04 Thread jakub at gcc dot gnu dot org


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

   Priority|P3  |P1
   Target Milestone|--- |4.4.0


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



[Bug middle-end/23868] [4.2/4.3/4.4 regression] builtin_apply uses wrong mode for multi-hard-register return values

2009-02-04 Thread bonzini at gnu dot org


--- Comment #13 from bonzini at gnu dot org  2009-02-04 12:46 ---
Christian, any news?


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 CC||chrbr at gcc dot gnu dot org


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



[Bug tree-optimization/39074] [4.2/4.3/4.4 Regression] PTA constraint processing for *x = y is wrong

2009-02-04 Thread dberlin at dberlin dot org


--- Comment #15 from dberlin at gcc dot gnu dot org  2009-02-04 16:37 
---
Subject: Re:  [4.2/4.3/4.4 Regression] PTA 
constraint processing for *x = y is wrong

On Wed, Feb 4, 2009 at 11:26 AM, rguenther at suse dot de
gcc-bugzi...@gcc.gnu.org wrote:


 --- Comment #14 from rguenther at suse dot de  2009-02-04 16:26 ---
 Subject: Re:  [4.2/4.3/4.4 Regression] PTA
  constraint processing for *x = y is wrong

 On Wed, 4 Feb 2009, dberlin at dberlin dot org wrote:

 --- Comment #13 from dberlin at gcc dot gnu dot org  2009-02-04 16:09 
 ---
 Subject: Re:  PTA constraint processing for *x =
 y is wrong

 I don't remember offhand.  At one point during 4.2 we used to compute
 the anything set exactly, and it led to massive issues. Of course,
 most of those were because the anything set had hundreds or thousands
 of SFT's :).

 I'm happy to go with your idea for fixing since fixing shortcutting
 won't fix it, except for two things:
 1. ANYTHING is really limited to all addressable variables (IE address
 taken and escaping), instead of all variables.  It was never meant to
 represent completely unknown (IE user has set pointer to  (char *)
 0xdeadbeef).

 Yes, is there a bitmap / array in the PTA graph that I can iterate
 over instead of all vars?
Not right now.


 ISTM the set you union in should be based on CALLUSED and ESCAPED or
 something thereof, or at least should be computable with constraints
 during solving, and unioned in when it changes.

 Ah, you mean whenever I see *ANYTHING = x union x into a new
 STORE_TO_ANYTHING solution and have an explicit
 *ANYTHING = STORE_TO_ANYTHING constraint (which I of course need
 to handle properly in do_ds_constraint)?  That may be indeed faster.
Something like that.
It is going to be faster than doing it one by one all the time.

 The way off the top of my head to do this is to simply stop using
 ANYTHING, and use ANYTHING directly, and then have ANYTHING =
 CALLUSED and ANYTHING = ESCAPED.

 I don't think CALLUSED or ESCAPED are related here.  You can store
 non-addressables into *ANYTHING.
How?
If they are non-addressable, that implies they are not pointed to.
I think you are going off the rails here :)
If you really want to union ANYTHING into things, the simplest way is
to change from doing:

ANYTHING = ANYTHING
a = y
p_4 = ANYTHING
p_1 = p_4
p_1 = a
x_6 = *p_1
derefaddrtmp.11 = i
*x_6 = derefaddrtmp.11
y.0_7 = y

to
ANYTHING = *ANYTHING
ANYTHING = all pointers pre-built or whatever we decided on
a = y
p_4 = ANYTHING
p_1 = p_4
p_1 = a
x_6 = *p_1
derefaddrtmp.11 = i
*x_6 = derefaddrtmp.11
y.0_7 = y

Then p_4 will get the entire anything set, and it will propagate
around just like you wanted.


-- 


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



[Bug tree-optimization/39094] New: loop_niter_by_eval should deal with a[i_1]

2009-02-04 Thread rguenth at gcc dot gnu dot org
Brute force evaluation of niters does not deal with

bb 5:
  i_10 = i_1 + 1;

bb 6:
  # i_1 = PHI 0(2), i_10(5)
  # .MEM_11 = PHI .MEM_17(2), .MEM_11(5)
  if (i_1 = 4)
goto bb 3;
  else
goto bb 7;

bb 3:
  D.5476_6 = a._M_instance[i_1];
  D.5457_8 = i_1 * 4;
  D.5458_9 = a._M_instance[0] + D.5457_8;
  if (D.5476_6 != D.5458_9)
goto bb 4;
  else
goto bb 5;

where get_val_for cannot handle a._M_instance[i_1].


-- 
   Summary: loop_niter_by_eval should deal with a[i_1]
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: enhancement
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rguenth at gcc dot gnu dot org


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



[Bug c++/39095] [4.4 Regression] Mangling changes break ABI

2009-02-04 Thread jakub at gcc dot gnu dot org


--- Comment #5 from jakub at gcc dot gnu dot org  2009-02-04 16:50 ---
Subject: Bug 39095

Author: jakub
Date: Wed Feb  4 16:50:22 2009
New Revision: 143933

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=143933
Log:
PR c++/39095
* operators.def: Use COMPONENT_REF code for -/pt operator again,
remove ./dt operator.
* mangle.c (write_expression): Handle COMPONENT_REF after handling
ADDR_EXPR, for COMPONENT_REF without ARROW_EXPR inside of it
write_string (dt) instead of using operators.def.

* g++.dg/abi/mangle31.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/abi/mangle31.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/mangle.c
trunk/gcc/cp/operators.def
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug c++/39095] New: [4.4 Regression] Mangling changes break ABI

2009-02-04 Thread jakub at gcc dot gnu dot org
http://gcc.gnu.org/viewcvs?root=gccview=revrev=140916
seems to break ABI, e.g. 4.4 compiled digikam can't be linked against 4.3
compiled libraries.
struct B
{
  int b;
};

B b;

struct A
{
  B *operator-() const
  {
return b;
  }
  A () {}
};

A a;

int foo ()
{
  return a-b;
}

is mangled as _ZNK1AptEv in g++ 4.3 and below, but as
_ZNK1AdtEv in g++ 4.4.


-- 
   Summary: [4.4 Regression] Mangling changes break ABI
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Keywords: ABI
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jakub at gcc dot gnu dot org


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



[Bug c++/39095] [4.4 Regression] Mangling changes break ABI

2009-02-04 Thread jakub at gcc dot gnu dot org


--- Comment #6 from jakub at gcc dot gnu dot org  2009-02-04 16:53 ---
Fixed.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug tree-optimization/28868] [4.2/4.3/4.4 Regression] Not eliminating the PHIs which have the same arguments

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #15 from rguenth at gcc dot gnu dot org  2009-02-04 10:14 
---
I think this is bug is a valid request for FRE to eliminate redundant PHI
nodes:

bb 4:
  # c_1 = PHI a_4(D)(2), b_7(D)(3)
  # d_2 = PHI a_4(D)(2), b_7(D)(3)
  D.1599_10 = c_1 + d_2;

There are no two same PHI nodes in PR23821.

I am going to fix this one.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |rguenth at gcc dot gnu dot
   |dot org |org
 Status|NEW |ASSIGNED
   Last reconfirmed|2007-08-06 15:30:40 |2009-02-04 10:14:52
   date||


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



[Bug rtl-optimization/38434] big performance boost from 4.3's -O3 vs. -O2 (in any version) on 3x3 matmul

2009-02-04 Thread bonzini at gnu dot org


--- Comment #6 from bonzini at gnu dot org  2009-02-04 12:02 ---
We have:

 4.34.4
-O2 3.36   3.32
-O3 3.02   3.50
-O3 -funroll-all-loops  2.92   3.45

Interestingly enough, if I _really_ hand-unroll the loop as suggested by the
wrong summary, 4.4 is faster than 4.3:

 4.34.4
-O2 3.53   3.23
-O3 3.53   3.23
-O3 -funroll-all-loops  3.45   3.18

This means:

1) that -funroll-all-loops is not really affecting the benchmark, but only the
test code

2) that the regression is actually at -O3, not at -O2, and there's really no
guarantee of what performance you get past -O2

3) ultimately, that this is not a regression, but just an enhancement request:
4.4 -O2 is better, but not as good as 4.3 -O3.

--- here is the hand-unrolled loop code:

module foo
  implicit none
contains
  subroutine unroll(a,b,c)
real, dimension(3,3) :: a,b,c
c(1,1) = a(1,1)*b(1,1) + a(1,2)*b(2,1) + a(1,3)*b(3,1)
c(1,2) = a(1,1)*b(1,2) + a(1,2)*b(2,2) + a(1,3)*b(3,2)
c(1,3) = a(1,1)*b(1,3) + a(1,2)*b(2,3) + a(1,3)*b(3,3)
c(2,1) = a(2,1)*b(1,1) + a(2,2)*b(2,1) + a(2,3)*b(3,1)
c(2,2) = a(2,1)*b(1,2) + a(2,2)*b(2,2) + a(2,3)*b(3,2)
c(2,3) = a(2,1)*b(1,3) + a(2,2)*b(2,3) + a(2,3)*b(3,3)
c(3,1) = a(3,1)*b(1,1) + a(3,2)*b(2,1) + a(3,3)*b(3,1)
c(3,2) = a(3,1)*b(1,2) + a(3,2)*b(2,2) + a(3,3)*b(3,2)
c(3,3) = a(3,1)*b(1,3) + a(3,2)*b(2,3) + a(3,3)*b(3,3)
  end subroutine unroll
end module foo

program main
  use foo
  implicit none
  integer :: k
  real, dimension(3,3) :: a,b,c, a0, b0
  real :: t1, t2
  character(len=90) :: line

  call random_number(a0)
  call random_number(b0)
  a = a0
  b = b0

  call cpu_time(t1)

  do k=1,10**8
 call unroll(a,b,c)
  end do

  call cpu_time(t2)
  print *,subroutine with explicit interface and unroll(1): ,t2-t1,  s
  write (unit=line,fmt='(9G10.3)') c

end program main


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

   Priority|P2  |P3
   Last reconfirmed|2008-12-10 13:36:41 |2009-02-04 12:02:14
   date||
Summary|[4.4 Regression] speed  |big performance boost from
   |regression with hand-   |4.3's -O3 vs. -O2 (in any
   |unrolled matmul |version) on 3x3 matmul
   Target Milestone|4.4.0   |---


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



[Bug c/35235] [4.2/4.3/4.4 Regression] struct/union rvalue qualifiers must not propagate to members

2009-02-04 Thread jsm28 at gcc dot gnu dot org


--- Comment #2 from jsm28 at gcc dot gnu dot org  2009-02-04 17:14 ---
Working on a patch.


-- 

jsm28 at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |jsm28 at gcc dot gnu dot org
   |dot org |
 Status|NEW |ASSIGNED
   Last reconfirmed|2008-12-29 07:07:08 |2009-02-04 17:14:54
   date||


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



[Bug c++/19618] Does warn if bit-fields exceed the size of bool types

2009-02-04 Thread tydeman at tybor dot com


--- Comment #6 from tydeman at tybor dot com  2009-02-04 17:15 ---
Opps. I missed that the bug report was against C++ (I still am learning
bugzilla).  So, ignore my previous comments.


-- 


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



[Bug tree-optimization/26854] [4.3/4.4 Regression] Inordinate compile times on large routines

2009-02-04 Thread lucier at math dot purdue dot edu


--- Comment #81 from lucier at math dot purdue dot edu  2009-02-04 17:27 
---
Created an attachment (id=17243)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17243action=view)
Memory and CPU statistics for 2009/02/04


-- 


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



[Bug tree-optimization/26854] [4.3/4.4 Regression] Inordinate compile times on large routines

2009-02-04 Thread lucier at math dot purdue dot edu


--- Comment #82 from lucier at math dot purdue dot edu  2009-02-04 17:28 
---
I still have the bitmap.c patch from

http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01270.html

in my tree so I don't get meaningless statistics for bitmaps.  (Kenny installed
in the trunk something like the patch above for alloc-pool.c.)

There are more bitmaps allocated than on 2008-09-26 (13GB instead of 12GB).

3GB was allocated in alloc-pool.

Execution time was worse, 228.17 user seconds versus 168 seconds.

I didn't watch top to estimate the maximum memory usage.

This is with

euler-8% /pkgs/gcc-mainline/bin/gcc -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../../mainline/configure --enable-checking=release
--prefix=/pkgs/gcc-mainline --enable-languages=c
--enable-gather-detailed-mem-stats
Thread model: posix
gcc version 4.4.0 20090204 (experimental) [trunk revision 143922] (GCC) 

Brad


-- 


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



[Bug c++/39099] New: Local classes cannot be used as template arguments

2009-02-04 Thread tohava at gmail dot com
I've tried defining a local class and then using it as a template argument,
this fails to work.

Here is a very short code example:
#include iostream

template class T
void func2785() {

}

class A {};

int main() {
class B {} b;
func2785A();
func2785B();
}

This bug also in g++ 3.4.6.


-- 
   Summary: Local classes cannot be used as template arguments
   Product: gcc
   Version: 4.1.2
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tohava at gmail dot com


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



[Bug bootstrap/39001] lto branch doesn't build

2009-02-04 Thread dnovillo at gcc dot gnu dot org


--- Comment #4 from dnovillo at gcc dot gnu dot org  2009-02-04 17:49 
---
Testing patch with the more straightforward of the two suggestions from Cary:
http://gcc.gnu.org/ml/gcc/2009-01/msg00105.html


-- 


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



[Bug bootstrap/39001] lto branch doesn't build

2009-02-04 Thread dnovillo at gcc dot gnu dot org


--- Comment #5 from dnovillo at gcc dot gnu dot org  2009-02-04 18:06 
---
Subject: Bug 39001

Author: dnovillo
Date: Wed Feb  4 18:05:51 2009
New Revision: 143935

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

PR 39001
* toplev.c (eh_personality_decl): Fix comment.
* dwarf2out.c (dwarf2out_do_cfi_asm): Return true if
current_function_decl is NULL.


Modified:
branches/lto/gcc/ChangeLog.lto
branches/lto/gcc/dwarf2out.c
branches/lto/gcc/toplev.c


-- 


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



[Bug tree-optimization/26854] [4.3/4.4 Regression] Inordinate compile times on large routines

2009-02-04 Thread dberlin at dberlin dot org


--- Comment #83 from dberlin at gcc dot gnu dot org  2009-02-04 18:24 
---
Subject: Re:  [4.3/4.4 Regression] Inordinate 
compile times on large routines

These numbers claim a leak of the graph-preds bitmap (and related
bitmaps) which are quite clearly freed all the time.
These bitmaps are allocated onto the predbitmap obstack, which is
released through remove_preds_and_fake_succs.
It always executes, so i have trouble understanding why it considers
this a leak.


On Wed, Feb 4, 2009 at 12:28 PM, lucier at math dot purdue dot edu
gcc-bugzi...@gcc.gnu.org wrote:


 --- Comment #82 from lucier at math dot purdue dot edu  2009-02-04 17:28 
 ---
 I still have the bitmap.c patch from

 http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01270.html

 in my tree so I don't get meaningless statistics for bitmaps.  (Kenny 
 installed
 in the trunk something like the patch above for alloc-pool.c.)

 There are more bitmaps allocated than on 2008-09-26 (13GB instead of 12GB).

 3GB was allocated in alloc-pool.

 Execution time was worse, 228.17 user seconds versus 168 seconds.

 I didn't watch top to estimate the maximum memory usage.

 This is with

 euler-8% /pkgs/gcc-mainline/bin/gcc -v
 Using built-in specs.
 Target: x86_64-unknown-linux-gnu
 Configured with: ../../mainline/configure --enable-checking=release
 --prefix=/pkgs/gcc-mainline --enable-languages=c
 --enable-gather-detailed-mem-stats
 Thread model: posix
 gcc version 4.4.0 20090204 (experimental) [trunk revision 143922] (GCC)

 Brad


 --


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

 --- You are receiving this mail because: ---
 You are on the CC list for the bug, or are watching someone who is.



-- 


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



[Bug tree-optimization/39100] New: [4.4 Regression] -fstrict-aliasing miscompilation

2009-02-04 Thread jakub at gcc dot gnu dot org
typedef struct E
{
  int p;
  struct E *n;
} *EP;   

typedef struct C
{
  EP x;
  short cn, cp; 
} *CP;

__attribute__((noinline)) CP
foo (CP h, EP x)
{
  EP pl = 0, *pa = pl;
  EP nl = 0, *na = nl;
  EP n;

  while (x)
{
  n = x-n;   
  if ((x-p  1) == 1) 
{
  h-cp++;
  *pa = x;
  pa = ((*pa)-n);
}
  else
{
  h-cn++;
  *na = x;
  na = ((*na)-n);
}
  x = n;
}
  *pa = nl;
  *na = 0;
  h-x = pl;
  return h;
}

int
main (void)
{  
  struct C c = { 0, 0, 0 };
  struct E e[2] = { { 0, e[1] }, { 1, 0 } };
  EP p;

  foo (c, e[0]);
  if (c.cn != 1 || c.cp != 1)
__builtin_abort ();
  if (c.x != e[1])
__builtin_abort ();
  if (e[1].n != e[0])
__builtin_abort ();
  if (e[0].n)
__builtin_abort ();
  return 0;  
}

is miscompiled on x86_64-linux with -O2, works with -O2 -fno-strict-aliasing
and with 4.3.2.  When miscompiled, the *na = 0 store is optimized away.


-- 
   Summary: [4.4 Regression] -fstrict-aliasing miscompilation
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jakub at gcc dot gnu dot org


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



[Bug tree-optimization/39100] [4.4 Regression] -fstrict-aliasing miscompilation

2009-02-04 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org
   Keywords||wrong-code
   Target Milestone|--- |4.4.0


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



[Bug gcov-profile/38292] corrupted profile info with -O[23] -fprofile-use

2009-02-04 Thread jakub at gcc dot gnu dot org


--- Comment #1 from jakub at gcc dot gnu dot org  2009-02-04 19:51 ---
Subject: Bug 38292

Author: jakub
Date: Wed Feb  4 19:50:58 2009
New Revision: 143937

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=143937
Log:
PR tree-optimization/38977
PR gcov-profile/38292
* calls.c (special_function_p): Disregard __builtin_
prefix.

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


-- 


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



[Bug tree-optimization/38977] [4.4 Regression] bash no longer builds with profile-feedback

2009-02-04 Thread jakub at gcc dot gnu dot org


--- Comment #14 from jakub at gcc dot gnu dot org  2009-02-04 19:51 ---
Subject: Bug 38977

Author: jakub
Date: Wed Feb  4 19:50:58 2009
New Revision: 143937

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=143937
Log:
PR tree-optimization/38977
PR gcov-profile/38292
* calls.c (special_function_p): Disregard __builtin_
prefix.

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


-- 


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



[Bug libgomp/39098] FAIL: libgomp.fortran/reduction3.f90

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2009-02-04 20:00 ---
Does it work without -fopenmp?


-- 


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



[Bug tree-optimization/39100] [4.4 Regression] -fstrict-aliasing miscompilation

2009-02-04 Thread jakub at gcc dot gnu dot org


--- Comment #1 from jakub at gcc dot gnu dot org  2009-02-04 20:04 ---
Caused by http://gcc.gnu.org/viewcvs?root=gccview=revrev=136657


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

   Priority|P3  |P1


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



[Bug tree-optimization/39100] [4.4 Regression] -fstrict-aliasing miscompilation

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2009-02-04 20:04 ---
I will have a looksee.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |rguenth at gcc dot gnu dot
   |dot org |org
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-02-04 20:04:52
   date||


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



[Bug tree-optimization/39100] [4.4 Regression] -fstrict-aliasing miscompilation

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2009-02-04 20:05 ---
Note that the patch only enables us to use PTA results which are likely wrong
here.


-- 


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



[Bug tree-optimization/39100] [4.4 Regression] -fstrict-aliasing miscompilation

2009-02-04 Thread hjl dot tools at gmail dot com


--- Comment #4 from hjl dot tools at gmail dot com  2009-02-04 20:13 ---
It is caused by revision 136657:

http://gcc.gnu.org/ml/gcc-cvs/2008-06/msg00414.html


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu dot
   ||org


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



[Bug debug/39073] [4.4 Regression] unable to debug CP2K (no local symbols)

2009-02-04 Thread jv244 at cam dot ac dot uk


--- Comment #10 from jv244 at cam dot ac dot uk  2009-02-04 20:53 ---
(In reply to comment #9)
 I hope to patch it soon although I have no such patch right now.
Hi Jan,

any progress on this one ? I've a core to analyze, but I'm stuck here. 

Joost


-- 


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



[Bug rtl-optimization/37889] [4.3/4.4 Regression] SEGV, conditional execution proactively executed the false arm.

2009-02-04 Thread bonzini at gcc dot gnu dot org


--- Comment #18 from bonzini at gnu dot org  2009-02-04 20:54 ---
Subject: Bug 37889

Author: bonzini
Date: Wed Feb  4 20:54:36 2009
New Revision: 143939

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=143939
Log:
2009-02-04  Paolo Bonzini  bonz...@gnu.org
Hans-Peter Nilsson  h...@axis.com

PR rtl-optimization/37889
* rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
Move offset handling from PLUS to before the switch.  Use new
arguments when considering SYMBOL_REFs too.
(rtx_addr_can_trap_p): Pass dummy offset and size.
(enum may_trap_p_flags): Remove.
(may_trap_p_1): Pass size from MEM_SIZE.

PR rtl-optimization/38921
* loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
* rtl.h (may_trap_after_code_motion_p): Delete prototype.
* rtlanal.c (may_trap_after_code_motion_p): Delete.
(may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/loop-invariant.c
trunk/gcc/rtl.h
trunk/gcc/rtlanal.c


-- 


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



[Bug rtl-optimization/38921] [4.3 Regression] NULL access in delay-slot

2009-02-04 Thread bonzini at gcc dot gnu dot org


--- Comment #10 from bonzini at gnu dot org  2009-02-04 20:54 ---
Subject: Bug 38921

Author: bonzini
Date: Wed Feb  4 20:54:36 2009
New Revision: 143939

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=143939
Log:
2009-02-04  Paolo Bonzini  bonz...@gnu.org
Hans-Peter Nilsson  h...@axis.com

PR rtl-optimization/37889
* rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
Move offset handling from PLUS to before the switch.  Use new
arguments when considering SYMBOL_REFs too.
(rtx_addr_can_trap_p): Pass dummy offset and size.
(enum may_trap_p_flags): Remove.
(may_trap_p_1): Pass size from MEM_SIZE.

PR rtl-optimization/38921
* loop-invariant.c (find_invariant_insn): Use may_trap_or_fault_p.
* rtl.h (may_trap_after_code_motion_p): Delete prototype.
* rtlanal.c (may_trap_after_code_motion_p): Delete.
(may_trap_p, may_trap_or_fault_p): Pass 0/1 as flags.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/loop-invariant.c
trunk/gcc/rtl.h
trunk/gcc/rtlanal.c


-- 


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



[Bug tree-optimization/39100] [4.4 Regression] -fstrict-aliasing miscompilation

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #5 from rguenth at gcc dot gnu dot org  2009-02-04 20:59 ---
On the alias-improvements branch the testcase also fails with
-O -fdelete-null-pointer-checks, so this is definitely a PTA bug.
PTA thinks the points-to set for na_5 is

na_5, is dereferenced, points-to NULL, points-to vars: { nl }

which would definitely enable deleting the store, as nl is a local variable.

The constraints that should make na_5 point to NONLOCAL as well are

h = NONLOCAL
x = NONLOCAL
x_1 = x
*na_5 = x_1
D.1262_20 = *na_5
na_21 = D.1262_20 + 32
na_4 = na_21
na_5 = na_4

relevant unifications are

Unifying x to h
Unifying na_4 to na_5


The PTA bug can be seen with the following simplified testcase:

typedef struct E
{
  struct E *n;
} *EP;

void __attribute__((noinline))
foo (EP x)
{
  EP nl = 0, *na = nl;
  EP n;

  while (x)
{
  n = x-n;
  *na = x;
  na = ((*na)-n);
  x = n;
}
  *na = 0;
}


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||dberlin at gcc dot gnu dot
   ||org


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



[Bug c/35235] [4.2/4.3/4.4 Regression] struct/union rvalue qualifiers must not propagate to members

2009-02-04 Thread jsm28 at gcc dot gnu dot org


--- Comment #3 from jsm28 at gcc dot gnu dot org  2009-02-04 21:02 ---
Subject: Bug 35235

Author: jsm28
Date: Wed Feb  4 21:02:42 2009
New Revision: 143940

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=143940
Log:
PR c/35235
* c-typeck.c (build_component_ref): Do not copy qualifiers from
non-lvalue to component.

testsuite:
* gcc.dg/c99-array-lval-8.c: New test.

Added:
branches/c-4_5-branch/gcc/testsuite/gcc.dg/c99-array-lval-8.c
Modified:
branches/c-4_5-branch/gcc/ChangeLog.c45
branches/c-4_5-branch/gcc/c-typeck.c
branches/c-4_5-branch/gcc/testsuite/ChangeLog.c45


-- 


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



[Bug debug/39086] [4.4 Regression] Failing assert in dwarf2out.c:5770 when compiling with -fno-tree-sra

2009-02-04 Thread pinskia at gcc dot gnu dot org


--- Comment #4 from pinskia at gcc dot gnu dot org  2009-02-04 21:14 ---
It fails with 
gcc version 4.4.0 20090116 (experimental) [trunk revision 143440] (GCC) 
But I don't have anything older to try it with on that machine.

It did work with gcc version 4.4.0 20081229 (experimental) [trunk revision
142951] (GCC)  on i386-darwin8.11.

I don't have time right now to figure out if this is really a regression or not
or a reduced testcase but I am going to mark it as a regression so at least
someone will look at it.  I really think it is a regression.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   GCC host triplet|i686-pc-linux-gnu   |
 GCC target triplet||i686-pc-linux-gnu
   Keywords||ice-on-valid-code
Summary|Failing assert in   |[4.4 Regression] Failing
   |dwarf2out.c:5770 when   |assert in dwarf2out.c:5770
   |compiling with -fno-tree-sra|when compiling with -fno-
   ||tree-sra
   Target Milestone|--- |4.4.0


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



[Bug tree-optimization/39100] [4.4 Regression] -fstrict-aliasing miscompilation

2009-02-04 Thread dberlin at dberlin dot org


--- Comment #6 from dberlin at gcc dot gnu dot org  2009-02-04 21:16 ---
Subject: Re:  [4.4 Regression] -fstrict-aliasing 
miscompilation

On Wed, Feb 4, 2009 at 3:59 PM, rguenth at gcc dot gnu dot org
gcc-bugzi...@gcc.gnu.org wrote:


 --- Comment #5 from rguenth at gcc dot gnu dot org  2009-02-04 20:59 
 ---
 On the alias-improvements branch the testcase also fails with
 -O -fdelete-null-pointer-checks, so this is definitely a PTA bug.
 PTA thinks the points-to set for na_5 is

 na_5, is dereferenced, points-to NULL, points-to vars: { nl }

 which would definitely enable deleting the store, as nl is a local variable.

 The constraints that should make na_5 point to NONLOCAL as well are

 h = NONLOCAL
 x = NONLOCAL
 x_1 = x
 *na_5 = x_1
 D.1262_20 = *na_5
 na_21 = D.1262_20 + 32
 na_4 = na_21
 na_5 = na_4

 relevant unifications are

 Unifying x to h
 Unifying na_4 to na_5

Given those constraints, there is no way it will or should point to NONLOCAL.
na_5 doesn't actually point to anything given these constraints (IE
there is no na_5 = something), unless D.1262_20 + 32 points to
something, which it doesn't give the above constraints.

Basically
*a = b
c = *a

Does not imply that c = b if a is empty, which is what is happening
here, AFAICT.


-- 


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



[Bug tree-optimization/39100] [4.4 Regression] -fstrict-aliasing miscompilation

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #7 from rguenth at gcc dot gnu dot org  2009-02-04 21:18 ---
Following do_ds_constraint shows

*na_2 = x_1
nl  -
*na_2 = derefaddrtmp.7
nl  - NULL
*na_2 = x_1
NULL  - ESCAPED NONLOCAL
*na_2 = derefaddrtmp.7
NULL  - NULL

where on the lhs of - we show DELTA and on the rhs we show the rhs solution.
The problem is obviously that DELTA doesn't include nl anymore when the
rhs solution includes NONLOCAL.

We do have a cycle here, can we really do DELTA processing there?  Note
that the constraint graph looks funny to me (but I never looked at them
until now)


-- 


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



[Bug libgomp/39098] FAIL: libgomp.fortran/reduction3.f90

2009-02-04 Thread dave at hiauly1 dot hia dot nrc dot ca


--- Comment #3 from dave at hiauly1 dot hia dot nrc dot ca  2009-02-04 
21:22 ---
Subject: Re:  FAIL: libgomp.fortran/reduction3.f90

 Does it work without -fopenmp?

Yes.

Dave


-- 


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



[Bug bootstrap/39001] lto branch doesn't build

2009-02-04 Thread dnovillo at gcc dot gnu dot org


--- Comment #6 from dnovillo at gcc dot gnu dot org  2009-02-04 21:23 
---

The recent patch only fixes the case for x86_64.  This is still broken on ppc. 
Will try to implement the first suggestion from
http://gcc.gnu.org/ml/gcc/2009-01/msg00074.html

/* confdefs.h.  */

#define PACKAGE_NAME GNU C Runtime Library
#define PACKAGE_TARNAME libgcc
#define PACKAGE_VERSION 1.0
#define PACKAGE_STRING GNU C Runtime Library 1.0
#define PACKAGE_BUGREPORT 
/* end confdefs.h.  */

int
main ()
{

  ;
  return 0;
}

$ /home/dnovillo/lto/native/bld/./gcc/xgcc
-B/home/dnovillo/lto/native/bld/./gcc/
-B/home/dnovillo/lto/native/powerpc64-unknown-linux-gnu/bin/
-B/home/dnovillo/lto/native/powerpc64-unknown-linux-gnu/lib/ -isystem
/home/dnovillo/lto/native/powerpc64-unknown-linux-gnu/include -isystem
/home/dnovillo/lto/native/powerpc64-unknown-linux-gnu/sys-include -c -g -O2   
conftest.c 5
conftest.c:16: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.


-- 


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



[Bug tree-optimization/39100] [4.4 Regression] -fstrict-aliasing miscompilation

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #8 from rguenth at gcc dot gnu dot org  2009-02-04 21:36 ---
The following works (on the branch, with added NONLOCAL = *NONLOCAL
constraint):

ANYTHING = ANYTHING
READONLY = READONLY
ESCAPED = *ESCAPED
ESCAPED = ESCAPED + UNKNOWN
*ESCAPED = NONLOCAL
NONLOCAL = NONLOCAL
NONLOCAL = ESCAPED
NONLOCAL = *NONLOCAL
CALLUSED = *CALLUSED
CALLUSED = CALLUSED + UNKNOWN
INTEGER = ANYTHING
x = NONLOCAL
nl = NULL
n_5 = *x_1
*na_2 = x_1
ESCAPED = x_1
D.1242_6 = *na_2
na_7 = D.1242_6
x_1 = x
x_1 = n_5
na_2 = nl
na_2 = na_7
derefaddrtmp.7 = NULL
*na_2 = derefaddrtmp.7
ESCAPED = NULL

...

NULL = { }
ANYTHING = { ANYTHING }
READONLY = { READONLY }
ESCAPED = same as n_5
NONLOCAL = same as n_5
CALLUSED = { }
INTEGER = { ANYTHING }
x = { NONLOCAL }
nl = { NULL ESCAPED NONLOCAL }
n_5 = { NULL ESCAPED NONLOCAL }
x_1 = same as n_5
na_2 = { NULL ESCAPED NONLOCAL nl }
D.1242_6 = { NULL ESCAPED NONLOCAL }
na_7 = same as D.1242_6
derefaddrtmp.7 = { NULL }


-- 


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



[Bug rtl-optimization/39076] internal compiler error when cross-compiling flac

2009-02-04 Thread ramana dot r at gmail dot com


--- Comment #7 from ramana dot r at gmail dot com  2009-02-04 21:56 ---
(In reply to comment #6)

This has now been committed as revision 143942 in the 4.3 branch - 

Sven, could you check and get back if you still see a problem . If not this bug
can be closed 


-- 


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



[Bug c/35435] [4.2/4.3/4.4 regression] ICE with attribute tls_model in typedef

2009-02-04 Thread jsm28 at gcc dot gnu dot org


--- Comment #3 from jsm28 at gcc dot gnu dot org  2009-02-04 22:22 ---
Testing a patch.


-- 

jsm28 at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |jsm28 at gcc dot gnu dot org
   |dot org |
 Status|NEW |ASSIGNED
   Last reconfirmed|2008-03-15 01:33:17 |2009-02-04 22:22:32
   date||


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



[Bug tree-optimization/38977] [4.4 Regression] bash no longer builds with profile-feedback

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #15 from rguenth at gcc dot gnu dot org  2009-02-04 22:51 
---
It appearanlty does not fix my bash build.  I'm double-checking now.


-- 


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



[Bug tree-optimization/38977] [4.4 Regression] bash no longer builds with profile-feedback

2009-02-04 Thread rguenth at gcc dot gnu dot org


--- Comment #16 from rguenth at gcc dot gnu dot org  2009-02-04 23:16 
---
jobs.c calls fork(), but special_function_p seems to miss that.


-- 


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



[Bug target/36409] Additional instructions in prologue and epilogue.

2009-02-04 Thread ramana dot r at gmail dot com


--- Comment #1 from ramana dot r at gmail dot com  2009-02-04 23:38 ---
4.4.0 with revision id 143499 generates the following code with -O3 , -O2 and
-Os . The same code is generated for 4.3.3 as well 

sub sp, sp, #8
mov r3, sp
mov r2, #0
stmia   r3, {r0, r1}
str r2, [r0, #0]
add sp, sp, #8
bx  lr




Clearly things have gotten worse with an extra stmia being generated in this
case where the argument registers are being saved on the stack with the stmia
instruction. 


-- 

ramana dot r at gmail dot com changed:

   What|Removed |Added

 CC||rearnsha at arm dot com


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



[Bug debug/39086] [4.4 Regression] Failing assert in dwarf2out.c:5770 when compiling with -fno-tree-sra

2009-02-04 Thread hjl dot tools at gmail dot com


--- Comment #5 from hjl dot tools at gmail dot com  2009-02-04 23:54 ---
It is a regression introduced between revision 139502 and revision 139996.
I am doing a binary search on it.


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-02-04 23:54:13
   date||


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



[Bug c++/39099] Local classes cannot be used as template arguments

2009-02-04 Thread paolo dot carlini at oracle dot com


--- Comment #1 from paolo dot carlini at oracle dot com  2009-02-05 00:46 
---
This is not a bug, but Standard conforming behaviour. The next C++ Standard
will be different here.


-- 

paolo dot carlini at oracle dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug c/35435] [4.2/4.3/4.4 regression] ICE with attribute tls_model in typedef

2009-02-04 Thread jsm28 at gcc dot gnu dot org


--- Comment #4 from jsm28 at gcc dot gnu dot org  2009-02-05 01:18 ---
Subject: Bug 35435

Author: jsm28
Date: Thu Feb  5 01:18:02 2009
New Revision: 143948

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=143948
Log:
PR c/35435
* c-common.c (handle_tls_model_attribute): Ignore attribute for
non-VAR_DECLs without checking DECL_THREAD_LOCAL_P.

testsuite:
* gcc.dg/tls/diag-6.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/tls/diag-6.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/c-common.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug inline-asm/39048] gcc 4.4.0 20090131 - Extra underscore hides libgcc's soft-fp functions from Testsuite causing FAILs + naming error in libgcc

2009-02-04 Thread rob1weld at aol dot com


--- Comment #2 from rob1weld at aol dot com  2009-02-05 03:43 ---
(In reply to comment #1)
 You can use following (slightly wrapped...) patch to enable 128bit soft-fp on
 Solaris:
 
Thanks, I'll try that this week (working on a P1).

Please read the ChangeLog:

../gcc_trunk/ChangeLog: * configure.ac: Recognize GNU/kOpenSolaris
(*-*-kopensolaris*-gnu).

../gcc_trunk/ChangeLog: * libtool.m4: Add kfreebsd*-gnu and knetbsd*-gnu.



You might want to change that to allow for the new Targets k*bsd and
kopensolaris (OpenSolaris Kernel with *BSD and OpenSolaris Kernel with 
GNU Libc):

@@ -3058,6 +3058,9 @@
-i[34567]86-*-linux* | x86_64-*-linux*)
+i[34567]86-*-linux* | x86_64-*-linux* *-*-kopensolaris*-gnu
kfreebsd*-gnu* knetbsd*-gnu* x86_64-*kfreebsd*-gnu)


Thanks for the Tip,
Rob


-- 


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



[Bug testsuite/36443] [4.3/4.4 Regression]: HOSTCC doesn't work with installed gcc

2009-02-04 Thread rob1weld at aol dot com


--- Comment #47 from rob1weld at aol dot com  2009-02-05 04:06 ---
(In reply to comment #46)
 As I understand it, the complaint here is that GCC_EXEC_PREFIX being set
 affects HOSTCC, when HOSTCC is itself some other GCC. ...

It is true (for most of us in this thread) that GCC_EXEC_PREFIX is being
set to a value and we agree that it is likely that the value set would NOT
work in all circumstances.

One example is inherently derived from where we see it being set (wrongly),
during make -i check _PRIOR_ to running make install. We (some of us)
can see that the Testsuite Results vary WILDLY (sometimes) depending on the
Installed Gcc versus the Tested Gcc.



Here is an EXTREME example:


On OpenSolaris 2008.11 install gcc version 4.4.0 20090131 trunk revision
143817 ./configured with these options:

../gcc_trunk/configure --enable-languages=ada,c,c++,fortran,java,objc,obj-c++
--enable-shared --disable-static --enable-multilib --enable-decimal-float
--with-long-double-128 --with-included-gettext --enable-stage1-checking
--enable-checking=release --with-tune=k8 --with-cpu=k8 --with-arch=k8
--with-gnu-as --with-as=/usr/local/bin/as --with-gnu-ld
--with-ld=/usr/local/bin/ld 


Now with gcc version 4.4.0 20090131 trunk revision 143817 installed
./configure gcc version 4.4.0 20090204 trunk revision 143918 using
these options:

../gcc_trunk/configure --enable-languages=ada,c,c++,fortran,java,objc,obj-c++
--enable-shared --disable-static --enable-multilib --enable-decimal-float
--with-long-double-128 --with-included-gettext --enable-stage1-checking
--enable-checking=release --with-tune=k8 --with-cpu=k8 --with-arch=k8
--with-gnu-as --with-as=/usr/local/bin/as --without-gnu-ld
--with-ld=/usr/ccs/bin/ld 


Now run gmake and do the Three-Stage Build. DO NOT INSTALL GCC.
Run gmake -i check and save the logs (that you want to compare).

# cd ../gcc_build
# cp gcc/testsuite/gcc/gcc.log gcc/testsuite/gcc/gcc.log.PRE-INSTALL
# cp gcc/testsuite/gnat/gnat.log gcc/testsuite/gnat/gnat.log.PRE-INSTALL
# cp gcc/testsuite/obj-c++/obj-c++.log
gcc/testsuite/obj-c++/obj-c++.log.PRE-INSTALL
# cp gcc/testsuite/g++/g++.log gcc/testsuite/g++/g++.log.PRE-INSTALL
# cp gcc/testsuite/gfortran/gfortran.log
gcc/testsuite/gfortran/gfortran.log.PRE-INSTALL
# cp gcc/testsuite/objc/objc.log gcc/testsuite/objc/objc.log.PRE-INSTALL
# cp gcc/testsuite/ada/acats/acats.log
gcc/testsuite/ada/acats/acats.log.PRE-INSTALL
# cp i386-pc-solaris2.11/libstdc++-v3/testsuite/libstdc++.log
i386-pc-solaris2.11/libstdc++-v3/testsuite/libstdc++.log.PRE-INSTALL
# cp i386-pc-solaris2.11/libgomp/testsuite/libgomp.log
i386-pc-solaris2.11/libgomp/testsuite/libgomp.log.PRE-INSTALL
# cp i386-pc-solaris2.11/libffi/testsuite/libffi.log
i386-pc-solaris2.11/libffi/testsuite/libffi.log.PRE-INSTALL
# cp i386-pc-solaris2.11/libjava/testsuite/libjava.log
i386-pc-solaris2.11/libjava/testsuite/libjava.log.PRE-INSTALL
# cp i386-pc-solaris2.11/libmudflap/testsuite/libmudflap.log
i386-pc-solaris2.11/libmudflap/testsuite/libmudflap.log.PRE-INSTALL


Now Install gcc and then re-run gmake -i check and _sometimes_ you
will get _some_ results that are different (and sometimes you will not).


So let us see what happens when gcc version 4.4.0 20090131 trunk revision
143817 (./configured to use GNU's linker) is used to build gcc version 
4.4.0 20090204 trunk revision 143918 (configured to use Sun's linker):


# ../gcc_trunk/contrib/compare_tests
../gcc_build/gcc/testsuite/gcc/gcc.log.PRE-INSTALL
../gcc_build/gcc/testsuite/gcc/gcc.log | wc -l
   0


It look like the C compiler is OK (it _might_ not be). Lets try C++:


# ../gcc_trunk/contrib/compare_tests
../gcc_build/gcc/testsuite/g++/g++.log.PRE-INSTALL
../gcc_build/gcc/testsuite/g++/g++.log | wc -l
4140

Woah! Broken.


Thanks,
Rob


-- 


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



[Bug middle-end/39101] New: [4.4 Regression] Null pointer dereference in delay slot

2009-02-04 Thread danglin at gcc dot gnu dot org
...
mkdir -p ada/bldtools/sinfo
rm -f ada/bldtools/sinfo/sinfo.ads ada/bldtools/sinfo/xsinfo.adb
cp -p ../../gcc/gcc/ada/sinfo.ads ../../gcc/gcc/ada/xsinfo.adb
ada/bldtools/sinfo
(cd ada/bldtools/sinfo  gnatmake -q xsinfo  ./xsinfo ../../sinfo.h )
/bin/sh: line 1: 13373 Segmentation fault  (core dumped) ./xsinfo
../../sinfo.h
make[3]: *** [ada/sinfo.h] Error 139

d...@hiauly6:~/gnu/gcc-4.4/objdir/gcc/ada/bldtools/sinfo$ gdb -c core xsinfo
GNU gdb (GDB) 6.8.50.20080917-cvs
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type show copying
and show warranty for details.
This GDB was configured as hppa-unknown-linux-gnu.
For bug reporting instructions, please see:
http://www.gnu.org/software/gdb/bugs/...
BFD: Warning: /home/dave/gnu/gcc-4.4/objdir/gcc/ada/bldtools/sinfo/core is
truncated: expected core file size = 1658880, found: 1601536.
Reading symbols from
/home/dave/gnu/gcc-4.4/objdir/prev-gcc/libgcc_s.so.4...done.
Loaded symbols for /home/dave/gnu/gcc-4.4/objdir/./prev-gcc/libgcc_s.so.4
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld.so.1...done.
Loaded symbols for /lib/ld.so.1
Core was generated by `./xsinfo ../../sinfo.h'.
Program terminated with signal 11, Segmentation fault.
#0  0x403f15a8 in _Unwind_Find_FDE (pc=0x403ef63b, bases=0xfb283efc)
at ../../../gcc/libgcc/../gcc/unwind-dw2-fde.c:979
979 ../../../gcc/libgcc/../gcc/unwind-dw2-fde.c: No such file or directory.
in ../../../gcc/libgcc/../gcc/unwind-dw2-fde.c
(gdb) bt
#0  0x403f15a8 in _Unwind_Find_FDE (pc=0x403ef63b, bases=0xfb283efc)
at ../../../gcc/libgcc/../gcc/unwind-dw2-fde.c:979
#1  0x403ee128 in uw_frame_state_for (context=0xfb283d88, fs=0xfb28454c)
at ../../../gcc/libgcc/../gcc/unwind-dw2.c:1129
#2  0x403eeb68 in uw_init_context_1 (context=0xfb283d88, outer_cfa=0xfb283d80, 
outer_ra=0x1cdc3) at ../../../gcc/libgcc/../gcc/unwind-dw2.c:1435
#3  0x403ef63c in _Unwind_RaiseException (exc=0x76ec0)
at ../../../gcc/libgcc/../gcc/unwind.inc:93
#4  0x0001cdc0 in ada.exceptions.exception_propagation.propagate_exception (
e=value optimized out, from_signal_handler=value optimized out)
at a-exexpr.adb:588
#5  0x0001ce3c in __gnat_raise_nodefer_with_msg (e=0x403ef63b)
at a-except.adb:817
#6  0x0001d4c4 in __gnat_raise_exception (e=0x6d120, 
message=value optimized out) at a-except.adb:856
#7  0x0001ac3c in xsinfo__getline___1032 ()
#8  0x0001a2cc in _ada_xsinfo ()
(gdb) disass 0x403f1598 0x403f15b8
Dump of assembler code from 0x403f1598 to 0x403f15b8:
0x403f1598 _Unwind_Find_FDE+92:   addil L%0,r19,r1
0x403f159c _Unwind_Find_FDE+96:   ldw cc(r1),r10
0x403f15a0 _Unwind_Find_FDE+100:  ldw 0(r10),r6
0x403f15a4 _Unwind_Find_FDE+104:  cmpib, 0,r6,0x403f15bc
_Unwind_Find_FDE+128
0x403f15a8 _Unwind_Find_FDE+108:  ldw 0(r6),ret0
0x403f15ac _Unwind_Find_FDE+112:  b,l 0x403f1684
_Unwind_Find_FDE+328,r0
0x403f15b0 _Unwind_Find_FDE+116:  addil L%0,r19,r1
0x403f15b4 _Unwind_Find_FDE+120:  cmpib,= 0,r6,0x403f1680
_Unwind_Find_FDE+324
End of assembler dump.
(gdb) p/x $r6
$1 = 0x0
(gdb) p/x *(int *)$r10
$2 = 0x0


-- 
   Summary: [4.4 Regression] Null pointer dereference in delay slot
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: danglin at gcc dot gnu dot org
 GCC build triplet: hppa-unknown-linux-gnu
  GCC host triplet: hppa-unknown-linux-gnu
GCC target triplet: hppa-unknown-linux-gnu


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



[Bug middle-end/39101] [4.4 Regression] Null pointer dereference in delay slot

2009-02-04 Thread danglin at gcc dot gnu dot org


--- Comment #1 from danglin at gcc dot gnu dot org  2009-02-05 04:22 ---
This occurs in stage2 with

d...@hiauly6:~/gnu/gcc-4.4/objdir/prev-gcc$ ./xgcc -B./ -v
Reading specs from ./specs
Target: hppa-linux
Configured with: ../gcc/configure --with-gnu-as --with-gnu-ld --enable-shared
--prefix=/home/dave/opt/gnu/gcc/gcc-4.4.0
--with-local-prefix=/home/dave/opt/gnu --enable-threads=posix
--enable-__cxa_atexit --build=hppa-linux --enable-clocale=gnu
--enable-java-gc=boehm --enable-java-awt=xlib
--enable-languages=c,c++,objc,fortran,obj-c++,java,ada
Thread model: posix
gcc version 4.4.0 20090205 (experimental) [trunk revision 143949] (GCC) 


-- 


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



[Bug middle-end/39101] [4.4 Regression] Null pointer dereference in delay slot

2009-02-04 Thread danglin at gcc dot gnu dot org


--- Comment #2 from danglin at gcc dot gnu dot org  2009-02-05 04:29 ---
Bootstrap is also broken on hppa64-hp-hpux11.11:

...
/test/gnu/gcc/objdir/./prev-gcc/xgcc -B/test/gnu/gcc/objdir/./prev-gcc/
-B/opt/g
nu64/gcc/gcc-4.4.0/hppa64-hp-hpux11.11/bin/  -g -O2 -DIN_GCC   -W -Wall
-Wwrite-
strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual
-Wold-style-definit
ion -Wc++-compat -Wmissing-format-attribute -pedantic -Wno-long-long
-Wno-variad
ic-macros -Wno-overlength-strings -Werror -fno-common  -DHAVE_CONFIG_H
-DGENERAT
OR_FILE  -o build/gengenrtl \
build/gengenrtl.o build/errors.o .././libiberty/libiberty.a
build/genmodes -m  tmp-min-modes.c
/bin/sh: 12659 Memory fault(coredump)
make[3]: *** [s-modes-m] Error 139


-- 


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



[Bug tree-optimization/39100] [4.4 Regression] -fstrict-aliasing miscompilation

2009-02-04 Thread dberlin at gcc dot gnu dot org


--- Comment #9 from dberlin at gcc dot gnu dot org  2009-02-05 07:10 ---
Subject: Bug 39100

Author: dberlin
Date: Thu Feb  5 07:09:44 2009
New Revision: 143951

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=143951
Log:
2009-02-05  Daniel Berlin  dber...@dberlin.org
Richard Guenther  rguent...@suse.de

PR tree-optimization/39100
* tree-ssa-structalias.c (do_ds_constraint): Actually do what the
comment says and add edges.


Added:
trunk/gcc/testsuite/gcc.c-torture/execute/pr39100.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-structalias.c


-- 


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