[Bug rtl-optimization/40679] New: Optimizer handles loops with volatiles and post-incr. wrong

2009-07-08 Thread bastian dot schick at sciopta dot com
If the following code is compiled with -Os for ARM or ColdFire, the exit
condition for the loop is removed.
Replacing *tbl++ with tbl[i] or using unsigned long instead of volatile
unsigned long does not show the problem.
I suspect the post-increment optimization to be the problem, because the
PowerPC version does not show the problem.
Also: Using a different start-address for tbl, does not show the problem.

The problem has been reported also for 4.4.0.

typedef volatile unsigned long __vu32;
void bs()
{
int i;
__vu32 *tbl = (__vu32 *)0xff00;
for(i = 0; i < 64; ++i){
//->  tbl[i] = (__vu32)10;
  *tbl++ = (__vu32)10;
}
}
Cmd-line: arm-none-eabi-gcc -S -Os t.c
Output: 
.cpu arm7tdmi
.fpu softvfp
.eabi_attribute 20, 1
.eabi_attribute 21, 1
.eabi_attribute 23, 3
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 1
.eabi_attribute 30, 4
.eabi_attribute 18, 4
.file   "t.c"
.text
.align  2
.global bs
.type   bs, %function
bs:
@ Function supports interworking.
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
mvn r2, #255
.L2:
mov r3, #10
str r3, [r2], #4
b   .L2
.size   bs, .-bs
.ident  "GCC: (Sourcery G++ Lite 2008q3-39) 4.3.2"


-- 
   Summary: Optimizer handles loops with volatiles and post-incr.
wrong
   Product: gcc
   Version: 4.3.2
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bastian dot schick at sciopta dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-mingw32
GCC target triplet: i686-mingw32


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



[Bug fortran/40678] Using a function as variable: ICE with 4.3, accepts invalid with 4.4/4.5

2009-07-08 Thread burnus at gcc dot gnu dot org


--- Comment #1 from burnus at gcc dot gnu dot org  2009-07-08 07:36 ---
I can reproduce the ICE with 4.1, 4.2 and 4.3 - but it no longer gives an ICE
with 4.4 or 4.5.

 * * *

However, there is also a bug in 4.4: It simply compiles.


Expected: Either an error of the form (NAG f95)

Error: aa.f90, line 6: Implicit type for SUNSHINE
   detected at SUNSHINE@

or -- better (or additionally) -- of the form

error #6423: This name has already been used as an external function name.  
[SUNSHINE]

 * * *

In 4.3.4 the following assert fails:
  /* Procedure actual arguments.  */
  else if (sym->attr.flavor == FL_PROCEDURE
   && se->expr != current_function_decl)
{
  gcc_assert (se->want_pointer);


-- 

burnus at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Keywords||accepts-invalid, diagnostic,
   ||ice-on-invalid-code
   Last reconfirmed|-00-00 00:00:00 |2009-07-08 07:36:28
   date||
Summary|ICE on invalid code,|Using a function as
   |gfc_conv_variable   |variable: ICE with 4.3,
   ||accepts invalid with 4.4/4.5


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



[Bug fortran/40675] Support -fnosign-zero for SIGN intrinsic for Fortran 77 compatibility

2009-07-08 Thread burnus at gcc dot gnu dot org


--- Comment #10 from burnus at gcc dot gnu dot org  2009-07-08 08:00 ---
I think one can consider supporting non-signed zeros as extension, similar to
ifort which has:
-assume nominus0The compiler uses Fortran 90/77 standard
semantics in the SIGN intrinsic to treat
-0.0 and +0.0 as 0.0, and writes a value
of 0.0 with no sign on formatted output.

(Default as of ifort 11.1 is the F77/F90 behaviour while gfortran defaults to
the F95/F2003/F2008 behaviour.)

Currently, gfortran only has such a flag for I/O and not for the sign
intrinsic:
   -fsign-zero
   When writing zero values, show the negative sign if the sign
   bit is set.  "fno-sign-zero" does not print the negative
   sign of zero values for compatibility with F77.  Default
   behavior is to show the negative sign.


I think one can extends this to the SIGN intrinsic. One needs to modify
("if (gfc_option.flag_sign_zero)") trans-intrinsic.c's gfc_conv_intrinsic_sign.

Currently,
  test = sign(x, y)
produces (-fdump-tree-original)
  test = __builtin_copysignf (x, y)
that would have to be replaced by
  test = (y == 0) ? abs(x) : __builtin_copysignf (x, y)

This can be further optimized by using MODE_HAS_SIGNED_ZEROS (or
HONOR_SIGNED_ZEROS?).


Actually, one also needs to modify simplify.c's gfc_simplify_sign: Either -0.0
is not correctly handled or the comment is wrong.


-- 

burnus at gcc dot gnu dot org changed:

   What|Removed |Added

   Severity|normal  |enhancement
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
  GCC build triplet|x86_64-unknown-linux-gnu|
   GCC host triplet|x86_64-unknown-linux-gnu|
 GCC target triplet|x86_64-unknown-linux-gnu|
   Last reconfirmed|-00-00 00:00:00 |2009-07-08 08:00:23
   date||
Summary|sign intrinsic fails for|Support -fnosign-zero for
   |value of 0.0|SIGN intrinsic for Fortran
   ||77 compatibility


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



Re: [Bug rtl-optimization/40679] New: Optimizer handles loops with volatiles and post-incr. wrong

2009-07-08 Thread Andrew Pinski



Sent from my iPhone

On Jul 8, 2009, at 12:32 AM, "bastian dot schick at sciopta dot com" > wrote:


If the following code is compiled with -Os for ARM or ColdFire, the  
exit

condition for the loop is removed.
Replacing *tbl++ with tbl[i] or using unsigned long instead of  
volatile

unsigned long does not show the problem.
I suspect the post-increment optimization to be the problem, because  
the

PowerPC version does not show the problem.
Also: Using a different start-address for tbl, does not show the  
problem.


It looks more like a wrapping issue. 4*64 = 256. So we go from -256u  
to 0 which causes wrapping of the pointer which is undefined and  
therefor I think gcc is doing the correct thing (If got my numbers  
correct).





The problem has been reported also for 4.4.0.

typedef volatile unsigned long __vu32;
void bs()
{
   int i;
   __vu32 *tbl = (__vu32 *)0xff00;
   for(i = 0; i < 64; ++i){
//->  tbl[i] = (__vu32)10;
 *tbl++ = (__vu32)10;
   }
}
Cmd-line: arm-none-eabi-gcc -S -Os t.c
Output:
   .cpu arm7tdmi
   .fpu softvfp
   .eabi_attribute 20, 1
   .eabi_attribute 21, 1
   .eabi_attribute 23, 3
   .eabi_attribute 24, 1
   .eabi_attribute 25, 1
   .eabi_attribute 26, 1
   .eabi_attribute 30, 4
   .eabi_attribute 18, 4
   .file   "t.c"
   .text
   .align  2
   .global bs
   .type   bs, %function
bs:
   @ Function supports interworking.
   @ args = 0, pretend = 0, frame = 0
   @ frame_needed = 0, uses_anonymous_args = 0
   @ link register save eliminated.
   mvn r2, #255
.L2:
   mov r3, #10
   str r3, [r2], #4
   b   .L2
   .size   bs, .-bs
   .ident  "GCC: (Sourcery G++ Lite 2008q3-39) 4.3.2"


--
  Summary: Optimizer handles loops with volatiles and post- 
incr.

   wrong
  Product: gcc
  Version: 4.3.2
   Status: UNCONFIRMED
 Severity: major
 Priority: P3
Component: rtl-optimization
   AssignedTo: unassigned at gcc dot gnu dot org
   ReportedBy: bastian dot schick at sciopta dot com
GCC build triplet: i686-pc-linux-gnu
 GCC host triplet: i686-mingw32
GCC target triplet: i686-mingw32


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



[Bug rtl-optimization/40679] Optimizer handles loops with volatiles and post-incr. wrong

2009-07-08 Thread pinskia at gmail dot com


--- Comment #1 from pinskia at gmail dot com  2009-07-08 08:13 ---
Subject: Re:   New: Optimizer handles loops with volatiles and post-incr. wrong



Sent from my iPhone

On Jul 8, 2009, at 12:32 AM, "bastian dot schick at sciopta dot com"
 wrote:

> If the following code is compiled with -Os for ARM or ColdFire, the  
> exit
> condition for the loop is removed.
> Replacing *tbl++ with tbl[i] or using unsigned long instead of  
> volatile
> unsigned long does not show the problem.
> I suspect the post-increment optimization to be the problem, because  
> the
> PowerPC version does not show the problem.
> Also: Using a different start-address for tbl, does not show the  
> problem.

It looks more like a wrapping issue. 4*64 = 256. So we go from -256u  
to 0 which causes wrapping of the pointer which is undefined and  
therefor I think gcc is doing the correct thing (If got my numbers  
correct).


>
> The problem has been reported also for 4.4.0.
>
> typedef volatile unsigned long __vu32;
> void bs()
> {
>int i;
>__vu32 *tbl = (__vu32 *)0xff00;
>for(i = 0; i < 64; ++i){
> //->  tbl[i] = (__vu32)10;
>  *tbl++ = (__vu32)10;
>}
> }
> Cmd-line: arm-none-eabi-gcc -S -Os t.c
> Output:
>.cpu arm7tdmi
>.fpu softvfp
>.eabi_attribute 20, 1
>.eabi_attribute 21, 1
>.eabi_attribute 23, 3
>.eabi_attribute 24, 1
>.eabi_attribute 25, 1
>.eabi_attribute 26, 1
>.eabi_attribute 30, 4
>.eabi_attribute 18, 4
>.file   "t.c"
>.text
>.align  2
>.global bs
>.type   bs, %function
> bs:
>@ Function supports interworking.
>@ args = 0, pretend = 0, frame = 0
>@ frame_needed = 0, uses_anonymous_args = 0
>@ link register save eliminated.
>mvn r2, #255
> .L2:
>mov r3, #10
>str r3, [r2], #4
>b   .L2
>.size   bs, .-bs
>.ident  "GCC: (Sourcery G++ Lite 2008q3-39) 4.3.2"
>
>
> -- 
>   Summary: Optimizer handles loops with volatiles and post- 
> incr.
>wrong
>   Product: gcc
>   Version: 4.3.2
>Status: UNCONFIRMED
>  Severity: major
>  Priority: P3
> Component: rtl-optimization
>AssignedTo: unassigned at gcc dot gnu dot org
>ReportedBy: bastian dot schick at sciopta dot com
> GCC build triplet: i686-pc-linux-gnu
>  GCC host triplet: i686-mingw32
> GCC target triplet: i686-mingw32
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40679
>


-- 


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



[Bug target/40677] flag -mmultiple is ignored

2009-07-08 Thread rguenth at gcc dot gnu dot org


--- Comment #3 from rguenth at gcc dot gnu dot org  2009-07-08 08:21 ---
patches should be sent to gcc-patc...@gcc.gnu.org with a changelog entry
and a note how it was tested.


-- 


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



[Bug rtl-optimization/40679] Optimizer handles loops with volatiles and post-incr. wrong

2009-07-08 Thread bastian dot schick at sciopta dot com


--- Comment #2 from bastian dot schick at sciopta dot com  2009-07-08 08:24 
---
(In reply to comment #1)
> 
> Sent from my iPhone

Oh, dude (which one :-)

> On Jul 8, 2009, at 12:32 AM, "bastian dot schick at sciopta dot com"
>   > wrote:
> 
> > If the following code is compiled with -Os for ARM or ColdFire, the  
> > exit
> > condition for the loop is removed.
> > Replacing *tbl++ with tbl[i] or using unsigned long instead of  
> > volatile
> > unsigned long does not show the problem.
> > I suspect the post-increment optimization to be the problem, because  
> > the
> > PowerPC version does not show the problem.
> > Also: Using a different start-address for tbl, does not show the  
> > problem.
> 
> It looks more like a wrapping issue. 4*64 = 256. So we go from -256u  
> to 0 which causes wrapping of the pointer which is undefined and  

If so, it should not be used, but it seems to be a new optimization as 3.4.4
does not use it.

> therefor I think gcc is doing the correct thing (If got my numbers  
> correct).

Replacing *tbl++ by tbl[i] gives this ARM code:
.L2:
mov r3, #10
str r3, [r2], #4
cmp r2, #0
bne .L2
bx  lr

See, gcc knows about the wrapping but still the *tbl++ version misses the
end-condition which is the bug.

Addenum: x86-gcc 4.3.3 (openSUSE 10.0) has the same problem.

Compiling with -O, gives correct code with *tbl++ :

.L2:
mov r3, #10
str r3, [r2], #4
cmp r2, #0
bne .L2
bx  lr


-- 

bastian dot schick at sciopta dot com changed:

   What|Removed |Added

 CC||bastian dot schick at
   ||sciopta dot com


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



[Bug tree-optimization/40676] [4.5 Regression] internal compiler error: verify_ssa error: definition in block 5 does not dominate use in block 7

2009-07-08 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2009-07-08 08:25 ---
Confirmed.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-07-08 08:25:08
   date||


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



[Bug rtl-optimization/40679] Optimizer handles loops with volatiles and post-incr. wrong

2009-07-08 Thread ramana at gcc dot gnu dot org


--- Comment #3 from ramana at gcc dot gnu dot org  2009-07-08 08:49 ---
On trunk with -fno-tree-vrp I see the correct code being generated. 

bs:
@ Function supports interworking.
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
mvn r3, #255
mov r2, #10
.L2:
str r2, [r3], #4
cmp r3, #0
bne .L2
bx  lr


-- 


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



[Bug rtl-optimization/40679] Optimizer handles loops with volatiles and post-incr. wrong

2009-07-08 Thread bastian dot schick at sciopta dot com


--- Comment #4 from bastian dot schick at sciopta dot com  2009-07-08 09:06 
---
(In reply to comment #3)
> On trunk with -fno-tree-vrp I see the correct code being generated. 

It seems to be related to Bug #30785 (test for null pointer).


-- 


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



[Bug lto/39003] internal compiler error: in output_parm_decl, at lto-function-out.c:2652

2009-07-08 Thread rubidium at openttd dot org


--- Comment #3 from rubidium at openttd dot org  2009-07-08 09:12 ---
I cannot reproduce this error anymore in gcc-lto (lto merged with rev 149291)
4.5.0 20090706 (experimental) revision 149340.

However... I don't have the setup I've ran the previous test on, as such I have
build it with another compiler for another platform (x86_64).

On the other hand I'm hitting another internal compiler error in
expand_expr_real_1, at expr.c:7382. But I'm not sure whether this is trunk or
lto; I'm recompiling trunk right now though that takes a while. I'll open a new
bug report for lto if it's really lto only.


-- 


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



[Bug tree-optimization/40679] Optimizer handles loops with volatiles and post-incr. wrong

2009-07-08 Thread ramana at gcc dot gnu dot org


--- Comment #5 from ramana at gcc dot gnu dot org  2009-07-08 09:12 ---
Richi,

Can you comment on this one ?

Ramana


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu dot
   ||org
  Component|rtl-optimization|tree-optimization


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



[Bug target/40680] New: extra register move

2009-07-08 Thread carrot at google dot com
Compile the attached source code with options -Os -mthumb -march=armv5te, gcc
generates:

push{r3, r4, r5, lr}
.LCFI0:
mov r4, r0
ldr r0, [r0]
bl  _Z3foof
ldr r1, [r4, #4]
@ sp needed for prologue
add r5, r0, #0
bl  _Z3barfi
mov r0, r5   // *
bl  _Z3fffi  // *
mov r4, r5   // *
mov r5, r0   // *
mov r0, r4   // *
bl  _Z3fffi  // *
mov r1, r0   // *
mov r0, r5   // *
bl  _Z3setii
pop {r3, r4, r5, pc}

There is an obvious extra register move (mov r4, r5) in the marked section, a
better code sequence of the marked section could be:

mov r0, r5
bl  _Z3fffi
mov r4, r0
mov r0, r5
bl  _Z3fffi
mov r1, r0
mov r0, r4

The marked code sequence before scheduler is:

mov r4, r5
mov r0, r5
bl  _Z3fffi
mov r5, r0
mov r0, r4
bl  _Z3fffi
mov r1, r0
mov r0, r5

The instruction (mov r4, r5 ) is generated by register allocator. I don't know
why RA generates this instruction.


-- 
   Summary: extra register move
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: carrot at google dot com
 GCC build triplet: i686-linux
  GCC host triplet: i686-linux
GCC target triplet: arm-eabi


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



[Bug target/40680] extra register move

2009-07-08 Thread carrot at google dot com


--- Comment #1 from carrot at google dot com  2009-07-08 09:36 ---
Created an attachment (id=18155)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18155&action=view)
test case


-- 


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



[Bug fortran/40591] Procedure(interface): Rejected if interface is indirectly hostassociated

2009-07-08 Thread pault at gcc dot gnu dot org


--- Comment #3 from pault at gcc dot gnu dot org  2009-07-08 09:48 ---
Well. I suppose that I should accept the bug :-)

I will commit the fix to 4.4 over the weekend, so please try to test it to
destruction on 4.5.

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |pault at gcc dot gnu dot org
   |dot org |
 Status|NEW |ASSIGNED
   Last reconfirmed|2009-07-07 05:01:00 |2009-07-08 09:48:15
   date||


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



[Bug tree-optimization/40679] Optimizer handles loops with volatiles and post-incr. wrong

2009-07-08 Thread mikpe at it dot uu dot se


--- Comment #6 from mikpe at it dot uu dot se  2009-07-08 09:59 ---
(In reply to comment #2)
> Replacing *tbl++ by tbl[i] gives this ARM code:
> .L2:
> mov r3, #10
> str r3, [r2], #4
> cmp r2, #0
> bne .L2
> bx  lr
> 
> See, gcc knows about the wrapping but still the *tbl++ version misses the
> end-condition which is the bug.

The difference is that in the tbl[i] version there will not be a wraparound at
runtime because &tbl[i] for i == 64 is never computed, while in the *tbl++
version the iteration with i == 63 will do tbl++ moving tbl from -4U to 0
before the loop termination test, which triggers undefined behaviour.

And the issue is not ARM, the same infinite loop occurs for e.g. target i686.


-- 


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



[Bug target/40680] extra register move

2009-07-08 Thread ramana at gcc dot gnu dot org


--- Comment #2 from ramana at gcc dot gnu dot org  2009-07-08 10:00 ---
However Confirmed with trunk for Thumb1. The extra move doesn't appear for ARM
or Thumb2 . 

The code below is what is generated for Thumb2 or ARM .

.type   _ZN3CCC5funcAEv, %function
_ZN3CCC5funcAEv:
.fnstart
.LFB2:
.cfi_startproc
.cfi_personality 0x0,__gxx_personality_v0
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
push{r3, r4, r5, lr}@
.save {r3, r4, r5, lr}
.cfi_def_cfa_offset 16
mov r5, r0  @ this, this
.cfi_offset 14, -4
.cfi_offset 5, -8
.cfi_offset 4, -12
.cfi_offset 3, -16
ldr r0, [r0, #0]@ float @, .fRadius
bl  _Z3foof @
ldr r1, [r5, #4]@, .flag
mov r4, r0  @ radius,
bl  _Z3barfi@
mov r0, r4  @, data$fSignBitInt
bl  _Z3fffi @
mov r5, r0  @ D.1797,
mov r0, r4  @, data$fSignBitInt
bl  _Z3fffi @
mov r1, r0  @ D.1803,
mov r0, r5  @, D.1797
bl  _Z3setii@
pop {r3, r4, r5, pc}
.cfi_endproc


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-07-08 10:00:06
   date||


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



[Bug bootstrap/40651] bootstrap error on arm-linux-gnueabi: segfault in next_const_call_expr_arg

2009-07-08 Thread ramana at gcc dot gnu dot org


--- Comment #1 from ramana at gcc dot gnu dot org  2009-07-08 10:01 ---
Can you attach a pre-processed file for someone to look at this ? This bug
report seems incomplete. 


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING


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



[Bug tree-optimization/40679] Optimizer handles loops with volatiles and post-incr. wrong

2009-07-08 Thread rguenth at gcc dot gnu dot org


--- Comment #7 from rguenth at gcc dot gnu dot org  2009-07-08 10:10 ---
Indeed the overflow invokes undefined behavior.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug c++/31397] Useful compiler warning missing (virtual functions in derived classes used without 'virtual')

2009-07-08 Thread Thomas dot Lange at sun dot com


--- Comment #3 from Thomas dot Lange at sun dot com  2009-07-08 10:23 
---
(In reply to comment #2)
> why don't you add a 'virtual'
> to your destructor and int f(int) functions, because they are implicitly
> virtual anyway'.

That is exactly the point this is about!
I want a way so the compiler enforces to add 'virtual' to ~B and B::f, and thus
help to write better understandable code.

This is in order for large derived trees or a big source code. It is for the
one looking at the declaration (and not anymore or not at all familiar with the
code!) to not miss that those functions are virtual.


-- 


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



[Bug c++/31397] Useful compiler warning missing (virtual functions in derived classes used without 'virtual')

2009-07-08 Thread Thomas dot Lange at sun dot com


--- Comment #4 from Thomas dot Lange at sun dot com  2009-07-08 10:30 
---
Side note: Of course having such an option is much more useful where the
declaration of class A and B are in different header files and probably even in
different modules. 
(For example: such cases are often found in the OpenOffice.org source code...
^_-)


-- 


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



[Bug lto/40681] New: [ICE] expand_expr_real_1, at expr.c:7382

2009-07-08 Thread rubidium at openttd dot org
Bug in lto revision 149340 (gcc 4.5 revision 149291 works fine)

The used command line:
/usr/local/lto/bin/g++-lto -v -save-temps -O2 -fomit-frame-pointer -flto -DUNIX
-Wall -Wno-multichar -Wsign-compare -Wundef -Wwrite-strings -Wpointer-arith
-Wno-uninitialized -W -Wno-unused-parameter -Wformat=2 -Wredundant-decls
-fno-strict-aliasing -Wcast-qual -fno-strict-overflow -DWITH_SDL
-I/usr/include/SDL  -D_REENTRANT -DWITH_ZLIB -D_SQ64
-I/home/rubidium/openttd/special/lto/src/3rdparty/squirrel/include -DWITH_PNG 
-I/usr/include/libpng12  -DWITH_FONTCONFIG-DWITH_FREETYPE
-I/usr/include/freetype2  -DWITH_ICU -D_REENTRANT -I/usr/include 
-DENABLE_NETWORK -DWITH_PERSONAL_DIR -DPERSONAL_DIR=\".openttd\"
-DGLOBAL_DATA_DIR=\"/usr/local/share/games/openttd\" -I
/home/rubidium/openttd/special/lto/objs/release -I
/home/rubidium/openttd/special/lto/objs/lang -c -o misc_gui.o
/home/rubidium/openttd/special/lto/src/misc_gui.cpp

The output of the above line:
Using built-in specs.
COLLECT_GCC=/usr/local/lto/bin/g++-lto
COLLECT_LTO_WRAPPER=/usr/local/lto/libexec/gcc/x86_64-unknown-linux-gnu/4.5.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../lto/configure --program-suffix=-lto --prefix=/usr/local/lto
--enable-languages=c,c++ --enable-lto --enable-threads
Thread model: posix
gcc version 4.5.0 20090706 (experimental) (lto merged with rev 149291)
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O2' '-fomit-frame-pointer' '-flto'
'-DUNIX' '-Wall' '-Wno-multichar' '-Wsign-compare' '-Wundef' '-Wwrite-strings'
'-Wpointer-arith' '-Wno-uninitialized' '-W' '-Wno-unused-parameter'
'-Wformat=2' '-Wredundant-decls' '-fno-strict-aliasing' '-Wcast-qual'
'-fno-strict-overflow' '-DWITH_SDL' '-I/usr/include/SDL' '-D_REENTRANT'
'-DWITH_ZLIB' '-D_SQ64'
'-I/home/rubidium/openttd/special/lto/src/3rdparty/squirrel/include'
'-DWITH_PNG' '-I/usr/include/libpng12' '-DWITH_FONTCONFIG' '-DWITH_FREETYPE'
'-I/usr/include/freetype2' '-DWITH_ICU' '-D_REENTRANT' '-I/usr/include'
'-DENABLE_NETWORK' '-DWITH_PERSONAL_DIR' '-DPERSONAL_DIR=".openttd"'
'-DGLOBAL_DATA_DIR="/usr/local/share/games/openttd"' '-I'
'/home/rubidium/openttd/special/lto/objs/release' '-I'
'/home/rubidium/openttd/special/lto/objs/lang' '-c' '-o' 'misc_gui.o'
'-shared-libgcc' '-mtune=generic'
 /usr/local/lto/libexec/gcc/x86_64-unknown-linux-gnu/4.5.0/cc1plus -E -quiet -v
-I/usr/include/SDL
-I/home/rubidium/openttd/special/lto/src/3rdparty/squirrel/include
-I/usr/include/libpng12 -I/usr/include/freetype2 -I/usr/include -I
/home/rubidium/openttd/special/lto/objs/release -I
/home/rubidium/openttd/special/lto/objs/lang -D_GNU_SOURCE -DUNIX -DWITH_SDL
-D_REENTRANT -DWITH_ZLIB -D_SQ64 -DWITH_PNG -DWITH_FONTCONFIG -DWITH_FREETYPE
-DWITH_ICU -D_REENTRANT -DENABLE_NETWORK -DWITH_PERSONAL_DIR
-DPERSONAL_DIR=".openttd" -DGLOBAL_DATA_DIR="/usr/local/share/games/openttd"
/home/rubidium/openttd/special/lto/src/misc_gui.cpp -mtune=generic -Wall
-Wno-multichar -Wsign-compare -Wundef -Wwrite-strings -Wpointer-arith
-Wno-uninitialized -W -Wno-unused-parameter -Wformat=2 -Wredundant-decls
-Wcast-qual -fomit-frame-pointer -flto -fno-strict-aliasing
-fno-strict-overflow -O2 -fpch-preprocess -o misc_gui.ii
ignoring nonexistent directory
"/usr/local/lto/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../x86_64-unknown-linux-gnu/include"
ignoring duplicate directory "/usr/include"
  as it is a non-system directory that duplicates a system directory
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/SDL
 /home/rubidium/openttd/special/lto/src/3rdparty/squirrel/include
 /usr/include/libpng12
 /usr/include/freetype2
 /home/rubidium/openttd/special/lto/objs/release
 /home/rubidium/openttd/special/lto/objs/lang

/usr/local/lto/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0

/usr/local/lto/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/x86_64-unknown-linux-gnu

/usr/local/lto/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/../../../../include/c++/4.5.0/backward
 /usr/local/include
 /usr/local/lto/include
 /usr/local/lto/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/include
 /usr/local/lto/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/include-fixed
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O2' '-fomit-frame-pointer' '-flto'
'-DUNIX' '-Wall' '-Wno-multichar' '-Wsign-compare' '-Wundef' '-Wwrite-strings'
'-Wpointer-arith' '-Wno-uninitialized' '-W' '-Wno-unused-parameter'
'-Wformat=2' '-Wredundant-decls' '-fno-strict-aliasing' '-Wcast-qual'
'-fno-strict-overflow' '-DWITH_SDL' '-I/usr/include/SDL' '-D_REENTRANT'
'-DWITH_ZLIB' '-D_SQ64'
'-I/home/rubidium/openttd/special/lto/src/3rdparty/squirrel/include'
'-DWITH_PNG' '-I/usr/include/libpng12' '-DWITH_FONTCONFIG' '-DWITH_FREETYPE'
'-I/usr/include/freetype2' '-DWITH_ICU' '-D_REENTRANT' '-I/usr/include'
'-DENABLE_NETWORK' '-DWITH_PERSONAL_DIR' '-DPERSONAL_DIR=".openttd"'
'-DGLOBAL_DATA_DIR="/usr/local/share/games/openttd"' '-I'
'/home/rubidium/openttd/special/lto/objs/release' '-I

[Bug lto/40681] [ICE] expand_expr_real_1, at expr.c:7382

2009-07-08 Thread rubidium at openttd dot org


--- Comment #1 from rubidium at openttd dot org  2009-07-08 10:42 ---
Created an attachment (id=18156)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18156&action=view)
The .ii file of save-temps


-- 


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



[Bug other/40458] gcc flavours

2009-07-08 Thread hp at gcc dot gnu dot org


--- Comment #6 from hp at gcc dot gnu dot org  2009-07-08 10:47 ---
(In reply to comment #0)
If it's just about the version, perhaps you can make -V working again.
Requires a working --enable-version-specific-runtime-libs of course. :)


-- 


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



[Bug other/40458] gcc flavours

2009-07-08 Thread hp at gcc dot gnu dot org


--- Comment #7 from hp at gcc dot gnu dot org  2009-07-08 10:49 ---
(In reply to comment #6)
> If it's just about the version, perhaps you can make -V working again.

Oh same version.  Change the above to "make -b working again".


-- 


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



[Bug target/40603] unnecessary conversion from unsigned byte load to signed byte load

2009-07-08 Thread ramana at gcc dot gnu dot org


-- 

ramana at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-07-08 10:49:52
   date||


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



[Bug c++/40682] New: Require direct binding of short-lived references to rvalues

2009-07-08 Thread dragan at plusplus dot co dot yu
In a recent discussion on comp.std.c++
"rvalue references returned from a function",
as pointed by Niels Dekker and Micael Dark,
a defect report:

  http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#391

was accepted into C++0x WP. This has a significant impact on GCC.

The current behavior also creates a problem with the following:

  struct R {
R(const R &);
  };

  R && func();

  int main() {
R const & r1 = func();
R &&  r2 = func();
  }

Both r1 and r2 will be bound to a temporary which will be
created by copying (or if available - moving) the returned
rvalue. This is invalid according to the mentioned changes.


-- 
   Summary: Require direct binding of short-lived references to
rvalues
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dragan at plusplus dot co dot yu


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



[Bug lto/39003] internal compiler error: in output_parm_decl, at lto-function-out.c:2652

2009-07-08 Thread bje at gcc dot gnu dot org


--- Comment #4 from bje at gcc dot gnu dot org  2009-07-08 11:15 ---
Reported as fixed by the original submitter.


-- 

bje at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


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



[Bug rtl-optimization/30807] postreload bug (might be generic in trunk)

2009-07-08 Thread sezeroz at gmail dot com


--- Comment #9 from sezeroz at gmail dot com  2009-07-08 11:37 ---
Will there be a backport of this to the branches 4.3 and 4.4?


-- 

sezeroz at gmail dot com changed:

   What|Removed |Added

 CC||sezeroz at gmail dot com


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



[Bug c++/40682] [C++0x] Require direct binding of short-lived references to rvalues

2009-07-08 Thread paolo dot carlini at oracle dot com


--- Comment #1 from paolo dot carlini at oracle dot com  2009-07-08 11:41 
---
Note, in general work on C++0x features doesn't really belong to Bugzilla,
unless existing code crashes on new testcases, things like that. You understand
that in general the situation would otherwise quickly explode. About this
specific issue, I suspect we even have something already open. Maybe Jon can
help...


-- 

paolo dot carlini at oracle dot com changed:

   What|Removed |Added

 CC||jwakely dot gcc at gmail dot
   ||com
Summary|Require direct binding of   |[C++0x] Require direct
   |short-lived references to   |binding of short-lived
   |rvalues |references to rvalues


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



[Bug fortran/40591] Procedure(interface): Rejected if interface is indirectly hostassociated

2009-07-08 Thread dominiq at lps dot ens dot fr


--- Comment #4 from dominiq at lps dot ens dot fr  2009-07-08 11:47 ---
It seems that gfortran.dg/proc_ptr_21.f90 is failing on i686-pc-linux-gnu and
Intel64(?), see

http://gcc.gnu.org/ml/gcc-testresults/2009-07/msg00755.html
http://gcc.gnu.org/ml/gcc-regression/2009-07/msg00078.html


-- 

dominiq at lps dot ens dot fr changed:

   What|Removed |Added

 CC||pault at gcc dot gnu dot org


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



[Bug lto/39042] [LTO] LTO tests don't cleanup temporary files

2009-07-08 Thread bje at gcc dot gnu dot org


--- Comment #3 from bje at gcc dot gnu dot org  2009-07-08 11:49 ---
This is fixed in lto revision 149354.  I ran make check-gcc and watched /tmp. 
Temporary files were removed as the testsuite ran.


-- 

bje at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug rtl-optimization/30807] postreload bug (might be generic in trunk)

2009-07-08 Thread kkojima at gcc dot gnu dot org


--- Comment #10 from kkojima at gcc dot gnu dot org  2009-07-08 11:54 
---
I don't think this is a regression, unfortunately.


-- 


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



[Bug fortran/40591] Procedure(interface): Rejected if interface is indirectly hostassociated

2009-07-08 Thread burnus at gcc dot gnu dot org


--- Comment #5 from burnus at gcc dot gnu dot org  2009-07-08 12:37 ---
(In reply to comment #4)
> It seems that gfortran.dg/proc_ptr_21.f90 is failing on i686-pc-linux-gnu and
> Intel64(?), see

I can - somewhat - reproduce it. It does not fail but valgrind shows
(x86-64-linux and i686-linux):

==32231== Conditional jump or move depends on uninitialised value(s)
==32231==at 0x80485A2: test.1513 (proc_ptr_21.f90:26)
==32231==by 0x8048548: MAIN__ (proc_ptr_21.f90:8)
==32231==by 0x80485F4: main (proc_ptr_21.f90:8)

That is solved by adding:
   i = 0
to subroutine test (while any other number causes the abortion).


-- 


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



[Bug c++/40682] [C++0x] Require direct binding of short-lived references to rvalues

2009-07-08 Thread dragan at plusplus dot co dot yu


--- Comment #2 from dragan at plusplus dot co dot yu  2009-07-08 12:38 
---
Although this is a feature request in the context that the old behavior
was correctly implemented and it will be different in C++0x, it still presents
a bug in the current C++0x implementation. It creates copies of
objects that are returned by a rvalue reference, which would be wrong.
I wasn't _really_ trying to request a new functionality, although
I understand your concern.

However, IMHO in this particular case we are talking about one of
the most fundamental features (binding a reference). This change
could also expose possible bugs in the (user and library) code that
relies on creation of a temporary, which even in C++03 is not
considered a portable code. Don't tell me you'd rather deal with
the issue after all the other C++0x stuff gets implemented...

Anyway, my motive was to help the development of GCC. Personally,
I didn't and will not rely on either of the two behaviors, but
will try to write code that works in both situations.


-- 


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



[Bug c++/40682] [C++0x] Require direct binding of short-lived references to rvalues

2009-07-08 Thread paolo dot carlini at oracle dot com


--- Comment #3 from paolo dot carlini at oracle dot com  2009-07-08 12:47 
---
To be clear, I'm not telling you anything specific about the development
process. Actually, that's exactly the point, this is ongoing development of
experimental features, no guarantees, no guarantees of perfect adherence to the
last public draft, etc.


-- 


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



[Bug tree-optimization/40679] Optimizer handles loops with volatiles and post-incr. wrong

2009-07-08 Thread bastian dot schick at sciopta dot com


--- Comment #8 from bastian dot schick at sciopta dot com  2009-07-08 13:06 
---
(In reply to comment #6)
> (In reply to comment #2)
> > Replacing *tbl++ by tbl[i] gives this ARM code:
> > .L2:
> > mov r3, #10
> > str r3, [r2], #4
> > cmp r2, #0
> > bne .L2
> > bx  lr
> > 
> > See, gcc knows about the wrapping but still the *tbl++ version misses the
> > end-condition which is the bug.
> 
> The difference is that in the tbl[i] version there will not be a wraparound at
> runtime because &tbl[i] for i == 64 is never computed, while in the *tbl++
> version the iteration with i == 63 will do tbl++ moving tbl from -4U to 0
> before the loop termination test, which triggers undefined behaviour.

Ok fine, but why does it generate correct code if not using volatile for the
pointer ?!
mvn r2, #251
.L2:
mov r3, #10
str r3, [r2, #-4]
add r2, r2, #4
cmp r2, #4
bne .L2
bx  lr
Strange, no post-increment code is generated.
The 68k version still uses post-increment and voilà, endless-loop.

Also see the code for the tbl[i] version, the pointer still wraps.

I suspect following: The test for 0 is removed maybe because the post-increment
is defined to change flags( which it isn't). Since there is no test, the next
optimization changes a "jump not zero" to an "jump always".


-- 


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



[Bug tree-optimization/40679] Optimizer handles loops with volatiles and post-incr. wrong

2009-07-08 Thread rguenth at gcc dot gnu dot org


--- Comment #9 from rguenth at gcc dot gnu dot org  2009-07-08 13:11 ---
induction variable optimization is different w/o volatile.


-- 


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



[Bug fortran/40683] New: gfortran.dg/proc_ptr_21.f90 doesn't work for 32bit

2009-07-08 Thread hjl dot tools at gmail dot com
On Linux/ia32, revision 149362 gave

FAIL: gfortran.dg/proc_ptr_21.f90  -O1  execution test
FAIL: gfortran.dg/proc_ptr_21.f90  -O2  execution test
FAIL: gfortran.dg/proc_ptr_21.f90  -O3 -fomit-frame-pointer  execution test
FAIL: gfortran.dg/proc_ptr_21.f90  -O3 -fomit-frame-pointer -funroll-all-loops
-finline-functions  execution test
FAIL: gfortran.dg/proc_ptr_21.f90  -O3 -fomit-frame-pointer -funroll-loops 
execution test
FAIL: gfortran.dg/proc_ptr_21.f90  -O3 -g  execution test
FAIL: gfortran.dg/proc_ptr_21.f90  -Os  execution test

I got the same result with gcc -m32 on Linux/x86-64.


-- 
   Summary: gfortran.dg/proc_ptr_21.f90 doesn't work for 32bit
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: hjl dot tools at gmail dot com


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



[Bug fortran/40629] Host association problem

2009-07-08 Thread pault at gcc dot gnu dot org


--- Comment #3 from pault at gcc dot gnu dot org  2009-07-08 13:22 ---
Created an attachment (id=18157)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18157&action=view)
Fix for bug - not regtested yet

This handles host_assoc_function_*.f90 correctly but is not yet regtested.

The testcase will be something like:

! { dg-do run }
! Tests the fix for the bug PR40629, in which the reference to 'x'
! in 'upper' wrongly host-associated with the symbol 'x' at module
! leve rather than the function.
!
! Contributed by Philippe Marguinaud  
!
MODULE m
  REAL :: x = 0
CONTAINS
   
   
   
   
   
 
SUBROUTINE s
  call upper
  call lower
  CONTAINS
SUBROUTINE upper
 y = x(3,1)
 if (int(y) .ne. 3) call abort
END SUBROUTINE
FUNCTION x(n, m)
   x = m*n
END FUNCTION
SUBROUTINE lower
 y = x(2,1)
 if (int(y) .ne. 3) call abort
END SUBROUTINE
  END SUBROUTINE
END MODULE

  use m
  call s
end
! { dg-final { cleanup-modules "m" } }


Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |pault at gcc dot gnu dot org
   |dot org |
 Status|NEW |ASSIGNED


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



[Bug middle-end/39891] Bogus location given for warning, no warning at real location: dereferencing pointer �� does break strict-aliasing rules

2009-07-08 Thread manu at gcc dot gnu dot org


--- Comment #5 from manu at gcc dot gnu dot org  2009-07-08 13:25 ---
(In reply to comment #3)
> 
> Note that getInt is completely inlined and there is no location involving
> that function available anymore :/  The difficulties of C++ and late
> diagnostics ...

Don't we keep abstract_origin somewhere? I have seen in the middle-end that
sometimes we test whether something is an inline variable or not.


-- 


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



[Bug fortran/40683] gfortran.dg/proc_ptr_21.f90 doesn't work for 32bit

2009-07-08 Thread dominiq at lps dot ens dot fr


--- Comment #1 from dominiq at lps dot ens dot fr  2009-07-08 13:28 ---
See pr40591 comments #4 and #5.


-- 


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



[Bug middle-end/40156] [4.4 Regression] Possible bogus warning in libstdc++ headers

2009-07-08 Thread manu at gcc dot gnu dot org


--- Comment #8 from manu at gcc dot gnu dot org  2009-07-08 13:28 ---
I am going to close this as FIXED, since it cannot be reproduced anymore. If
anyone manages to reproduce it in GCC 4.5, please reopen.


-- 

manu at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


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



[Bug fortran/40591] Procedure(interface): Rejected if interface is indirectly hostassociated

2009-07-08 Thread pault at gcc dot gnu dot org


--- Comment #6 from pault at gcc dot gnu dot org  2009-07-08 13:28 ---
(In reply to comment #5)

> That is solved by adding:
>i = 0
> to subroutine test (while any other number causes the abortion).
> 

Indeed - that was in the test originally; I do not know what happened to it.
I'll put it right tonight.

Thanks

Paul


-- 


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



[Bug fortran/40683] gfortran.dg/proc_ptr_21.f90 doesn't work for 32bit

2009-07-08 Thread pault at gcc dot gnu dot org


--- Comment #2 from pault at gcc dot gnu dot org  2009-07-08 13:29 ---
(In reply to comment #1)
> See pr40591 comments #4 and #5.
> 
 Indeed! I'll fix it tonight.

Thanks, HJ

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |pault at gcc dot gnu dot org
   |dot org |
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-07-08 13:29:18
   date||


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



[Bug fortran/40591] Procedure(interface): Rejected if interface is indirectly hostassociated

2009-07-08 Thread dominiq at lps dot ens dot fr


--- Comment #7 from dominiq at lps dot ens dot fr  2009-07-08 13:31 ---
pr40683 is a duplicate.


-- 


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



[Bug c++/40557] [4.5 Regression] ICE with template union

2009-07-08 Thread hjl at gcc dot gnu dot org


--- Comment #4 from hjl at gcc dot gnu dot org  2009-07-08 14:30 ---
Subject: Bug 40557

Author: hjl
Date: Wed Jul  8 14:30:12 2009
New Revision: 149371

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=149371
Log:
2009-07-08  H.J. Lu  

Backport from mainline:
2009-07-06  Simon Martin  

PR c++/40557
* g++.dg/template/union2.C: New test.

Added:
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/template/union2.C
  - copied unchanged from r149370,
trunk/gcc/testsuite/g++.dg/template/union2.C
Modified:
branches/gcc-4_4-branch/gcc/testsuite/ChangeLog


-- 


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



[Bug fortran/40675] Support -fnosign-zero for SIGN intrinsic for Fortran 77 compatibility

2009-07-08 Thread burnus at gcc dot gnu dot org


--- Comment #11 from burnus at gcc dot gnu dot org  2009-07-08 14:55 ---
Created an attachment (id=18158)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18158&action=view)
Patch - lightly tested

Attached patch fixes the problem [independent of
"-f(no-)signed-zeros"/-ffast-math].

The crucial option is "-fno-sign-zero" (which shall not be confused with
-f(no-)signed-zeros):

$ gfortran -O3 -fno-sign-zero ahfj.f90 && ./a.out
 With val =0.000  test =0.000
 pass


-- 

burnus at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |burnus at gcc dot gnu dot
   |dot org |org
 Status|NEW |ASSIGNED


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



[Bug target/40677] flag -mmultiple is ignored

2009-07-08 Thread edmar at freescale dot com


--- Comment #4 from edmar at freescale dot com  2009-07-08 15:06 ---
I did not run any test suite, nor prepared any test case suitable for inclusion
in dejagnu suite.
I opened a bug hopping the information I gave would help resolve the issue
faster.


-- 


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



[Bug c++/40684] New: ICE in tsubst

2009-07-08 Thread jakub at gcc dot gnu dot org
// { dg-options "-std=c++0x" }

struct A
{
};

template 
typename S::A
foo (S c, T t, U u)
{
}

struct B
{
  struct C
  {
template 
C (U t)
{
  A a;
  A b = foo (this, a, t);
}
  } c;
  B () : c (A ())
  {
  }
};

int
main ()
{
  B f;
}

ICEs in tsubst (seeing ADDR_EXPR there).  This is likely invalid testcase,
though the ICE is the only diagnostics issued, whether the original
testcase from http://bugzilla.redhat.com/509596 is valid or not is unclear.


-- 
   Summary: ICE in tsubst
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  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=40684



[Bug c++/40685] New: explicit constructor is used where only implicit ctors are allowed

2009-07-08 Thread kretz at kde dot org
The following testcase fails on g++ 4.4.0 and 4.3.2:

#include 

enum Enum {
Foo
};

class A
{
public:
A(int y) : x(y) {}
explicit A(Enum) : x(1) {}

int x;
};

static void fun(A a = Foo)
{
if (a.x != static_cast(Foo)) {
abort();
}
}

int main()
{
fun();
return 0;
}

If the A(int) ctor is removed the program does not compile, as is expected. If
the line "A a = Foo" appears inside the function instead of the parameter list
then g++ correctly uses the A(int) ctor.

While on that topic: The code above was meant to use the Enum ctor, it would be
nice if g++ emits a warning about the emitted code probably using the wrong
ctor.


-- 
   Summary: explicit constructor is used where only implicit ctors
are allowed
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: kretz at kde dot org
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


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



[Bug target/38900] ICE: unable to find a register to spill

2009-07-08 Thread rth at gcc dot gnu dot org


--- Comment #16 from rth at gcc dot gnu dot org  2009-07-08 16:41 ---
Subject: Bug 38900

Author: rth
Date: Wed Jul  8 16:41:23 2009
New Revision: 149373

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=149373
Log:
PR target/38900
* config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
(enum reg_class): Add CLOBBERED_REGS.
(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
* config/i386/i386.c (ix86_conditional_register_usage): Moved
from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
(ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
(ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
force 64-bit sibcalls into R11.
* config/i386/constraints.md (U): New constraint.
* config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
(sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
(sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/constraints.md
trunk/gcc/config/i386/i386-protos.h
trunk/gcc/config/i386/i386.c
trunk/gcc/config/i386/i386.h
trunk/gcc/config/i386/i386.md


-- 


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



[Bug target/40668] 64-bit sparc miscompiles memcpy of argument inside switch

2009-07-08 Thread mikpe at it dot uu dot se


--- Comment #7 from mikpe at it dot uu dot se  2009-07-08 16:43 ---
4.4-20090630 plus this fix bootstrapped fine, fixed the test case, built a
working 2.6.31-rc2 Linux kernel, and built a working Erlang VM.


-- 


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



[Bug fortran/40675] Support -fnosign-zero for SIGN intrinsic for Fortran 77 compatibility

2009-07-08 Thread kargl at gcc dot gnu dot org


--- Comment #12 from kargl at gcc dot gnu dot org  2009-07-08 16:49 ---
Created an attachment (id=18160)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18160&action=view)
dejagnu testr case

Test that sign(x, +-0) conforms to F95.


-- 


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



[Bug fortran/40675] Support -fnosign-zero for SIGN intrinsic for Fortran 77 compatibility

2009-07-08 Thread kargl at gcc dot gnu dot org


--- Comment #13 from kargl at gcc dot gnu dot org  2009-07-08 16:50 ---
Created an attachment (id=18161)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18161&action=view)
dejagnu test case

Test case for sign(x,+-0) when the new -fno-sign-zero option is used.


-- 


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



[Bug fortran/40675] Support -fnosign-zero for SIGN intrinsic for Fortran 77 compatibility

2009-07-08 Thread kargl at gcc dot gnu dot org


--- Comment #14 from kargl at gcc dot gnu dot org  2009-07-08 16:56 ---
(In reply to comment #11)
> Created an attachment (id=18158)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18158&action=view) [edit]
> Patch - lightly tested
> 
> Attached patch fixes the problem [independent of
> "-f(no-)signed-zeros"/-ffast-math].
> 
> The crucial option is "-fno-sign-zero" (which shall not be confused with
> -f(no-)signed-zeros):
> 
> $ gfortran -O3 -fno-sign-zero ahfj.f90 && ./a.out
>  With val =0.000  test =0.000
>  pass
> 

I've tested the patch and the -ftree-dump-original output
looks correct.  I've also attached two testcase for the
testsuite.  I do note that this option is activated by
-std=legacy.  Perhaps, it should be.

Patch is okay.


-- 


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



[Bug target/38900] ICE: unable to find a register to spill

2009-07-08 Thread rth at gcc dot gnu dot org


--- Comment #17 from rth at gcc dot gnu dot org  2009-07-08 16:59 ---
Subject: Bug 38900

Author: rth
Date: Wed Jul  8 16:59:15 2009
New Revision: 149374

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=149374
Log:
PR target/38900
* config/i386/i386.h (CONDITIONAL_REGISTER_USAGE): Move to i386.c.
(enum reg_class): Add CLOBBERED_REGS.
(REG_CLASS_NAMES, REG_CLASS_CONTENTS): Likewise.
* config/i386/i386.c (ix86_conditional_register_usage): Moved
from CONDITIONAL_REGISTER_USAGE; build CLOBBERED_REGS for 64-bit.
(ix86_function_ok_for_sibcall): Tidy.  Disallow MS->SYSV sibcalls.
(ix86_expand_call): Use sibcall_insn_operand when needed.  Don't
force 64-bit sibcalls into R11.
* config/i386/constraints.md (U): New constraint.
* config/i386/i386.md (sibcall_1, sibcall_value_1): Use it.
(sibcall_1_rex64, sibcall_value_1_rex64): Likewise.
(sibcall_1_rex64_v, sibcall_value_1_rex64_v): Remove.

Modified:
branches/gcc-4_4-branch/gcc/ChangeLog
branches/gcc-4_4-branch/gcc/config/i386/constraints.md
branches/gcc-4_4-branch/gcc/config/i386/i386-protos.h
branches/gcc-4_4-branch/gcc/config/i386/i386.c
branches/gcc-4_4-branch/gcc/config/i386/i386.h
branches/gcc-4_4-branch/gcc/config/i386/i386.md


-- 


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



[Bug target/38900] ICE: unable to find a register to spill

2009-07-08 Thread rth at gcc dot gnu dot org


--- Comment #18 from rth at gcc dot gnu dot org  2009-07-08 17:03 ---
Fixed.


-- 

rth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug testsuite/40625] [4.5 Regression] Errors in "make -k check-gcc RUNTESTFLAGS=plugin.exp"

2009-07-08 Thread janis at gcc dot gnu dot org


--- Comment #3 from janis at gcc dot gnu dot org  2009-07-08 17:08 ---
I can reproduce the error with plugin.exp not struct-layout-1.exp.  This fixes
it for me, does it for you guys?

Index: gcc/testsuite/lib/gcc.exp
===
--- gcc/testsuite/lib/gcc.exp   (revision 149287)
+++ gcc/testsuite/lib/gcc.exp   (working copy)
@@ -96,6 +96,7 @@ proc gcc_init { args } {
 global TOOL_EXECUTABLE
 global gcc_warning_prefix
 global gcc_error_prefix
+global ld_library_path

 if { $gcc_initialized == 1 } { return; }

@@ -113,6 +114,7 @@ proc gcc_init { args } {

 set gcc_warning_prefix "warning:"
 set gcc_error_prefix "error:"
+set ld_library_path ""

 gcc_maybe_build_wrapper "${tmpdir}/gcc-testglue.o"
 }


-- 


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



[Bug target/40668] 64-bit sparc miscompiles memcpy of argument inside switch

2009-07-08 Thread blp at cs dot stanford dot edu


--- Comment #8 from blp at cs dot stanford dot edu  2009-07-08 17:30 ---
Wow, that's amazingly fast turnaround.  Thanks so much guys!


-- 


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



[Bug testsuite/40625] [4.5 Regression] Errors in "make -k check-gcc RUNTESTFLAGS=plugin.exp"

2009-07-08 Thread tjruwase at google dot com


--- Comment #4 from tjruwase at google dot com  2009-07-08 17:59 ---
Subject: Re:  [4.5 Regression] Errors in "make -k 
check-gcc RUNTESTFLAGS=plugin.exp"

Your fix works for me.


-- 


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



[Bug debug/40659] A simple struct member offset doesn't need a full dwarf location expression

2009-07-08 Thread mark at gcc dot gnu dot org


--- Comment #1 from mark at gcc dot gnu dot org  2009-07-08 18:08 ---
Subject: Bug 40659

Author: mark
Date: Wed Jul  8 18:07:47 2009
New Revision: 149377

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=149377
Log:
2009-07-08  Mark Wielaard  

PR debug/40659
* dwarf2out.c (add_data_member_location_attribute): When we have
only a constant offset don't emit a new location description using
DW_OP_plus_uconst, but just add the constant with add_AT_int, when
dwarf_version > 2.

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


-- 


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



[Bug c/40686] New: Optimization Problem With Data Conversion

2009-07-08 Thread songyulu at hdfgroup dot org
Our HDF5 software has been having some data conversion problem with GCC's
optimization for a few years.  One example is to convert data from short to
int.  You can find the program at

 ftp://ftp.hdfgroup.uiuc.edu/pub/outgoing/slu/tmp/ctest.c

When I use "gcc -O2" or "gcc -O3" to compile it, I get wrong values after the
conversion.  When I use "gcc -O0" or "gcc -O1", the values are correct.

I'll greatly appreciate your help if you can have a look at it.


-- 
   Summary: Optimization Problem With Data Conversion
   Product: gcc
   Version: 4.1.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: songyulu at hdfgroup dot org


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



[Bug debug/40659] A simple struct member offset doesn't need a full dwarf location expression

2009-07-08 Thread mark at gcc dot gnu dot org


--- Comment #2 from mark at gcc dot gnu dot org  2009-07-08 18:21 ---
Patch pushed.


-- 

mark at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


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



[Bug c/40686] Optimization Problem With Data Conversion

2009-07-08 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2009-07-08 18:22 ---
You are violating C/C++ aliasing rules:
  d = (uint8_t*)&aligned; 

  /* This line causes the trouble. */
  *((int*)d) = (int)(*((short*)s));

You are writing into a long long via an int which causes undefined behavior.

There are more aliasing problems in this file too with the loop at:
printf("before conversion:\n");
And
printf("after conversion:\n");

As those are accessing an char via a short or an int.

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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



[Bug c/21920] aliasing violations

2009-07-08 Thread pinskia at gcc dot gnu dot org


--- Comment #142 from pinskia at gcc dot gnu dot org  2009-07-08 18:22 
---
*** Bug 40686 has been marked as a duplicate of this bug. ***


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||songyulu at hdfgroup dot org


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



[Bug fortran/40683] gfortran.dg/proc_ptr_21.f90 doesn't work for 32bit

2009-07-08 Thread pault at gcc dot gnu dot org


--- Comment #3 from pault at gcc dot gnu dot org  2009-07-08 19:00 ---
Subject: Bug 40683

Author: pault
Date: Wed Jul  8 19:00:17 2009
New Revision: 149383

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=149383
Log:
2008-07-08  Paul Thomas  

PR fortran/40683
* gfortran.dg/proc_ptr_21.f90: Initialize 'i'.


Modified:
trunk/gcc/testsuite/gfortran.dg/proc_ptr_21.f90


-- 


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



[Bug fortran/40629] Host association problem

2009-07-08 Thread pault at gcc dot gnu dot org


--- Comment #4 from pault at gcc dot gnu dot org  2009-07-08 19:05 ---
(In reply to comment #3)
> Created an attachment (id=18157)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18157&action=view) [edit]
> Fix for bug - not regtested yet
> 
> This handles host_assoc_function_*.f90 correctly but is not yet regtested.
> 
> The testcase will be something like:
> 
> ! { dg-do run }
> ! Tests the fix for the bug PR40629, in which the reference to 'x'
> ! in 'upper' wrongly host-associated with the symbol 'x' at module
> ! leve rather than the function.
> !
> ! Contributed by Philippe Marguinaud  
> !
> MODULE m
>   REAL :: x = 0
> CONTAINS
>   
>  
>   
>  
>   
>  
>   
>  
>   
>  
>  
> SUBROUTINE s
>   call upper
>   call lower
>   CONTAINS
> SUBROUTINE upper
>  y = x(3,1)
>  if (int(y) .ne. 3) call abort
> END SUBROUTINE
> FUNCTION x(n, m)
>x = m*n
> END FUNCTION
> SUBROUTINE lower
>  y = x(2,1)
>  if (int(y) .ne. 3) call abort
> END SUBROUTINE
>   END SUBROUTINE
> END MODULE
> 
>   use m
>   call s
> end
> ! { dg-final { cleanup-modules "m" } }
> 
> 
> Paul
> 

The last abort should happen on a value of 2, of course.

Paul


-- 


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



[Bug fortran/40675] Support -fnosign-zero for SIGN intrinsic for Fortran 77 compatibility

2009-07-08 Thread burnus at gcc dot gnu dot org


--- Comment #15 from burnus at gcc dot gnu dot org  2009-07-08 19:35 ---
Subject: Bug 40675

Author: burnus
Date: Wed Jul  8 19:34:49 2009
New Revision: 149390

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=149390
Log:
2009-07-08  Tobias Burnus  

PR fortran/40675
* simplify.c (gfc_simplify_sign): Handle signed zero correctly.
* trans-intrinsic.c (gfc_conv_intrinsic_sign): Support
-fno-sign-zero.
* invoke.texi (-fno-sign-zero): Add text regarding SIGN
* intrinsic.

2009-07-08  Tobias Burnus  

PR fortran/40675
* gfortran.dg/nosigned_zero_1.f90: New test.
* gfortran.dg/nosigned_zero_2.f90: New test.


Added:
trunk/gcc/testsuite/gfortran.dg/nosigned_zero_1.f90
trunk/gcc/testsuite/gfortran.dg/nosigned_zero_2.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/invoke.texi
trunk/gcc/fortran/simplify.c
trunk/gcc/fortran/trans-intrinsic.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug c/37231] GCC does not compile code with label statements that are followed by a declaration

2009-07-08 Thread aapo dot rantalainen at gmail dot com


--- Comment #3 from aapo dot rantalainen at gmail dot com  2009-07-08 19:36 
---
Above code doesn't compile:
int main(int argc, char *argv[])
{
  int a=1;
  switch (a)
{
case 1:
int b=2;
break;
}
return 0;
}

Error "a label can only be part of a statement and a declaration is not a
statement"

Same workaround:  add ; before int b=2;

gcc -v
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.3.3-5ubuntu4'
--with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared
--with-system-zlib --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3
--program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug
--enable-objc-gc --enable-mpfr --with-tune=generic --enable-checking=release
--build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4)


-- 


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



[Bug c/37231] GCC does not compile code with label statements that are followed by a declaration

2009-07-08 Thread pinskia at gcc dot gnu dot org


--- Comment #4 from pinskia at gcc dot gnu dot org  2009-07-08 19:42 ---
(In reply to comment #3)
> Above code doesn't compile:

Yes it should not be compile.  The error message has been improved to tell you
what the problem is (that is what Manu was saying in his comment #2).


-- 


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



[Bug tree-optimization/34437] several test failures for gcc.dg/vect/no-scevccp-*

2009-07-08 Thread janis at gcc dot gnu dot org


--- Comment #8 from janis at gcc dot gnu dot org  2009-07-08 19:48 ---
Fixed awhile ago by changing -mabi=altivec to the default for powerpc*-linux.


-- 

janis at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


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



[Bug c++/40687] New: [C++0x]: error with auto and 7.1.6.4/7 in N2914

2009-07-08 Thread bernhard dot merkle at googlemail dot com
Hi, 

I think there is a bug in g++ 4.4 concerning the implementation of auto.
7.1.6.4/7 in N2914

The following program compiles, but it should be rejected by g++.

int main() 
{
auto i = 10, d = 5.0; // error! shall not compile in C++0x

return 0;
}

$ /opt/gcc-4.4/bin/g++ -v
Using built-in specs.
Target: i686-pc-cygwin
Configured with: ./configure --prefix=/opt/gcc-4.4
Thread model: single
gcc version 4.4.0 (GCC)

$ /opt/gcc-4.4/bin/g++ --std=c++0x -Wall g++4.4BugAutoN2914.cpp
g++4.4BugAutoN2914.cpp: In function 'int main()':
g++4.4BugAutoN2914.cpp:4: warning: unused variable 'i'
g++4.4BugAutoN2914.cpp:4: warning: unused variable 'd'


-- 
   Summary: [C++0x]: error with auto and 7.1.6.4/7 in N2914
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bernhard dot merkle at googlemail dot com


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



[Bug c++/40687] [C++0x]: error with auto and 7.1.6.4/7 in N2914

2009-07-08 Thread bernhard dot merkle at googlemail dot com


--- Comment #1 from bernhard dot merkle at googlemail dot com  2009-07-08 
20:07 ---
Created an attachment (id=18162)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18162&action=view)
program which should not compile


-- 


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



[Bug c++/40684] ICE in tsubst

2009-07-08 Thread dodji at gcc dot gnu dot org


--- Comment #1 from dodji at gcc dot gnu dot org  2009-07-08 20:11 ---
I could reproduce on trunk.

I am testing the patchlet below:

diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index b4bd465..d042f98 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -12949,8 +12949,9 @@ type_unification_real (tree tparms,
 to explicitly check cxx_dialect here.  */
   if (TREE_PURPOSE (TREE_VEC_ELT (tparms, i)))
 {
-  tree arg = tsubst (TREE_PURPOSE (TREE_VEC_ELT (tparms, i)), 
- targs, tf_none, NULL_TREE);
+  tree arg = tsubst_template_arg
+   (TREE_PURPOSE (TREE_VEC_ELT (tparms, i)),
+targs, tf_none, NULL_TREE);
   if (arg == error_mark_node)
 return 1;
   else


-- 

dodji at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||dodji at gcc dot gnu dot org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-07-08 20:11:16
   date||


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



[Bug c++/40688] New: [C++0x]: error with auto direct and copy initalization

2009-07-08 Thread bernhard dot merkle at googlemail dot com
Hi, 

I think there is another bug in g++ 4.4 concerning the implementation of auto
with direct and copy initialization 7.1.6.4/3 in N2914

The following program should compile, but is rejected by g++.

int main() 
{
auto v1 = 1; // copy initialization syntax
auto v2(2); // direct initialization syntax

return 0;
}

$ /opt/gcc-4.4/bin/g++ -v
Using built-in specs.
Target: i686-pc-cygwin
Configured with: ./configure --prefix=/opt/gcc-4.4
Thread model: single
gcc version 4.4.0 (GCC)

$ /opt/gcc-4.4/bin/g++ --std=c++0x -Wall g++4.4Bug2AutoN2914.cpp
g++4.4Bug2AutoN2914.cpp: In function 'int main()':
g++4.4Bug2AutoN2914.cpp:5: error: 'v2' has incomplete type
g++4.4Bug2AutoN2914.cpp:4: warning: unused variable 'v1'
g++4.4Bug2AutoN2914.cpp:5: warning: unused variable 'v2'


-- 
   Summary: [C++0x]: error with auto direct and copy initalization
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bernhard dot merkle at googlemail dot com


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



[Bug c++/40688] [C++0x]: error with auto direct and copy initalization

2009-07-08 Thread bernhard dot merkle at googlemail dot com


--- Comment #1 from bernhard dot merkle at googlemail dot com  2009-07-08 
20:16 ---
Created an attachment (id=18163)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18163&action=view)
program which should compile


-- 


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



[Bug c++/40689] New: [C++0x]: error with initializer list in N2672

2009-07-08 Thread bernhard dot merkle at googlemail dot com
Hi, 

I think there is a bug in g++ 4.4 concerning the implementation of initializer
list. N2672

The following program does not compiles, but it should be accepted by g++.

// /opt/gcc-4.4/bin/g++ --std=c++0x -Wall
int main() 
{

class X 
{
 public:
  X(): data {1,2,3,4,5} {}
 private:
  const short data[5];
};
const float * pData = new const float[4] { 1.5, 2.5, 3.5, 4.5 };

return 0;
}

$ /opt/gcc-4.4/bin/g++ -v
Using built-in specs.
Target: i686-pc-cygwin
Configured with: ./configure --prefix=/opt/gcc-4.4
Thread model: single
gcc version 4.4.0 (GCC)

$ /opt/gcc-4.4/bin/g++ --std=c++0x -Wall g++4.4BugN2672.cpp
g++4.4BugN2672.cpp: In constructor 'main()::X::X()':
g++4.4BugN2672.cpp:8: error: conversion from '' to non-scalar type 'const short int [5]
' requested
g++4.4BugN2672.cpp: In function 'int main()':
g++4.4BugN2672.cpp:12: error: ISO C++ forbids initialization in array new
g++4.4BugN2672.cpp:12: warning: unused variable 'pData'


-- 
   Summary: [C++0x]: error with initializer list in N2672
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bernhard dot merkle at googlemail dot com


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



[Bug c++/40689] [C++0x]: error with initializer list in N2672

2009-07-08 Thread bernhard dot merkle at googlemail dot com


--- Comment #1 from bernhard dot merkle at googlemail dot com  2009-07-08 
20:29 ---
Created an attachment (id=18164)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18164&action=view)
program which should compile


-- 


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



[Bug c++/40689] [C++0x]: error with initializer list in N2672

2009-07-08 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2009-07-08 20:38 ---
Before filing more bugs please verify the bugs exist on a recent version
of the development trunk for GCC 4.5.  C++0x is considered incomplete
technology preview only.


-- 


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



[Bug tree-optimization/40690] New: invalid conversion in gimple call for vect tests

2009-07-08 Thread janis at gcc dot gnu dot org
On powerpc*-unknown-linux-gnu several vectorization tests ICE in verify_stmts
after the error message "invalid conversion in gimple call":

gcc.dg/vect/no-scevccp-outer-7.c
gcc.dg/vect/no-scevccp-outer-13.c
gcc.dg/vect/slp-perm-1.c
gcc.dg/vect/slp-perm-2.c
gcc.dg/vect/slp-perm-3.c
gcc.dg/vect/slp-perm-8.c
gcc.dg/vect/vect-reduc-dot-u8b.c

The failures begin with this patch:

http://gcc.gnu.org/viewcvs?view=rev&rev=146831

r146831 | rguenth | 2009-04-27 11:18:38 + (Mon, 27 Apr 2009)

Here's a minimized testcase usable with a powerpc-linux cross compiler:

---
extern unsigned char X[64] __attribute__ ((__aligned__(32)));
extern unsigned char Y[64] __attribute__ ((__aligned__(32)));

unsigned short
foo (int len) {
  int i;
  unsigned short result = 0;

  for (i=0; ihttp://gcc.gnu.org/bugzilla/show_bug.cgi?id=40690



[Bug c/39959] [4.5 Regression] IMA is broken

2009-07-08 Thread janis at gcc dot gnu dot org


--- Comment #4 from janis at gcc dot gnu dot org  2009-07-08 20:46 ---
On powerpc*-linux this test begins failing in the same way with this patch:

http://gcc.gnu.org/viewcvs?view=rev&rev=146831

r146831 | rguenth | 2009-04-27 11:18:38 + (Mon, 27 Apr 2009)


-- 


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



[Bug tree-optimization/39960] [4.5 Regression] struct-reorg is broken

2009-07-08 Thread janis at gcc dot gnu dot org


--- Comment #2 from janis at gcc dot gnu dot org  2009-07-08 20:46 ---
On powerpc*-linux the test begins to fail in the same way with this patch:

http://gcc.gnu.org/viewcvs?view=rev&rev=146831

r146831 | rguenth | 2009-04-27 11:18:38 + (Mon, 27 Apr 2009)


-- 


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



[Bug tree-optimization/40690] invalid conversion in gimple call for vect tests

2009-07-08 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2009-07-08 20:49 ---
I think this is really PR 30210.


-- 


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



[Bug fortran/40675] Support -fnosign-zero for SIGN intrinsic for Fortran 77 compatibility

2009-07-08 Thread burnus at gcc dot gnu dot org


--- Comment #16 from burnus at gcc dot gnu dot org  2009-07-08 20:55 ---
Close as FIXED (on the trunk [= 4.5]).

Greg, thanks for the report. Using a 4.5/trunk build (e.g. one of the nightly
builds) gfortran will offer the option -fno-sign-zero  which allows your
program to work.

However, I still would like to suggest to change the program such that it will
work also the default options. The problem will presumably also appear with
other compilers - for instance if they change their default.


-- 

burnus at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug c++/40689] [C++0x]: error with initializer list in N2672

2009-07-08 Thread bernhard dot merkle at googlemail dot com


--- Comment #3 from bernhard dot merkle at googlemail dot com  2009-07-08 
20:56 ---
makes sense, thanks for the hint.

is there doc to which N papers the 4.5 trunk relates ?
e.g. like http://gcc.gnu.org/projects/cxx0x.html


-- 


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



[Bug libstdc++/40691] New: bug in logical not operator for valarray used with slice

2009-07-08 Thread janis at gcc dot gnu dot org
Use of operator! (logical not) from valarray with slice fails.  For example,

--
#include 

void test01()
{
  const std::valarray vi(12);
  std::valarray vb1(12);
  std::valarray vb2(3);
  std::slice s(0,3,4);

  vb1 = !vi; // ok
  vb2 = !(std::valarray)vi[s];  // ok
  vb2 = !vi[s];  // fails
}
--

fails with:

elm3b187% /opt/gcc-nightly/trunk/bin/g++ -c valarray-bug.cc
In file included from
/opt/gcc-nightly/trunk-20090706/lib/gcc/powerpc64-linux/4.5.0/../../../../include/c++/4.5.0/valarray:562:0,
 from valarray-bug.cc:1:
/opt/gcc-nightly/trunk-20090706/lib/gcc/powerpc64-linux/4.5.0/../../../../include/c++/4.5.0/bits/valarray_after.h:
In member function ‘std::_Expr, bool> std::_Expr<_Clos, _Tp>::operator!() const [with _Clos =
std::_SClos, _Tp = int]’:
valarray-bug.cc:12:14:   instantiated from here
/opt/gcc-nightly/trunk-20090706/lib/gcc/powerpc64-linux/4.5.0/../../../../include/c++/4.5.0/bits/valarray_after.h:318:61:
error: conversion from ‘std::_Expr >, int>’ to non-scalar type
‘std::_Expr >, bool>’ requested

That's std::_Expr,int>
to std::_expr,bool>

I'm about to submit a proposed patch but would like a PR to keep track of this.


-- 
   Summary: bug in logical not operator for valarray used with slice
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: janis at gcc dot gnu dot org


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



[Bug tree-optimization/40690] invalid conversion in gimple call for vect tests

2009-07-08 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2009-07-08 21:03 ---
It is.

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


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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



[Bug target/30210] [4.5 Regression] Altivec builtins have inaccurate return types

2009-07-08 Thread rguenth at gcc dot gnu dot org


--- Comment #15 from rguenth at gcc dot gnu dot org  2009-07-08 21:03 
---
*** Bug 40690 has been marked as a duplicate of this bug. ***


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||janis at gcc dot gnu dot org


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



[Bug fortran/40675] Support -fnosign-zero for SIGN intrinsic for Fortran 77 compatibility

2009-07-08 Thread gdsjaar at sandia dot gov


--- Comment #17 from gdsjaar at sandia dot gov  2009-07-08 21:03 ---
Subject: Re:  Support -fnosign-zero for SIGN
 intrinsic for Fortran 77 compatibility

Thanks for the quick response.  I agree that the ultimate fix is to 
remove that idiom from the code; however, when dealing with decades old 
fortran code, we don't always have the time or resources to do it 
right.   I will try to write a better test code next time that isn't 
buggy...

--Greg

burnus at gcc dot gnu dot org wrote:
> --- Comment #16 from burnus at gcc dot gnu dot org  2009-07-08 20:55 
> ---
> Close as FIXED (on the trunk [= 4.5]).
>
> Greg, thanks for the report. Using a 4.5/trunk build (e.g. one of the nightly
> builds) gfortran will offer the option -fno-sign-zero  which allows your
> program to work.
>
> However, I still would like to suggest to change the program such that it will
> work also the default options. The problem will presumably also appear with
> other compilers - for instance if they change their default.
>
>
>   


-- 


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



[Bug target/30210] [4.5 Regression] Altivec builtins have inaccurate return types

2009-07-08 Thread rguenth at gcc dot gnu dot org


--- Comment #16 from rguenth at gcc dot gnu dot org  2009-07-08 21:04 
---
Mike - you said you have patches for this?


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||meissner at gcc dot gnu dot
   ||org


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



[Bug c++/40689] [C++0x]: error with initializer list in N2672

2009-07-08 Thread rguenth at gcc dot gnu dot org


--- Comment #4 from rguenth at gcc dot gnu dot org  2009-07-08 21:05 ---
I don't think so.  Likely nobody bothered to update that document recently.


-- 


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



[Bug c/39959] [4.5 Regression] IMA is broken

2009-07-08 Thread janis at gcc dot gnu dot org


--- Comment #5 from janis at gcc dot gnu dot org  2009-07-08 21:28 ---
The test started failing with the patch reported in comment #8 because it
enabled type checking; sorry for the noise.


-- 


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



[Bug tree-optimization/39960] [4.5 Regression] struct-reorg is broken

2009-07-08 Thread janis at gcc dot gnu dot org


--- Comment #3 from janis at gcc dot gnu dot org  2009-07-08 21:29 ---
The test started failing with the patch reported in comment #2 because it
enabled type checking; sorry for the noise.


-- 


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



[Bug c/37231] GCC does not compile code with label statements that are followed by a declaration

2009-07-08 Thread manu at gcc dot gnu dot org


--- Comment #5 from manu at gcc dot gnu dot org  2009-07-08 21:34 ---
(In reply to comment #4)
> (In reply to comment #3)
> > Above code doesn't compile:
> 
> Yes it should not be compile.  The error message has been improved to tell you
> what the problem is (that is what Manu was saying in his comment #2).

Indeed.

Aapo, what is difficult to understand from the the current error message? I
would like to improve it as much as possible.


-- 

manu at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||aapo dot rantalainen at
   ||gmail dot com


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



[Bug middle-end/39976] [4.5 Regression] Big sixtrack degradation on powerpc 32/64 after revision r146817

2009-07-08 Thread pthaugen at gcc dot gnu dot org


--- Comment #20 from pthaugen at gcc dot gnu dot org  2009-07-08 21:53 
---
Created an attachment (id=18165)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=18165&action=view)
Reduced testcase

The attatched testcase exhibits the problem with the load-hit-store. It's
resulting from choosing a bad register class (GENERAL_REGS) for a pseudo that
should get assigned to FLOAT_REGS. Since there is no FPR -> GPR move for
-mcpu=power6 the copy must go through memory.  I compiled the testcase with
-m64 -O3 -mcpu=power6 using trunk revision 149376.  The pseudo in question is
361.

Following are the 3 insns referencing reg 361 in the sched1 dump (before ira):

(insn 51 238 241 8 thin6d_reduced.f:178 (set (reg:DF 361 [ prephitmp.35 ])
(reg:DF 358 [ prephitmp.35 ])) 351 {*movdf_hardfloat64} (nil))
...
(insn 47 46 231 9 thin6d_reduced.f:178 (set (reg:DF 361 [ prephitmp.35 ])
(reg:DF 179 [ prephitmp.35 ])) 351 {*movdf_hardfloat64} (nil))
...
(insn 196 194 198 11 thin6d_reduced.f:169 (set (mem/c/i:DF (plus:DI (reg/f:DI
477)
(const_int 56 [0x38])) [2 crkve+0 S8 A64])
(reg:DF 361 [ prephitmp.35 ])) 351 {*movdf_hardfloat64}
(expr_list:REG_DEAD (reg:DF 361 [ prephitmp.35 ])
(nil)))


And from the ira dump:

Pass1 cost computation:
a71 (r361,l1) best GENERAL_REGS, cover GENERAL_REGS
a3 (r361,l0) best GENERAL_REGS, cover GENERAL_REGS
  a3(r361,l0) costs: BASE_REGS:0,0 GENERAL_REGS:0,0 FLOAT_REGS:0,0
LINK_REGS:156,1836 CTR_REGS:156,1836 SPECIAL_REGS:156,1836 MEM:156
  a71(r361,l1) costs: BASE_REGS:0,0 GENERAL_REGS:0,0 FLOAT_REGS:0,0
LINK_REGS:1680,1680 CTR_REGS:1680,1680 SPECIAL_REGS:1680,1680 MEM:1120


Pass 2 cost computation:
r361: preferred GENERAL_REGS, alternative NO_REGS
  a3(r361,l0) costs: BASE_REGS:0,2240 GENERAL_REGS:0,2240 FLOAT_REGS:312,2552
LINK_REGS:234,4154 CTR_REGS:234,4154 SPECIAL_REGS:234,4154 MEM:156
  a71(r361,l1) costs: BASE_REGS:2240,2240 GENERAL_REGS:2240,2240
FLOAT_REGS:2240,2240 LINK_REGS:3920,3920 CTR_REGS:3920,3920
SPECIAL_REGS:3920,3920 MEM:3360

Not sure what's causing the FLOAT cost to be higher than the GENERAL cost yet.


-- 


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



[Bug c++/8045] Missing "unused variable" warning

2009-07-08 Thread manu at gcc dot gnu dot org


--- Comment #5 from manu at gcc dot gnu dot org  2009-07-08 22:08 ---
Are there some cases where a declaration such T x = y can be considered an use
of 'x' by itself?

The following patch warns for this, but it also produces warnings for some
testcases in the testsuite.

Index: gcc/cp/init.c
===
--- gcc/cp/init.c   (revision 149319)
+++ gcc/cp/init.c   (working copy)
@@ -1261,11 +1261,11 @@ build_aggr_init (tree exp, tree init, in
   if (init)
TREE_TYPE (init) = itype;
   return stmt_expr;
 }

-  if (TREE_CODE (exp) == VAR_DECL || TREE_CODE (exp) == PARM_DECL)
+  if (TREE_CODE (exp) == PARM_DECL)
 /* Just know that we've seen something for this node.  */
 TREE_USED (exp) = 1;

   is_global = begin_init_stmts (&stmt_expr, &compound_stmt);
   destroy_temps = stmts_are_full_exprs_p ();


-- 

manu at gcc dot gnu dot org changed:

   What|Removed |Added

  Known to fail||4.4.0
   Last reconfirmed|2005-12-11 23:03:44 |2009-07-08 22:08:57
   date||


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



[Bug middle-end/40692] New: [4.5 Regression] Endless recursion between fold_ternary and fold_cond_expr_with_comparison

2009-07-08 Thread jakub at gcc dot gnu dot org
Linux kernel, in particularly xen-blkfront.c, doesn't compile with GCC trunk.
4.5.0 20090625 was still fine, 4.5.0 20090630 is already wrong.

Simplified testcase:

#define M1(x) (((x) & 0x0002) ? 0x2 : ((x) & 0x1))
#define M2(x) (((x) & 0x000c) ? M1 ((x) >> 2) << 2 : M1 (x))
struct A { char f[1]; };
char a[M2 (4096UL - (long)&((struct A *) 16)->f)];


-- 
   Summary: [4.5 Regression] Endless recursion between fold_ternary
and fold_cond_expr_with_comparison
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: jakub at gcc dot gnu dot org
ReportedBy: jakub at gcc dot gnu dot org


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



[Bug libstdc++/40691] bug in logical not operator for valarray used with slice

2009-07-08 Thread janis at gcc dot gnu dot org


--- Comment #1 from janis at gcc dot gnu dot org  2009-07-08 22:27 ---
Subject: Bug 40691

Author: janis
Date: Wed Jul  8 22:26:50 2009
New Revision: 149393

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=149393
Log:
PR libstdc++/40691
* include/bugs/valarray-after.h (_Expr::operator!): Fix return type.
* testsuite/26_numerics/valarray/40691.cc: New test.

Added:
trunk/libstdc++-v3/testsuite/26_numerics/valarray/40691.cc
Modified:
trunk/libstdc++-v3/ChangeLog
trunk/libstdc++-v3/include/bits/valarray_after.h


-- 


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



[Bug middle-end/40692] [4.5 Regression] Endless recursion between fold_ternary and fold_cond_expr_with_comparison

2009-07-08 Thread jakub at gcc dot gnu dot org


--- Comment #1 from jakub at gcc dot gnu dot org  2009-07-08 23:09 ---
Caused by r149060.  Will debug tomorrow.
Alternative testcase that doesn't warn about VLA at file scope:
#define M1(x) (((x) & 0x0002) ? 0x2 : ((x) & 0x1))
#define M2(x) (((x) & 0x000c) ? M1 ((x) >> 2) << 2 : M1 (x))
struct A { char f[1]; };
int foo (void)
{
  return M2 (4096UL - (long)&((struct A *) 16UL)->f);
}


-- 


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



  1   2   >