[Bug target/38824] [4.4 Regression] performance regression of sse code from 4.2/4.3

2009-02-11 Thread bonzini at gnu dot org


--- Comment #23 from bonzini at gnu dot org  2009-02-11 08:01 ---
Subject: Re:  [4.4 Regression] performance regression of
 sse code from 4.2/4.3


 [xg...@shgcc-9 38824]$ time ./gcc-42.out
 real0m1.991s
 
 [xg...@shgcc-9 38824]$ time ./gcc-44.out
 real0m1.880s
 
 [xg...@shgcc-9 38824]$ time ./gcc-44p.out
 real0m1.690s

Even though you don't observe the reporter's slowdown from 4.2/4.3 to
unpatched 4.4, I guess this makes a good case for the patch.  Ok for trunk?

Paolo


-- 


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



[Bug target/38824] [4.4 Regression] performance regression of sse code from 4.2/4.3

2009-02-11 Thread ubizjak at gmail dot com


--- Comment #24 from ubizjak at gmail dot com  2009-02-11 08:14 ---
(In reply to comment #23)

 Even though you don't observe the reporter's slowdown from 4.2/4.3 to
 unpatched 4.4, I guess this makes a good case for the patch.  Ok for trunk?

OK with a ChangeLog ;)

BTW: Please watch benchmarks testers [1] for a couple of days...

[1] http://gcc.gnu.org/benchmarks/


-- 


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



[Bug target/39118] [4.3/4.4 Regression] x86_64 red zone violation

2009-02-11 Thread ubizjak at gmail dot com


--- Comment #16 from ubizjak at gmail dot com  2009-02-11 08:24 ---
(In reply to comment #13)
 This test case is from Mark Heffernan.  When compiling with -O2
 -fno-omit-frame-pointer with gcc 4.3, it shows a red zone violation in the
 epilogue:
 
 movl-160(%rbp), %eax
 popq%r15
 leave
 ret

This does not show redzone violation, but following does:

popq%rbx
popq%r12
popq%r13
popq%r14
movl-160(%rbp), %eax
popq%r15
leave
ret

Anyway, I have a patch.


-- 

ubizjak at gmail dot com changed:

   What|Removed |Added

 Status|REOPENED|ASSIGNED
   Last reconfirmed|2009-02-08 21:00:58 |2009-02-11 08:24:28
   date||


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



[Bug target/39118] [4.3/4.4 Regression] x86_64 red zone violation

2009-02-11 Thread ubizjak at gmail dot com


--- Comment #17 from ubizjak at gmail dot com  2009-02-11 08:32 ---
Created an attachment (id=17280)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17280action=view)
Patch

This patch inserts _memory_ blockages at the end of function prologue and at
the beginning of function epilogue.


-- 


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



[Bug target/39137] [4.4 Regression] -mpreferred-stack-boundary=2 causes lots of dynamic realign

2009-02-11 Thread ubizjak at gmail dot com


--- Comment #11 from ubizjak at gmail dot com  2009-02-11 08:42 ---
(In reply to comment #9)
 Created an attachment (id=17279)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17279action=view) [edit]
 A patch to add a new -malign-double= option

HJ, there were lots of problems with similar approach, see this revert:

2008-03-23  Uros Bizjak  ubiz...@gmail.com

Revert:
2008-03-05  H.J. Lu  hongjiu...@intel.com

* config/i386/i386-modes.def: Use 4 byte alignment on DI for
32bit host.

2008-03-19  Uros Bizjak  ubiz...@gmail.com

PR target/35496
* stor-layout.c (update_alignment_for_field): Set minimum alignment
of the underlying type of a MS bitfield layout to the natural
alignment of the type.

2008-03-22  Uros Bizjak  ubiz...@gmail.com

* config/i386/i386.c (assign_386_stack_local): Align DImode slots
to their natural alignment to avoid store forwarding stalls.


-- 


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



[Bug target/38824] [4.4 Regression] performance regression of sse code from 4.2/4.3

2009-02-11 Thread bonzini at gnu dot org


--- Comment #25 from bonzini at gnu dot org  2009-02-11 08:57 ---
patch committed (the changelog was in gcc-patches :-).


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug target/39118] [4.3/4.4 Regression] x86_64 red zone violation

2009-02-11 Thread uros at gcc dot gnu dot org


--- Comment #19 from uros at gcc dot gnu dot org  2009-02-11 11:43 ---
Subject: Bug 39118

Author: uros
Date: Wed Feb 11 11:43:24 2009
New Revision: 144100

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=144100
Log:
PR target/39118
* config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
(memory_blockage): New expander.
(*memory_blockage): New insn pattern.
* config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
instead of general blockage at the end of function prologue when
frame pointer is used to access red zone area.  Do not emit blockage
when profiling, it is emitted in generic code.
(ix86_expand_epilogue): Emit memory_blockage at the beginning of
function epilogue when frame pointer is used to access red zone area.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/config/i386/i386.md


-- 


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



[Bug target/39118] [4.3/4.4 Regression] x86_64 red zone violation

2009-02-11 Thread uros at gcc dot gnu dot org


--- Comment #20 from uros at gcc dot gnu dot org  2009-02-11 11:53 ---
Subject: Bug 39118

Author: uros
Date: Wed Feb 11 11:53:47 2009
New Revision: 144101

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=144101
Log:
PR target/39118
* config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
(memory_blockage): New expander.
(*memory_blockage): New insn pattern.
* config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
instead of general blockage at the end of function prologue when
frame pointer is used to access red zone area.  Do not emit blockage
when profiling, it is emitted in generic code.
(ix86_expand_epilogue): Emit memory_blockage at the beginning of
function epilogue when frame pointer is used to access red zone area.


Modified:
branches/gcc-4_3-branch/gcc/ChangeLog
branches/gcc-4_3-branch/gcc/config/i386/i386.c
branches/gcc-4_3-branch/gcc/config/i386/i386.md


-- 


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



[Bug target/39118] [4.3/4.4 Regression] x86_64 red zone violation

2009-02-11 Thread ubizjak at gmail dot com


--- Comment #21 from ubizjak at gmail dot com  2009-02-11 11:55 ---
Fixed again.


-- 

ubizjak at gmail dot com changed:

   What|Removed |Added

URL|http://gcc.gnu.org/ml/gcc-  |http://gcc.gnu.org/ml/gcc-
   |patches/2009-   |patches/2009-
   |02/msg00372.html|02/msg00512.html
 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug middle-end/22448] ICE on dereferencing a label in an asm statement

2009-02-11 Thread trick at icculus dot org


--- Comment #4 from trick at icculus dot org  2009-02-11 13:38 ---
This also happens when dereferencing void pointers (this is invalid code
though, but I get the same error with the code in the first post):

void foo (void *p)
{
asm( :: g (*p));
}

$ gcc -c foo.c
foo.c: In function ‘foo’:
foo.c:3: warning: dereferencing ‘void *’ pointer
foo.c:3: internal compiler error: in gimplify_expr, at gimplify.c:6288
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.

$ gcc -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/usr --enable-shared
--enable-languages=c,c++,fortran,objc,obj-c++,treelang --enable-threads=posix
--mandir=/usr/share/man --infodir=/usr/share/info --enable-__cxa_atexit
--disable-multilib --libdir=/usr/lib --libexecdir=/usr/lib --enable-clocale=gnu
--disable-libstdcxx-pch --with-tune=generic
Thread model: posix
gcc version 4.3.3 (GCC)


-- 


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



[Bug inline-asm/39078] Registers in on clober list are cloberred when compiled with optimization (x86_64) ?

2009-02-11 Thread valery_reznic at yahoo dot com


--- Comment #8 from valery_reznic at yahoo dot com  2009-02-11 14:26 ---
(In reply to comment #7)
 (In reply to comment #5)
 
  Any why you say I shouldn't call other function from inside asm ?
 
 See for example [1].
 
 [1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16331#c14
 
I read it. Still I don't get the point.
In the inline assembler I MYSELF put arguments in the places where MY (by the
way, written in assembler) function expect to get them.

I need nothing from gcc.


-- 


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



[Bug target/39137] [4.4 Regression] -mpreferred-stack-boundary=2 causes lots of dynamic realign

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


--- Comment #12 from hjl dot tools at gmail dot com  2009-02-11 14:39 
---
(In reply to comment #11)
 (In reply to comment #9)
  Created an attachment (id=17279)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17279action=view) [edit]
  A patch to add a new -malign-double= option
 
 HJ, there were lots of problems with similar approach, see this revert:
 

Another reason for the new option.


-- 


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



[Bug target/39118] [4.3/4.4 Regression] x86_64 red zone violation

2009-02-11 Thread ian at airs dot com


--- Comment #22 from ian at airs dot com  2009-02-11 14:49 ---
Thanks.


-- 


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



[Bug fortran/35476] Accepts invalid: USE/host association of generics with same specifics

2009-02-11 Thread pault at gcc dot gnu dot org


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING


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



[Bug target/39146] Unnecessary stack alignment

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


--- Comment #2 from hjl dot tools at gmail dot com  2009-02-11 15:15 ---
This is caused by assign_parms in function.c:

  /* Estimate stack alignment from parameter alignment.  */
  if (SUPPORTS_STACK_ALIGNMENT)
{
  unsigned int align = FUNCTION_ARG_BOUNDARY (data.promoted_mode,
  data.passed_type);
  if (TYPE_ALIGN (data.nominal_type)  align)
align = TYPE_ALIGN (data.passed_type);
  if (crtl-stack_alignment_estimated  align)
{
  gcc_assert (!crtl-stack_realign_processed);
  crtl-stack_alignment_estimated = align;
}
}


-- 


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



[Bug inline-asm/39078] Registers in on clober list are cloberred when compiled with optimization (x86_64) ?

2009-02-11 Thread ubizjak at gmail dot com


--- Comment #9 from ubizjak at gmail dot com  2009-02-11 15:32 ---
(In reply to comment #8)

 In the inline assembler I MYSELF put arguments in the places where MY (by the
 way, written in assembler) function expect to get them.

Then you actually don't need a compiler... ;)

 I need nothing from gcc.

True.


-- 


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



[Bug fortran/35476] Accepts invalid: USE/host association of generics with same specifics

2009-02-11 Thread burnus at gcc dot gnu dot org


--- Comment #6 from burnus at gcc dot gnu dot org  2009-02-11 15:36 ---
See: http://www.j3-fortran.org/doc/meeting/187/09-006A.txt
and there NUMBER: F03/0116. One now only needs to carefully read the text to
understand the interpretation.

Additionally, it needs to pass some more review (J3 and then WG5). Current
STATUS: J3 consideration in progress


-- 


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



[Bug target/39148] -Os increase code size when stack is aligned

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


--- Comment #3 from jakub at gcc dot gnu dot org  2009-02-11 17:11 ---
If you mean setting ACCUMULATE_OUTGOING_ARGS to true, I bet that could help
very small functions that need dynamic realignment, but certainly for larger
functions !ACCUMULATE_OUTGOING_ARGS results in smaller code, even if
realignment is done.


-- 


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



[Bug target/39148] -Os increase code size when stack is aligned

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


--- Comment #4 from hjl dot tools at gmail dot com  2009-02-11 17:16 ---
(In reply to comment #3)
 If you mean setting ACCUMULATE_OUTGOING_ARGS to true, I bet that could help

Oops. Yes, I meant setting ACCUMULATE_OUTGOING_ARGS to true when stack
alignment is needed.

 very small functions that need dynamic realignment, but certainly for larger
 functions !ACCUMULATE_OUTGOING_ARGS results in smaller code, even if
 realignment is done.
 

Joey and Xuepeng are running

http://www.inf.u-szeged.hu/csibe/

to see how ACCUMULATE_OUTGOING_ARGS affects code size.


-- 


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



[Bug c++/38228] [4.2/4.3/4.4 regression] ICE with invalid use of bound member function

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


--- Comment #5 from paolo dot carlini at oracle dot com  2009-02-11 17:52 
---
Paolo, should this be assigned to you?


-- 

paolo dot carlini at oracle dot com changed:

   What|Removed |Added

 CC||bonzini at gnu dot org


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



[Bug bootstrap/37739] [4.4 Regression] bootstrap broken with core gcc gcc-4.2.x

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


--- Comment #12 from lucier at math dot purdue dot edu  2009-02-11 18:13 
---
I just got the same error with

   140  12:54   ../../gcc-4.3.3/configure --prefix=/pkgs/gcc-4.3.3
--enable-languages=c
   141  12:54   make -j 4 bootstrap   build.log 

trying to build gcc-4.3.3 with

[luc...@descartes gcc-4.3.3]$ gcc -v
Using built-in specs.
Target: ppc64-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
--enable-secureplt --with-long-double-128 --build=ppc64-redhat-linux
--target=ppc64-redhat-linux --with-cpu=default32
Thread model: posix
gcc version 4.3.2 20081105 (Red Hat 4.3.2-7) (GCC) 

So, if it was fixed on mainline, it wasn't fixed on the branch.

Should I just reopen this against 4.3.3, or should I file a new bug report for
4.3.3 and refer back to this one.


-- 

lucier at math dot purdue dot edu changed:

   What|Removed |Added

 CC||lucier at math dot purdue
   ||dot edu


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



[Bug c/33466] mixed-case suffix for decimal float constants

2009-02-11 Thread janis at gcc dot gnu dot org


--- Comment #4 from janis at gcc dot gnu dot org  2009-02-11 18:27 ---
N1169 says that the suffix for a fixed-point literal constant is case
insensitive, which to me means that uhk can be uhK/uHk/uHK/Uhk/UhK/UHk as well
as UHK.  It's easier to implement that way, but if it's really supposed to be a
single case then I'd rather fix that now.

I asked a question about this, and about GCC's use of ll or LL as a length
indicator in fixed-point suffixes, in
http://gcc.gnu.org/ml/gcc/2009-02/msg00191.html but there are people copied on
this PR who probably don't follow that mailing list.  If you're familiar with
the fixed-point TR, please let me know your interpretation of this, or whether
there's a later draft of the TR than N1169.


-- 


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



[Bug c++/38228] [4.2/4.3/4.4 regression] ICE with invalid use of bound member function

2009-02-11 Thread bonzini at gnu dot org


--- Comment #6 from bonzini at gnu dot org  2009-02-11 18:59 ---
hm if i didn't look at it so far, i guess no. :-(  but if i have time i will
look at it.


-- 


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



[Bug target/38306] [4.4 Regression] 15% slowdown w.r.t. 4.3 of computational kernel on some architectures

2009-02-11 Thread bonzini at gnu dot org


--- Comment #12 from bonzini at gnu dot org  2009-02-11 19:00 ---
  /* For -O2 and beyond, turn off -fschedule-insns by default.  It tends to
 make the problem with not enough registers even worse.  */

As risky as this may be (for performance, not correctness), what about changing
if (level  1) to if (level == 2)?  And what about enabling it on x86-64?


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 CC||bonzini at gnu dot org


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



[Bug target/39152] New: [4.4 regression] 416.gamess in SPEC CPU 2006 failed

2009-02-11 Thread hjl dot tools at gmail dot com
On Linux/ia32, revision 144101 gave:

gfortran -m32 -c -o mccas.fppized.o-O2 -ffast-math -mfpmath=sse -mssse3
-ffixed-form   mccas.fppized.f
mccas.fppized.f: In function 'cashes':
mccas.fppized.f:1745: error: unrecognizable insn:
(insn 364 296 365 5 mccas.fppized.f:1712 (set (reg/v:SI 4 si [orig:93 ii ]
[93])
(mem/s:SI (plus:SI (ashift:SI (reg:SI 3 bx)
(const_int 2 [0x2]))
(const:SI (plus:SI (symbol_ref:SI (ijpair_) var_decl
0x2b5442f74f00 ijpair)
(const_int -4 [0xfffc] [2 ijpair.ia S4
A32])) -1 (nil))
mccas.fppized.f:1745: internal compiler error: in extract_insn, at recog.c:2038
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
specmake: *** [mccas.fppized.o] Error 1

Revision 144092 is OK.


-- 
   Summary: [4.4 regression] 416.gamess in SPEC CPU 2006 failed
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
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=39152



[Bug bootstrap/33100] [4.3/4.4 regression] on bootstrap getting section .eh_frame: bad cie version 0: offset 0x0

2009-02-11 Thread bugzilla-gcc at thewrittenword dot com


--- Comment #36 from bugzilla-gcc at thewrittenword dot com  2009-02-11 
19:03 ---
(In reply to comment #26)
  We have filed case #65952072 with Sun to get this backported to Solaris 10.
 
 Do you have any news about this?

Sun just released patch 139574-03 for SPARC and 139575-03 for x86. We've built
gcc-4.2.4 with the x86 patch and it resolved the issue for us.


-- 


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



[Bug target/38056] Missed tail calls on ia64

2009-02-11 Thread sje at cup dot hp dot com


--- Comment #2 from sje at cup dot hp dot com  2009-02-11 19:04 ---
This behaviour changed with the patch to fix PR 10907 and I believe that GCC is
correct in not doing the tail call optimization.  The optimization is not done
because ia64_function_ok_for_sibcall returns false and it returns false because
bar is defined in a different object file.  That object could be in a shared
library and could change the GP.  Thus GCC needs to save and restore the GP
when making calls to another object file and that inhibits the tail call
optimization.  If bar were defined in the same file GCC could and does do the
tail call optimization.


-- 

sje at cup dot hp dot com changed:

   What|Removed |Added

 CC||sje at cup dot hp dot com
 Status|NEW |RESOLVED
 Resolution||INVALID


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



[Bug target/38306] [4.4 Regression] 15% slowdown w.r.t. 4.3 of computational kernel on some architectures

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


--- Comment #13 from jv244 at cam dot ac dot uk  2009-02-11 19:25 ---
(In reply to comment #12)
   /* For -O2 and beyond, turn off -fschedule-insns by default.  It tends to
  make the problem with not enough registers even worse.  */
 
 As risky as this may be (for performance, not correctness), what about 
 changing
 if (level  1) to if (level == 2)?  And what about enabling it on x86-64?

But even on x86-64 this seems to lead to ICEs (see PR38403). 


-- 


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



[Bug c++/39153] New: virtual default dtor not defined

2009-02-11 Thread bkoz at gcc dot gnu dot org
Compiling:

struct _Impl_base
{
  _Impl_base() = default;
  virtual ~_Impl_base() = default;
};

templatetypename _Tp
class _Impl : public _Impl_base
{ };

int main()
{
  _Implint i;
  return 0;
}


Gives:
gcc version 4.4.0 20090208 (experimental) (GCC) 

%COMP.sh -g -O0 -std=c++0x -fno-inline vague_vs_default.cc
vague_vs_default.cc:4: warning: inline function ‘virtual
_Impl_base::~_Impl_base()’ used but never defined
vague_vs_default.cc:4: warning: inline function ‘virtual
_Impl_base::~_Impl_base()’ used but never defined

Which seems strange, as the base destructor is defined as default.

Also, the vauge linkage/vtable documentation bits here
http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118

may need to be updated or expanded to take into account defaulted destructors
vs. key method vtable emission.


-- 
   Summary: virtual default dtor not defined
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Keywords: documentation
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bkoz at gcc dot gnu dot org


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



[Bug middle-end/39154] New: Miscompilation of VLAs in nested parallel regions

2009-02-11 Thread jakub at gcc dot gnu dot org
The following testcase segfaults at runtime or ICEs (with checking compiler):

extern void abort (void);

int n = 20;

int
main ()
{
  int a[n], b[n][n];

#pragma omp parallel for
for (int i = 0; i  n; i++)
  {
a[i] = i + 1;
#pragma omp parallel for
for (int j = 0; j  n; j++)
  b[i][j] = a[i];
  }

  for (int i = 0; i  n; i++)
{
  for (int j = 0; j  n; j++)
if (b[i][j] != i + 1)
  abort ();
  if (a[i] != i + 1)
abort ();
}

#pragma omp parallel for shared (n, a, b)
for (int i = 0; i  n; i++)
  {
a[i] = i + 3;
#pragma omp parallel for
for (int j = 0; j  n; j++)
  b[i][j] = a[i];
  }

  for (int i = 0; i  n; i++)
{
  for (int j = 0; j  n; j++)
if (b[i][j] != i + 3)
  abort ();
  if (a[i] != i + 3)
abort ();
}

#pragma omp parallel for
for (int i = 0; i  n; i++)
  {
a[i] = i + 5;
#pragma omp parallel for shared (n, a, b)
for (int j = 0; j  n; j++)
  b[i][j] = a[i];
  }

  for (int i = 0; i  n; i++)
{
  for (int j = 0; j  n; j++)
if (b[i][j] != i + 5)
  abort ();
  if (a[i] != i + 5)
abort ();
}

#pragma omp parallel for shared (n, a, b)
for (int i = 0; i  n; i++)
  {
a[i] = i + 7;
#pragma omp parallel for shared (n, a, b)
for (int j = 0; j  n; j++)
  b[i][j] = a[i];
  }

  for (int i = 0; i  n; i++)
{
  for (int j = 0; j  n; j++)
if (b[i][j] != i + 7)
  abort ();
  if (a[i] != i + 7)
abort ();
}
  return 0;
}


-- 
   Summary: Miscompilation of VLAs in nested parallel regions
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Keywords: wrong-code, ice-on-valid-code
  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=39154



[Bug target/39152] [4.4 regression] Revision 144098 breaks 416.gamess in SPEC CPU 2006

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


--- Comment #1 from hjl dot tools at gmail dot com  2009-02-11 20:24 ---
Revision 144098:

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

is the cause. Joey, Xuepeng, can you find a small testcase?


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

 CC||Joey dot ye at intel dot
   ||com, xuepeng dot guo at
   ||intel dot com, bonzini at
   ||gnu dot org
Summary|[4.4 regression] 416.gamess |[4.4 regression] Revision
   |in SPEC CPU 2006 failed |144098 breaks 416.gamess in
   ||SPEC CPU 2006


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



[Bug target/39152] [4.4 regression] Revision 144098 breaks 416.gamess in SPEC CPU 2006

2009-02-11 Thread bonzini at gnu dot org


--- Comment #2 from bonzini at gnu dot org  2009-02-11 20:48 ---
Why is this unrecognizable?!?  ebx can be an index as well as the base.

Anyway, easily fixed.  Will post a patch tomorrow.


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |bonzini at gnu dot org
   |dot org |
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-02-11 20:48:03
   date||


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



[Bug bootstrap/39151] If you build and install 'ppl' (and not 'cloog') then files will still link with 'ppl'.

2009-02-11 Thread rob1weld at aol dot com


--- Comment #1 from rob1weld at aol dot com  2009-02-11 20:54 ---
A workaround is to ./configure using --without-ppl which will cause
ppllibs to create an empty variable in the Makefiles. The output from
the initial configuring will look the same, but this Bug will be avoided.

I'm going to drop this to Minor since this might be an uncommon situation
and there are two workarounds (and no fix, yet). The second workaround
is to uninstall 'ppl' _or_ install 'cloog' which is not likely near as good
a solution as the first workaround (in _these_ particular circumstances).

Rob


-- 

rob1weld at aol dot com changed:

   What|Removed |Added

   Severity|normal  |minor


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



[Bug bootstrap/39150] Configure scripts have no 64-Bit Solaris defined (only i386-solaris*).

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2009-02-11 20:56 ---
How is this major, this is an enhancement to the build system.  i386-solaris is
a multi arch target so it includes the x86_64 solaris target also.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Severity|major   |enhancement


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



[Bug target/39152] [4.4 regression] Revision 144098 breaks 416.gamess in SPEC CPU 2006

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


--- Comment #3 from hjl dot tools at gmail dot com  2009-02-11 20:59 ---
A testcase:

[...@gnu-27 Docs]$ cat /tmp/x.f
  SUBROUTINE CASHES(E,HESS,FC,FA,NORB,NPR)
  IMPLICIT DOUBLE PRECISION (A-H,O-Z)
  PARAMETER (MXAO=2047)
  DIMENSION HESS(NPR),E(NORB,*),FC(*),FA(*)
  COMMON /IJPAIR/ IA(MXAO)
  COMMON /MCPAR / NFZC,NCORBS,NCI,NORBS,NORBX,NUM
  K=0
  DO 200 IU = 1,NORB - NCORBS
 I = IU + NCORBS
 II=IA(I)+I
 DO 100 J = 1,NCORBS
IF (I.GT.NORBS) THEN
   HESS(K)=FC(II) + FA(II) - E(J,J)
ELSE
   HESS(K)=FA(II) - E(I,I) - E(J,J) + FC(JJ) + FA(JJ)
END IF
  100CONTINUE
  200 CONTINUE
  RETURN
  END
[...@gnu-27 Docs]$ /export/gnu/import/rrs/144098/usr/bin/gfortran -m32 -S -O2
-msse2 -mfpmath=sse -ffast-math -ffixed-form /tmp/x.f
/tmp/x.f: In function ‘cashes’:
/tmp/x.f:19: error: unrecognizable insn:
(insn 178 144 179 4 /tmp/x.f:10 (set (reg/v:SI 4 si [orig:73 ii ] [73])
(mem/s:SI (plus:SI (ashift:SI (reg:SI 3 bx)
(const_int 2 [0x2]))
(const:SI (plus:SI (symbol_ref:SI (ijpair_) var_decl
0x2b73b1ef0aa0 ijpair)
(const_int -4 [0xfffc] [3 ijpair.ia S4
A32])) -1 (nil))
/tmp/x.f:19: internal compiler error: in extract_insn, at recog.c:2038
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
[...@gnu-27 Docs]$ 


-- 


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



[Bug c++/39155] New: Internal compiler error on (invalid) explicit template instantiation of template function

2009-02-11 Thread cas43 at cs dot stanford dot edu
The following code causes an internal compiler error when compiled with g++
without options:

namespace N{templateclass T void foo();}
using namespace N;
templateclass T void foo(){}
template void fooint();

Compiler info:

Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4.0.1/configure
--prefix=/usr/local/compilers/gcc-4.0.1-x86_64-x86_64 --enable-languages=c,c++
--enable-bootstrap
Thread model: posix
gcc version 4.0.1

The code compiles with a useful diagnostic (and no internal error) when
compiled with this newer version of gcc:

Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-libgcj-multifile
--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.4.2-gcj-1.4.2.0/jre --with-cpu=generic
--host=x86_64-redhat-linux
Thread model: posix
gcc version 4.1.2 20070626 (Red Hat 4.1.2-14)


-- 
   Summary: Internal compiler error on (invalid) explicit template
instantiation of template function
   Product: gcc
   Version: 4.1.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: cas43 at cs dot stanford dot edu


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



[Bug c++/39155] Internal compiler error on (invalid) explicit template instantiation of template function

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2009-02-11 21:08 ---
You reported this against 4.0.1 and 4.0.x and 4.1.x are no longer being
supported (meaning no more 4.0.x or 4.1.x release).  Since it has been fixed in
4.1.2, I am closing this as fixed.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.1.2
Version|4.1.2   |4.0.1


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



[Bug c++/39156] New: Internal compiler error on (invalid) use of undefined type in template function

2009-02-11 Thread cas43 at cs dot stanford dot edu
This line of code causes an internal compiler when compiled with g++ without
options:

class B;templateclass T void foo(B x) {x(0);}

Compiler:

Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4.0.1/configure
--prefix=/usr/local/compilers/gcc-4.0.1-x86_64-x86_64 --enable-languages=c,c++
--enable-bootstrap
Thread model: posix
gcc version 4.0.1

Compiling with this newer version yields a meaningful diagnostic instead of an
internal error:

Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-libgcj-multifile
--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.4.2-gcj-1.4.2.0/jre --with-cpu=generic
--host=x86_64-redhat-linux
Thread model: posix
gcc version 4.1.2 20070626 (Red Hat 4.1.2-14)


-- 
   Summary: Internal compiler error on (invalid) use of undefined
type in template function
   Product: gcc
   Version: 4.1.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: cas43 at cs dot stanford dot edu


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



[Bug c++/39156] Internal compiler error on (invalid) use of undefined type in template function

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


--- Comment #1 from pinskia at gcc dot gnu dot org  2009-02-11 21:12 ---
You reported this against 4.0.1 and 4.0.x and 4.1.x are no longer being
supported (meaning no more 4.0.x or 4.1.x release).  Since it has been fixed in
4.1.2, I am closing this as fixed.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.1.2
Version|4.1.2   |4.0.1


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



[Bug target/39152] [4.4 regression] Revision 144098 breaks 416.gamess in SPEC CPU 2006

2009-02-11 Thread bonzini at gnu dot org


--- Comment #4 from bonzini at gnu dot org  2009-02-11 21:20 ---
The problem is that inside mems we use MULT not ASHIFT.

Can you please test this? Thanks!

--- config/i386/i386.md (revision 144098)
+++ config/i386/i386.md (working copy)
@@ -20722,7 +20722,7 @@
(parallel [(set (match_dup 0)
(match_op_dup 3 [(match_dup 0) (match_dup 1)]))
   (clobber (reg:CC FLAGS_REG))])]
-  operands[4] = simplify_replace_rtx (operands[2], operands[0],
operands[1]);)
+  operands[4] = replace_rtx (operands[2], operands[0], operands[1]);)

 (define_peephole2
   [(set (match_operand 0 register_operand )


-- 


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



[Bug target/39152] [4.4 regression] Revision 144098 breaks 416.gamess in SPEC CPU 2006

2009-02-11 Thread bonzini at gnu dot org


--- Comment #5 from bonzini at gnu dot org  2009-02-11 21:20 ---
There was wrapping, all you have to do is remove simplify_.


-- 


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



[Bug c++/28274] [4.0/4.1/4.2 Regression] Redeclaration with extra default argument doesn't work

2009-02-11 Thread jason at gcc dot gnu dot org


--- Comment #9 from jason at gcc dot gnu dot org  2009-02-11 21:28 ---
This is still broken inside extern C:

extern C {
void foo (int i, int j = 6);
void foo (int i = 4, int j);
}


-- 

jason at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |


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



[Bug c++/28274] [4.2/4.3/4.4 Regression] Redeclaration with extra default argument doesn't work

2009-02-11 Thread jason at gcc dot gnu dot org


--- Comment #10 from jason at gcc dot gnu dot org  2009-02-11 21:31 ---
The extern C testcase passed under the 3.2 compiler; marking as regression.


-- 

jason at gcc dot gnu dot org changed:

   What|Removed |Added

  Known to work|3.3.6 3.4.0 3.4.5 4.0.2 |3.3.6 3.4.0 3.4.5 4.0.2
   |4.0.4 4.1.2 4.2.0   |4.0.4 4.1.2
   Priority|P1  |P2
Summary|[4.0/4.1/4.2 Regression]|[4.2/4.3/4.4 Regression]
   |Redeclaration with extra|Redeclaration with extra
   |default argument doesn't|default argument doesn't
   |work|work


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



[Bug c++/34691] [4.2/4.3/4.4 Regression] Default argument checking not performed after overload resolution with C linkage

2009-02-11 Thread jason at gcc dot gnu dot org


--- Comment #8 from jason at gcc dot gnu dot org  2009-02-11 21:31 ---
I've reopened PR 28274 with the PR in comment #2.


-- 


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



[Bug target/39152] [4.4 regression] Revision 144098 breaks 416.gamess in SPEC CPU 2006

2009-02-11 Thread dominiq at lps dot ens dot fr


--- Comment #6 from dominiq at lps dot ens dot fr  2009-02-11 21:41 ---
With the patch in comment #4 the test in comment #3 compiles without ICE on
i686-apple-darwin9 (it gave an ICE before the patch).


-- 


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



[Bug middle-end/39157] New: Code that compiles fine in 1GB of memory with 4.1.2 requires 20GB in 4.2.* and higher

2009-02-11 Thread lucier at math dot purdue dot edu
With this compiler

[luc...@descartes gambit]$ gcc -v
Using built-in specs.
Target: powerpc64-unknown-linux-gnu
Configured with: ../../gcc-4.3.3/configure --prefix=/pkgs/gcc-4.3.3
--enable-languages=c --with-cpu=default64
Thread model: posix
gcc version 4.3.3 (GCC) 

with the file compiler.i found here:

http://www.math.purdue.edu/~lucier/bugzilla/8/

attempting to compile with these options:

gcc -m64 -mcpu=970 -Wall -W -Wno-unused -O1 -fno-math-errno -fschedule-insns2
-fno-trapping-math -fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC
-fno-common -rdynamic -shared

can't compile in 8GB of RAM.  With this compiler:

euler-77% /pkgs/gcc-4.2.3/bin/gcc -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../../gcc-4.2.3/configure --prefix=/pkgs/gcc-4.2.3
--enable-checking=release --with-gmp=/pkgs/gmp-4.2.2
--with-mpfr=/pkgs/gmp-4.2.2
Thread model: posix
gcc version 4.2.3

and these options:

gcc -Wall -W -Wno-unused -O1 -fno-math-errno -fschedule-insns2
-fno-trapping-math -fno-strict-aliasing -fwrapv -fomit-frame-pointer -fPIC
-fno-common -mieee-fp -rdynamic -shared

it can't compiler in 20GB of RAM.  (That machine has only 16GB of RAM, so I
killed the compile when it hit 20GB of physical+virtual memory.)

It compiles just fine in about 1GB of RAM with 

euler-76% gcc -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../configure --prefix=/pkgs/gcc-4.1.2
Thread model: posix
gcc version 4.1.2

compiler.i is the output from the Gambit Scheme-C compiler; the source scheme
program is from a standard benchmark suite for Scheme compilers.  So I found
this by trying to change the code generator for Gambit and running the
benchmark suite on x86_64.

I don't know how this can be fixed.  Basically, the entire middle-end
infrastructure since 4.1.* is telling people like me with computer-generated
code like this to just go away (to put it very politely).  On Mac OS X 10.5.*,
Apple bundles their version of 4.0.1, which compiles this just fine; on Red Hat
5.2, they bundle their version of 4.1.2 (I think, my RH5.2 box is down at the
moment), which compiles this just fine; but on Ubuntu 8.10 or Fedora 10 you
can't compile this because they bundle newer compilers.  (I guess I'll see if I
can install 4.1.* on both of these.)

As a stopgap measure, perhaps someone can tell me what optimization level to
use.  As you can see, I use -O1 and a few others (mainly -fschedule-insns2). 
gcc 4.1.* and earlier compiled something like this just fine, but -O1 must mean
something different now.


-- 
   Summary: Code that compiles fine in 1GB of memory with 4.1.2
requires  20GB in 4.2.* and higher
   Product: gcc
   Version: 4.3.3
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: lucier at math dot purdue dot edu
 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=39157



[Bug c++/39153] virtual default dtor not defined

2009-02-11 Thread jason at gcc dot gnu dot org


-- 

jason at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |jason at gcc dot gnu dot org
   |dot org |
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-02-11 21:56:21
   date||


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



[Bug middle-end/39154] Miscompilation of VLAs in nested parallel regions

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


--- Comment #1 from jakub at gcc dot gnu dot org  2009-02-11 21:58 ---
Subject: Bug 39154

Author: jakub
Date: Wed Feb 11 21:57:52 2009
New Revision: 144111

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=144111
Log:
PR middle-end/39154
* gimplify.c (omp_notice_variable): If adding GOVD_SEEN
bit to variable length decl's flags, add it also to its
pointer replacement variable.

* testsuite/libgomp.c/pr39154.c: New test.

Added:
trunk/libgomp/testsuite/libgomp.c/pr39154.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/gimplify.c
trunk/libgomp/ChangeLog


-- 


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



[Bug middle-end/39154] Miscompilation of VLAs in nested parallel regions

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


--- Comment #2 from jakub at gcc dot gnu dot org  2009-02-11 22:02 ---
Fixed on the trunk so far.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-02-11 22:02:00
   date||


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



[Bug c++/36954] Wrong warning with -Wlogical-op

2009-02-11 Thread manu at gcc dot gnu dot org


-- 

manu at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu dot org
  BugsThisDependsOn||16302
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-02-11 22:08:52
   date||


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



[Bug target/39137] [4.4 Regression] -mpreferred-stack-boundary=2 causes lots of dynamic realign

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


--- Comment #13 from pinskia at gcc dot gnu dot org  2009-02-11 22:11 
---
Is there a reason why this is a P1?  I don't see why this should be a P1.


-- 


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



[Bug c++/39158] New: virtual default dtor not defined

2009-02-11 Thread bkoz at gcc dot gnu dot org
Compiling:

struct _Impl_base
{
  _Impl_base() = default;
  virtual ~_Impl_base() = default;
};

templatetypename _Tp
class _Impl : public _Impl_base
{ };

int main()
{
  _Implint i;
  return 0;
}


Gives:
gcc version 4.4.0 20090208 (experimental) (GCC) 

%COMP.sh -g -O0 -std=c++0x -fno-inline vague_vs_default.cc
vague_vs_default.cc:4: warning: inline function ‘virtual
_Impl_base::~_Impl_base()’ used but never defined
vague_vs_default.cc:4: warning: inline function ‘virtual
_Impl_base::~_Impl_base()’ used but never defined

Which seems strange, as the base destructor is defined as default.

Also, the vauge linkage/vtable documentation bits here
http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118

may need to be updated or expanded to take into account defaulted destructors
vs. key method vtable emission.


-- 
   Summary: virtual default dtor not defined
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Keywords: documentation
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bkoz at gcc dot gnu dot org


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



[Bug target/36513] -Wlogical-op warns about strchr

2009-02-11 Thread manu at gcc dot gnu dot org


--- Comment #2 from manu at gcc dot gnu dot org  2009-02-11 22:13 ---
We need a reproducible preprocessed testcase. 
See http://gcc.gnu.org/bugs.html#detailed


-- 

manu at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu dot org
 Status|UNCONFIRMED |WAITING


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



[Bug c++/39153] virtual default dtor not defined

2009-02-11 Thread bkoz at gcc dot gnu dot org


--- Comment #1 from bkoz at gcc dot gnu dot org  2009-02-11 22:13 ---
*** Bug 39158 has been marked as a duplicate of this bug. ***


-- 


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



[Bug c++/39158] virtual default dtor not defined

2009-02-11 Thread bkoz at gcc dot gnu dot org


--- Comment #1 from bkoz at gcc dot gnu dot org  2009-02-11 22:13 ---

Whoops, wrong state in browser

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


-- 

bkoz at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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



[Bug c++/30111] Value-initialization of POD base class doesn't initialize members

2009-02-11 Thread jason at gcc dot gnu dot org


--- Comment #9 from jason at gcc dot gnu dot org  2009-02-11 22:38 ---
Subject: Bug 30111

Author: jason
Date: Wed Feb 11 22:38:37 2009
New Revision: 144112

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=144112
Log:
PR c++/30111
* init.c (build_value_init_noctor): Split out from...
(build_value_init): ...here.
(expand_aggr_init_1): Handle value-initialization.
* cp-tree.h: Add declaration.
* class.c (type_has_user_provided_constructor):
Handle non-class arguments.

Added:
trunk/gcc/testsuite/g++.dg/init/value7.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/class.c
trunk/gcc/cp/cp-tree.h
trunk/gcc/cp/init.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug c++/30111] Value-initialization of POD base class doesn't initialize members

2009-02-11 Thread jason at gcc dot gnu dot org


--- Comment #10 from jason at gcc dot gnu dot org  2009-02-11 22:50 ---
Fixed for 4.4.


-- 

jason at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug c/32061] (Wlogical-op) wording of warning of constant logicials need improvement

2009-02-11 Thread manu at gcc dot gnu dot org


--- Comment #3 from manu at gcc dot gnu dot org  2009-02-11 23:04 ---
Confirmed. I have a patch for this for 4.5.

The new wording will say:

warning: logical 'or' applied to non-boolean constant.

Are you satisfied with this?

 
 BTW, why no warning for this?
resp == 0  0
 Naturally, all the above constants will hide behind some macros which could
 indicate a real error, hence the value of the warning.

Warning for (x  0) or (x  1) would produce hundreds of false positives. We
shouldn't warn about your testcase either.


-- 

manu at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||manu at gcc dot gnu dot org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-02-11 23:04:41
   date||
Summary|wording of warning of   |(Wlogical-op) wording of
   |constant logicials need |warning of constant
   |improvement |logicials need improvement


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



[Bug c++/39054] [4.3 regression] ICE with invalid pseudo-dtor in template

2009-02-11 Thread jason at gcc dot gnu dot org


--- Comment #4 from jason at gcc dot gnu dot org  2009-02-11 23:04 ---
Fixed for 4.3 as well.


-- 

jason at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug target/38056] Missed tail calls on ia64

2009-02-11 Thread jsworley at qwest dot net


--- Comment #3 from jsworley at qwest dot net  2009-02-11 23:41 ---
Accepting Steve Ellcey's analysis, it would seem that the tail call *should* be
recognized when -mconstant-gp is specified; however, it isn't.


-- 

jsworley at qwest dot net changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|INVALID |


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



[Bug c++/39159] New: unhelpful attribute warning on matching declaration after definition

2009-02-11 Thread sebor at roguewave dot com
gcc 4.3 issues a warning for the declaration of struct A below despite the
attribute on the declaration being consistent with that on the definition and
thus benign. While the warning is valuable in cases where the attributes
between the declaration and the definition do not match, it is not useful in
benign cases such as the one below. In these cases the warning makes applying
the attribute difficult in existing C++ libraries that rely heavily but not
completely on forward declarations and that also already make use of the Visual
C++ __declspec(dllexport) feature or the Sun C++ __global or __protected
specifiers, neither of which warns about such benign cases.

$ cat t.C  g++ -c t.C
struct __attribute__ ((visibility (default))) A { };
struct __attribute__ ((visibility (default))) A;
t.C:2: warning: type attributes ignored after type is already defined


-- 
   Summary: unhelpful attribute warning on matching declaration
after definition
   Product: gcc
   Version: 4.3.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: sebor at roguewave dot com


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



[Bug target/39146] Unnecessary stack alignment

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


--- Comment #4 from hjl dot tools at gmail dot com  2009-02-11 23:59 ---
The dynamic stack alignment may not be easy to optimize out.


-- 


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



[Bug other/28322] GCC new warnings and compatibility

2009-02-11 Thread manu at gcc dot gnu dot org


--- Comment #24 from manu at gcc dot gnu dot org  2009-02-12 00:25 ---
Is there anything that remains to be done here?


-- 

manu at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |WAITING


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



[Bug target/39148] -Os increase code size when stack is aligned

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


--- Comment #5 from hjl dot tools at gmail dot com  2009-02-12 00:44 ---
I tried -maccumulate-outgoing-args on 2.6 kernel:

   textdata bss dec hex filename
5136786  600084 1003520 6740390  66d9a6 vmlinux
5086759  600084 1003520 6690363  66163b /tmp/vmlinux.old

It does increase binary size. Should we consider to
turn on ACCUMULATE_OUTGOING_ARGS when stack is aligned?
If ACCUMULATE_OUTGOING_ARGS is off, ECX will be used
for stack alignment and it may lead to code size
increase due to register spill since ia32 has very
few registers.


-- 


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



[Bug ada/39160] New: Assert_Failure in sinfo.adb

2009-02-11 Thread wilsons at start dot ca
Note that the test code is not semantically correct.  Correct code compiles
just fine. For me, the bug manifests in both 4.3.2 and the 4.4-20090206
snapshot.

Configure options:
  --disable-multilib --enable-languages=c,ada

System type:
  $ uname -ro
  2.6.27.12-170.2.5.fc10.x86_64 GNU/Linux

Output:
  $ gcc -c bug.adb
  +===GNAT BUG DETECTED==+
  | 4.4.0 20090206 (experimental) (x86_64-unknown-linux-gnu) Assert_Failure
sinfo.adb:1987|
  | Error detected at bug.adb:17:26  |
  | Please submit a bug report; see http://gcc.gnu.org/bugs.html.|
  | Use a subject line meaningful to you and us to track the bug.|
  | Include the entire contents of this bug box in the report.   |
  | Include the exact gcc or gnatmake command that you entered.  |
  | Also include sources listed below in gnatchop format |
  | (concatenated together with no headers between files).   |
  +==+


-- 
   Summary: Assert_Failure in sinfo.adb
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ada
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: wilsons at start dot ca
  GCC host triplet: x86_64-unknown-linux-gnu


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



[Bug ada/39160] Assert_Failure in sinfo.adb

2009-02-11 Thread wilsons at start dot ca


--- Comment #1 from wilsons at start dot ca  2009-02-12 00:56 ---
Created an attachment (id=17282)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17282action=view)
Test case


-- 


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



[Bug target/39152] [4.4 regression] Revision 144098 breaks 416.gamess in SPEC CPU 2006

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


--- Comment #7 from hjl dot tools at gmail dot com  2009-02-12 01:38 ---
(In reply to comment #4)
 The problem is that inside mems we use MULT not ASHIFT.
 
 Can you please test this? Thanks!
 
 --- config/i386/i386.md (revision 144098)
 +++ config/i386/i386.md (working copy)
 @@ -20722,7 +20722,7 @@
 (parallel [(set (match_dup 0)
 (match_op_dup 3 [(match_dup 0) (match_dup 1)]))
(clobber (reg:CC FLAGS_REG))])]
 -  operands[4] = simplify_replace_rtx (operands[2], operands[0],
 operands[1]);)
 +  operands[4] = replace_rtx (operands[2], operands[0], operands[1]);)
 
  (define_peephole2
[(set (match_operand 0 register_operand )
 

I verified that this fixed 416.gamess.


-- 


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



[Bug target/39146] Unnecessary stack alignment

2009-02-11 Thread Joey dot ye at intel dot com


--- Comment #5 from Joey dot ye at intel dot com  2009-02-12 01:45 ---
Stack realign is finalized by
stack_realign = (incoming_stack_boundary
 (current_function_is_leaf
   ? crtl-max_used_stack_slot_alignment
   : crtl-stack_alignment_needed));
since bar is leaf function, it checks max_used_stack_slot_alignment.

According to it's definition, max_used_stack_slot_alignment is   /* The largest
alignment of slot allocated on the stack.  */. Parameter x isn't allocated on
local stack, so max_used_stack_slot_alignment shouldn't be set to 256 bits.

In locate_and_pad_parm,
  if (crtl-max_used_stack_slot_alignment  crtl-stack_alignment_needed)
crtl-max_used_stack_slot_alignment = crtl-stack_alignment_needed;
sets max_used_stack_slot_alignment to 256 bits, which seems shouldn't happen
all the time.


-- 


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



[Bug target/39146] Unnecessary stack alignment

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


--- Comment #6 from hjl dot tools at gmail dot com  2009-02-12 01:58 ---
locate_and_pad_parm in function.c has

  /* Remember if the outgoing parameter requires extra alignment on the
 calling function side.  */
  if (crtl-stack_alignment_needed  boundary)
crtl-stack_alignment_needed = boundary;
  if (crtl-max_used_stack_slot_alignment  crtl-stack_alignment_needed)
crtl-max_used_stack_slot_alignment = crtl-stack_alignment_needed;
  if (crtl-preferred_stack_boundary  boundary)
crtl-preferred_stack_boundary = boundary;


-- 


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



[Bug c++/39153] virtual default dtor not defined

2009-02-11 Thread jason at gcc dot gnu dot org


--- Comment #2 from jason at gcc dot gnu dot org  2009-02-12 02:01 ---
Subject: Bug 39153

Author: jason
Date: Thu Feb 12 02:01:07 2009
New Revision: 144119

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=144119
Log:
PR c++/39153
* decl2.c (cp_write_global_declarations):
Check DECL_DEFAULTED_FN, not DECL_ARTIFICIAL.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/defaulted9.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl2.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug libgcj/39161] New: gcc 4.4.0 20090210 - The 'copy-vmresources.sh' script can't find the 'mkinstalldirs' script.

2009-02-11 Thread rob1weld at aol dot com
I am building gcc 4.4.0 20090210 [trunk revision 144083] on OpenSolaris 2009.06
.

The 'copy-vmresources.sh' script can't find the 'mkinstalldirs' script.


# isainfo -k
amd64

# uname -a
SunOS opensolaris 5.11 snv_106 i86pc i386 i86pc


# gcc/xgcc -v
Using built-in specs.
Target: i386-pc-solaris2.11
Configured with: ../gcc_trunk/configure --build=i386-pc-solaris2.11
--target=i386-pc-solaris2.11
--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/bin/ld --with-gmp=/usr/local --with-mpfr=/usr/local
--without-ppl
Thread model: posix
gcc version 4.4.0 20090210 (experimental) [trunk revision 144083] (GCC) 


# gmake
... (long time)
mkdir ../gnu/java/locale
../../../../../gcc_trunk/libjava/classpath/scripts/generate-locale-list.sh 
../gnu/java/locale/LocaleData.java
true
top_builddir=.. top_srcdir=../../../../../gcc_trunk/libjava/classpath /bin/sh
./gen-classlist.sh standard
Adding java source files from srcdir
'../../../../../gcc_trunk/libjava/classpath'.
Adding java source files from VM directory /usr/share/src/gcc_trunk/libjava
Adding java source files from VM directory
/usr/share/src/gcc_build/i386-pc-solaris2.11/libjava
Adding generated files in builddir '..'.
touch compile-classes
mkdir gnu
mkdir gnu/javax
mkdir gnu/javax/security
...
mkdir META-INF
mkdir META-INF/services
./copy-vmresources.sh[34]: mkinstalldirs: not found [No such file or directory]
./copy-vmresources.sh[34]:
/usr/share/src/gcc_build/i386-pc-solaris2.11/libjava/classpath/lib/./classpath/resource/java/util/logging/:
not found [No such file or directory]
./copy-vmresources.sh[34]: mkinstalldirs: not found [No such file or directory]
./copy-vmresources.sh[34]:
/usr/share/src/gcc_build/i386-pc-solaris2.11/libjava/classpath/lib/./classpath/resource/java/util/:
not found [No such file or directory]
./copy-vmresources.sh[34]: mkinstalldirs: not found [No such file or directory]
./copy-vmresources.sh[34]:
/usr/share/src/gcc_build/i386-pc-solaris2.11/libjava/classpath/lib/./classpath/resource/java/util/:
not found [No such file or directory]
./copy-vmresources.sh[34]: mkinstalldirs: not found [No such file or directory]
./copy-vmresources.sh[34]:
/usr/share/src/gcc_build/i386-pc-solaris2.11/libjava/classpath/lib/./classpath/resource/java/text/:
not found [No such file or directory]
(many, many more)
...


# find ../gcc_build/ -name copy-vmresources.sh
i386-pc-solaris2.11/amd64/libjava/classpath/lib/copy-vmresources.sh
i386-pc-solaris2.11/libjava/classpath/lib/copy-vmresources.sh

# find ../gcc_trunk/ -name mkinstalldirs
../gcc_trunk/libjava/classpath/mkinstalldirs
../gcc_trunk/mkinstalldirs


Those errors do _not_ cause the build to fail. The library (and gcc) will
continue to build and the Testsuite Results are 'reasonably good'.

Rob


-- 
   Summary: gcc 4.4.0 20090210 - The 'copy-vmresources.sh' script
can't find the 'mkinstalldirs' script.
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: libgcj
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rob1weld at aol dot com
 GCC build triplet: i386-pc-solaris2.11
  GCC host triplet: i386-pc-solaris2.11
GCC target triplet: i386-pc-solaris2.11


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



[Bug target/39162] New: Gcc doesn't warn __m256 when -mavx isn't used

2009-02-11 Thread hjl dot tools at gmail dot com
bash-3.2$ cat /tmp/x.i 
typedef long long __m256i __attribute__ ((__vector_size__ (32),
__may_alias__));
__m256i
bar (__m256i x)
{
  return x;
}
bash-3.2$ gcc -S /tmp/x.i 

This is due to type_natural_mode doesn't check 32byte types. If I
add

--- ./i386.c.warn   2009-02-11 06:58:52.0 -0800
+++ ./i386.c2009-02-11 18:03:30.0 -0800
@@ -4729,7 +4729,7 @@ type_natural_mode (const_tree type)
   if (TREE_CODE (type) == VECTOR_TYPE  !VECTOR_MODE_P (mode))
 {
   HOST_WIDE_INT size = int_size_in_bytes (type);
-  if ((size == 8 || size == 16)
+  if ((size == 8 || size == 16 || size == 32)
  /* ??? Generic code allows us to create width 1 vectors.  Ignore.  */
   TYPE_VECTOR_SUBPARTS (type)  1)
{

I got

bash-3.2$ ./xgcc -B./ -O2 /tmp/x.i -S

/tmp/x.i: In function ‘bar’:
/tmp/x.i:3: warning: AVX vector argument without AVX enabled changes the ABI
/tmp/x.i:6: internal compiler error: in emit_move_multi_word, at expr.c:3317
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.

emit_move_multi_word isn't prepared to deal with it.


-- 
   Summary: Gcc doesn't warn __m256 when -mavx isn't used
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
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=39162



[Bug c++/39153] virtual default dtor not defined

2009-02-11 Thread jason at gcc dot gnu dot org


--- Comment #3 from jason at gcc dot gnu dot org  2009-02-12 02:12 ---
Fixed.


-- 

jason at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug target/39162] Gcc doesn't warn __m256 when -mavx isn't used

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


--- Comment #1 from hjl dot tools at gmail dot com  2009-02-12 02:14 ---
I think we should make it an error instead.


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

   Target Milestone|--- |4.4.0


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



[Bug target/39146] Unnecessary stack alignment

2009-02-11 Thread Joey dot ye at intel dot com


--- Comment #7 from Joey dot ye at intel dot com  2009-02-12 02:26 ---
Created an attachment (id=17283)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17283action=view)
A patch to fix this problem

Impact to other test unknown. Test undergoing.

HJ, can you also help to verify and test this patch?


-- 


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



[Bug target/39148] -Os increase code size when stack is aligned

2009-02-11 Thread Joey dot ye at intel dot com


--- Comment #6 from Joey dot ye at intel dot com  2009-02-12 02:33 ---
(In reply to comment #5)
 If ACCUMULATE_OUTGOING_ARGS is off, ECX will be used
 for stack alignment and it may lead to code size
 increase due to register spill since ia32 has very
 few registers.
The code increase resulted from stack realign are mainly from prologue
increase. ECX is only used as hard register in prologue/epilogue and the impact
to function body is low.

If ACCUMULATE_OUTGOING_ARGS does increase code size, then for big functions,
benefit of !ACCUMULATE_OUTGOING_ARGS will offset increase of prologue/epilogue.

So simply enable ACCUMULATE_OUTGOING_ARGS for stack realign isn't be the best
option for all cases either.


-- 


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



[Bug target/39146] Unnecessary stack alignment

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


--- Comment #8 from hjl dot tools at gmail dot com  2009-02-12 02:33 ---
(In reply to comment #7)
 Created an attachment (id=17283)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17283action=view) [edit]
 A patch to fix this problem
 
 Impact to other test unknown. Test undergoing.
 
 HJ, can you also help to verify and test this patch?
 

With your patch, I got

.globl bar
.type   bar, @function
bar:
pushq   %rbp
movq%rsp, %rbp
leave
ret

We still have push and mov. I guess it may be the best we can do.
But please run full 32 and 64bit testsuite with your patch as well
as under emx-avx-sim.


-- 


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



[Bug target/39148] -Os increase code size when stack is aligned

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


--- Comment #7 from hjl dot tools at gmail dot com  2009-02-12 02:37 ---
(In reply to comment #6)
 So simply enable ACCUMULATE_OUTGOING_ARGS for stack realign isn't be the best
 option for all cases either.
 

OK. I am closing as WONTFIX.


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||WONTFIX


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



[Bug target/39146] Unnecessary stack alignment

2009-02-11 Thread Joey dot ye at intel dot com


--- Comment #9 from Joey dot ye at intel dot com  2009-02-12 02:40 ---
(In reply to comment #8)
 We still have push and mov. I guess it may be the best we can do.
I believe so too.


-- 


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



[Bug c/33466] mixed-case suffix for decimal float constants

2009-02-11 Thread tydeman at tybor dot com


--- Comment #5 from tydeman at tybor dot com  2009-02-12 02:54 ---
The latest version of TR 18037 is WG14 document N1275 of 2007/10/01.
The suffix really is case insensitive, so 'uhk' has 8 variations.
'll' and 'LL' are not valid suffixes for fixed point constants.


-- 


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



[Bug target/36480] stack-protector causes bad ARM PIC code generated

2009-02-11 Thread dougkwan at google dot com


--- Comment #1 from dougkwan at google dot com  2009-02-12 03:04 ---
I have a test case now.  The toolchain is built with gcc trunk, binutils-2.18,
gdb-6.71 and newlib-1.16.0 for target arm-eabi

---
#include stdlib.h
extern int sprintf (char *, const char*, ...);

int
main (void)
{
  char buf[10];
  sprintf(buf, );
  return 0;
}


#
# Test case exits with an error code if compiled with -fstack-protector -fpic
#
sh-3.1$ arm-eabi-gcc -fstack-protector -fpic bug.csh-3.1$ arm-eabi-gdb a.out
GNU gdb 6.7.1
Copyright (C) 2007 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 --host=i686-unknown-linux-gnu --target=arm-eabi...
(gdb) target sim
Connected to the simulator.
(gdb) load a.out
Loading section .init, size 0x18 vma 0x8000
Loading section .text, size 0x2af8 vma 0x8018
Loading section .fini, size 0x18 vma 0xab10
Loading section .rodata, size 0xd4 vma 0xab28
Loading section .ARM.exidx, size 0x8 vma 0xabfc
Loading section .eh_frame, size 0x4 vma 0xac04
Loading section .init_array, size 0x8 vma 0x12c08
Loading section .fini_array, size 0x4 vma 0x12c10
Loading section .jcr, size 0x4 vma 0x12c14
Loading section .got, size 0x10 vma 0x12c18
Loading section .data, size 0x930 vma 0x12c28
Start address 0x80ac
Transfer rate: 109248 bits in 1 sec.
(gdb) run
Starting program: /usr/local/google/data/dougkwan/arm-elf/test/a.out 

Program exited with code 0377.
(gdb) quit

#
# It exits normally with -fstack-protector only
#
sh-3.1$ arm-eabi-gcc -fstack-protector  bug.c
sh-3.1$ arm-eabi-gdb a.out
GNU gdb 6.7.1
Copyright (C) 2007 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 --host=i686-unknown-linux-gnu --target=arm-eabi...
(gdb) target sim
Connected to the simulator.
(gdb) load a.out
Loading section .init, size 0x18 vma 0x8000
Loading section .text, size 0x2adc vma 0x8018
Loading section .fini, size 0x18 vma 0xaaf4
Loading section .rodata, size 0xd4 vma 0xab0c
Loading section .ARM.exidx, size 0x8 vma 0xabe0
Loading section .eh_frame, size 0x4 vma 0xabe8
Loading section .init_array, size 0x8 vma 0x12bec
Loading section .fini_array, size 0x4 vma 0x12bf4
Loading section .jcr, size 0x4 vma 0x12bf8
Loading section .data, size 0x930 vma 0x12c00
Start address 0x80ac
Transfer rate: 108896 bits in 1 sec.
(gdb) run
Starting program: /usr/local/google/data/dougkwan/arm-elf/test/a.out 

Program exited normally.
(gdb) quit

#
# It also exits normally if -O2 is given in addition to -fstack-protector
-fpic
#
sh-3.1$ arm-eabi-gcc -fstack-protector -fpic  -O2 bug.c
sh-3.1$ arm-eabi-gdb a.out
GNU gdb 6.7.1
Copyright (C) 2007 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 --host=i686-unknown-linux-gnu --target=arm-eabi...
(gdb) target sim
Connected to the simulator.
(gdb) load a.out
Loading section .init, size 0x18 vma 0x8000
Loading section .text, size 0x2ae0 vma 0x8018
Loading section .fini, size 0x18 vma 0xaaf8
Loading section .rodata, size 0xd4 vma 0xab10
Loading section .ARM.exidx, size 0x8 vma 0xabe4
Loading section .eh_frame, size 0x4 vma 0xabec
Loading section .init_array, size 0x8 vma 0x12bf0
Loading section .fini_array, size 0x4 vma 0x12bf8
Loading section .jcr, size 0x4 vma 0x12bfc
Loading section .got, size 0x10 vma 0x12c00
Loading section .data, size 0x930 vma 0x12c10
Start address 0x80ac
Transfer rate: 109056 bits in 1 sec.
(gdb) run
Starting program: /usr/local/google/data/dougkwan/arm-elf/test/a.out 

Program exited normally.
(gdb) quit


-- 


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



[Bug c++/39163] New: -mstackalign breaks -O2 optimization using g++

2009-02-11 Thread gyunaev at ulduzsoft dot com
This is basically a copy of bug report from
http://www.dribin.org/dave/blog/archives/2006/12/05/missing_third_param/

Using the following sample file saved as test.c:


#include stdio.h

#define NOINLINE __attribute__((noinline))

NOINLINE static void foo1(int i1)
{
printf(foo1: %d\n, i1);
}

NOINLINE static void foo2(int i1, int i2)
{
printf(foo2: %d, %d\n, i1, i2);
}

NOINLINE static void foo3(int i1, int i2, int i3)
{
printf(foo3: %d, %d, %d\n, i1, i2, i3);
}

NOINLINE static void foo4(int i1, int i2, int i3, int i4)
{
printf(foo4: %d, %d, %d, %d\n, i1, i2, i3, i4);
}

NOINLINE static void foo5(int i1, int i2, int i3, int i4, int i5)
{
printf(foo5: %d, %d, %d, %d, %d\n, i1, i2, i3, i4, i5);
}

NOINLINE static void foo6(int i1, int i2, int i3, int i4, int i5, int i6)
{
printf(foo6: %d, %d, %d, %d, %d, %d\n, i1, i2, i3, i4, i5, i6);
}


int main(int argc, char **argv)
{
foo1(1);
foo2(1, 2);
foo3(1, 2, 3);
foo4(1, 2, 3, 4);
foo5(1, 2, 3, 4, 5);
foo6(1, 2, 3, 4, 5, 6);
return 0;
}


produces invalid output (broken 3rd parameter) if compiled using g++ and
-mstackrealign:

 /usr/toolchains/gcc433/bin/g++ -Wall -mstackrealign -O2 test.c
 ./a.out
foo1: 1
foo2: 1, 2
foo3: 1, 2, -1209632279
foo4: 1, 2, 4, 134520820
foo5: 1, 2, 4, 5, -1074446840
foo6: 1, 2, 4, 5, 6, 134514537



However if gcc is used instead of g++, valid output is generated:

 /usr/toolchains/gcc433/bin/gcc -mstackrealign -Wall -O2 test.c
 ./a.out
foo1: 1
foo2: 1, 2
foo3: 1, 2, 3
foo4: 1, 2, 3, 4
foo5: 1, 2, 3, 4, 5
foo6: 1, 2, 3, 4, 5, 6


Analyze of assembly dump revealed that GCC still uses ECX in main() to pass the
parameter. ix86_internal_arg_pointer() in i386.c works fine, and returns same
values for gcc and g++, so the problem is not there.


-- 
   Summary: -mstackalign breaks -O2 optimization using g++
   Product: gcc
   Version: 4.3.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: gyunaev at ulduzsoft dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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



[Bug c++/39163] -mstackalign breaks -O2 optimization using g++

2009-02-11 Thread gyunaev at ulduzsoft dot com


--- Comment #1 from gyunaev at ulduzsoft dot com  2009-02-12 04:19 ---
Created an attachment (id=17284)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17284action=view)
test.c


-- 


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



[Bug c++/39133] wrong optimization produces output of false warning

2009-02-11 Thread corinl at gmx dot de


--- Comment #3 from corinl at gmx dot de  2009-02-12 07:26 ---
Thanks for the info. Unluckily I just found the bug reported first now for
sure:

Code:

// setuid/setgid only affect the current thread
#define FS_PERMS_SET(_uid, _gid) \
bool check_permissions_local = check_permissions; \
uid_t fs_perms_uid_orig; \
gid_t fs_perms_gid_orig; \
if (check_permissions_local) \
{ \
fs_perms_uid_orig = setfsuid(_uid); \
fs_perms_gid_orig = setfsgid(_gid); \
}

// setuid/setgid only affect the current thread
#define FS_PERMS_RESTORE() \
if (check_permissions_local) \
{ \
setfsuid(fs_perms_uid_orig); \
setfsgid(fs_perms_gid_orig); \
}

#define FOP_ERRNO(R) out-op_errno=((R==0)?0:errno)

...
line 934:
FS_PERMS_SET(in-uid, in-gid);

FOP_ERRNO(statvfs(path, out-stbuf));

FS_PERMS_RESTORE();
...

Error report:

main.cpp:934: Warnung: »fs_perms_gid_orig« könnte in dieser Funktion
uninitialisiert verwendet werden
main.cpp:934: Warnung: »fs_perms_uid_orig« könnte in dieser Funktion
uninitialisiert verwendet werden

This is not true, as at this point the variables are only written to. They are
only ever read (and even later) if they have first been written to.


-- 

corinl at gmx dot de changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|FIXED   |


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



[Bug c++/39133] wrong optimization produces output of false warning

2009-02-11 Thread corinl at gmx dot de


--- Comment #4 from corinl at gmx dot de  2009-02-12 07:37 ---
here's the copy from the precompiled header file (.ii), may be it helps:
(check_permissions_local removed, it was just for test..same error as before)

 uid_t fs_perms_uid_orig; gid_t fs_perms_gid_orig; if (check_permissions) {
fs_perms_uid_orig = setfsuid(in-uid); fs_perms_gid_orig = setfsgid(in-gid);
};

 out-op_errno=((statvfs(path, out-stbuf)==0)?0:(*__errno_location ()));

 if (check_permissions) { setfsuid(fs_perms_uid_orig);
setfsgid(fs_perms_gid_orig); };


-- 


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



[Bug c++/39164] New: defaulted dtor redefinition not caught

2009-02-11 Thread bkoz at gcc dot gnu dot org
From revision 144119:

struct _Impl_base
{
  _Impl_base() = default;

#if 1
  ~_Impl_base() = default;
#else
  ~_Impl_base() { }
#endif
};

_Impl_base::~_Impl_base() { }

int main()
{
  _Impl_base i;
  return 0;
}

compiled:
%COMP.sh -std=c++0x -g -O2 -Wall -Wextra default2.cc

Has no error, when:

default2.cc:12: error: redefinition of �_Impl_base::~_Impl_base()�
default2.cc:8: error: �_Impl_base::~_Impl_base()� previously defined here

Is expected. Code in #else should be equivalent to #if.


-- 
   Summary: defaulted dtor redefinition not caught
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Keywords: accepts-invalid
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bkoz at gcc dot gnu dot org


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