Re: possible buffer overflow in calls.c?

2009-02-11 Thread Jaka Močnik
Dne 10.02.2009 (tor) ob 17:14 -0800 je Ian Lance Taylor zapisal(a):
 I don't quite see it.  highest_outgoing_args_in_use is at least as large
 as args_size.constant, and that counts the locate.size for each
 argument.  So it should always include the extra padding.
 
 That said, it would not be shocking if there were a bug in this code.
 It's not particularly common to use emit_library_call_value_1 with code
 that passes parameters on the stack.  And it's even less common to use
 it with parameters that require padding when they are pushed on the
 stack.  So a miscalculation in such a scenario could survive for quite
 along time.
consider stack slots of 8 bytes, two parameters, one 8-byte, one 4-byte
(padded below), all arranged on the stack like this (low addresses at
the bottom):

16 
8   [ P2 ]
0  [   P1]

P1: offset = slot_offset = 0, size = 8
P2: offset = 12, slot_offset = 8, size = 8
highest_outgoing_args_in_use = 16 (sum of sizes)

buffer is allocated 16 bytes.

lower bound for P2 is 12 (P2.offset).

upper bound for P2 is 20 (12 + 8).

the loop indexes interval [12, 20) of the buffer, but only 16 bytes were
allocated.

hopefully this clarifies the issue.

that said, this probably belongs to gcc bugzilla: I don't have an exact
way to reproduce it with a mainline gcc version, though, as I haven't
really tried other targets, while mine is well ... not merged in the
mainline ... 

regards,
  jaKa

-- 
email: j...@xlab.si
w3:http://www.gmajna.net/svojat/jaka



Public archive

2009-02-11 Thread Maximilian Nesnidal

Hi

i don´t recognize that sending an Email to the mailing list will be  
stored in a public archive.

http://gcc.gnu.org/ml/gcc-help/2009-02/msg00070.html
I'm not happy with my email address and my name published there.
Can you please delete my email address and my name?

Thank you!


Error with libstdc++-v3 compilation

2009-02-11 Thread VOINA DANIEL (Daniel)
Hello, 

I am trying to build a GCC 4.2.4 cross compiler targeted for
sparc-sun-solaris2.10 and hosted on x86_64-unknown-linux-gnu.
The compiler is configured with:  
--target=sparc-sun-solaris2.10\
--disable-nls \
--enable-shared \
--enable-debug \
--enable-threads=posix \
--enable-__cxa_atexitx \
--enable-long-long \
--with-gcc \
--with-gnu-as \
--with-gnu-ld \
--with-stabs \
--enable-interwork \
--with-headers=/home/dva/xcompile/sparc-sun-solaris2.10/include \
--with-libs=/home/dva/xcompile/sparc-sun-solaris2.10/lib \
--enable-languages=c,c++ \
--enable-libgcc-rebuild \
--prefix=/usr/local

When (as root) I am executing make install I get the following errors:

make[3]: Leaving directory
`/home/dva/xcompile/build/gcc-4.2.4/libiberty/testsuite'
/bin/sh /home/dva/xcompile/src/gcc-4.2.4/libiberty/../mkinstalldirs
/usr/local/lib/`gcc -g -O2 -print-multi-os-directory`
/usr/bin/install -c -m 644 ./libiberty.a /usr/local/lib/`gcc -g -O2
-print-multi-os-directory`/./libiberty.an
( cd /usr/local/lib/`gcc -g -O2 -print-multi-os-directory` ; chmod 644
./libiberty.an ;ranlib ./libiberty.an )
mv -f /usr/local/lib/`gcc -g -O2 -print-multi-os-directory`/./libiberty.an
/usr/local/lib/`gcc -g -O2 -print-multi-os-directory`/./libiberty.a
if test -n ; then \
   case  in \
 /*)thd=;; \
 *) thd=/usr/local/include/;; \
   esac; \
   /bin/sh /home/dva/xcompile/src/gcc-4.2.4/libiberty/../mkinstalldirs
${thd}; \
   for h in /home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/ansidecl.h
/home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/demangle.h
/home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/dyn-string.h
/home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/fibheap.h
/home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/floatformat.h
/home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/hashtab.h
/home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/libiberty.h
/home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/objalloc.h
/home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/partition.h
/home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/safe-ctype.h
/home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/sort.h
/home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/splay-tree.h
/home/dva/xcompile/src/gcc-4.2.4/libiberty/../include/ternary.h; do \
 /usr/bin/install -c -m 644 $h ${thd}; \
   done; \
 fi
make[3]: Entering directory
`/home/dva/xcompile/build/gcc-4.2.4/libiberty/testsuite'
make[3]: Nothing to be done for `install'.
make[3]: Leaving directory
`/home/dva/xcompile/build/gcc-4.2.4/libiberty/testsuite'
make[2]: Leaving directory `/home/dva/xcompile/build/gcc-4.2.4/libiberty'
/bin/sh: line 3: cd: sparc-sun-solaris2.10/libstdc++-v3: No such file or
directory
make[1]: *** [install-target-libstdc++-v3] Error 1
make[1]: Leaving directory `/home/dva/xcompile/build/gcc-4.2.4'
make: *** [install] Error 2

However, both gcc and g++ were installed. Gcc works okay and produce the
sparc binaries but g++ gives the following error when compiling:

d...@dl380tm01:~$ export CXX=sparcv9-sun-solaris2.10-g++
d...@dl380tm01:~$ $CXX main.c -o main -Wl,--rpath
-Wl,/usr/local/sparc-sun-solaris2.10/lib/
/usr/local/lib/gcc/sparcv9-sun-solaris2.10/4.2.4/../../../../sparcv9-sun-sol
aris2.10/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status

My questions are:
1. How can I generate and install libstdcxx?
2. Is there any tweak to be done on the linker (apart from LD_RUN_PATH, -L
and the above options)?

Regards, 
  Daniel



Re: Public archive

2009-02-11 Thread jlh
Hi!

Maximilian Nesnidal wrote:
 i don´t recognize that sending an Email to the mailing list will be
 stored in a public archive.
 http://gcc.gnu.org/ml/gcc-help/2009-02/msg00070.html
 I'm not happy with my email address and my name published there.
 Can you please delete my email address and my name?

For your information, here are relevant quotes from [1]:

The GCC project has many mailing lists, which are archived on
the web (and searchable). Please make yourself familiar with
our policies before subscribing and posting to these lists.

And under Policies:

We have a strong policy of not editing the web archives.

[1] http://gcc.gnu.org/lists.html

jlh


Re: possible buffer overflow in calls.c?

2009-02-11 Thread Ian Lance Taylor
Jaka Močnik j...@xlab.si writes:

 Dne 10.02.2009 (tor) ob 17:14 -0800 je Ian Lance Taylor zapisal(a):
 I don't quite see it.  highest_outgoing_args_in_use is at least as large
 as args_size.constant, and that counts the locate.size for each
 argument.  So it should always include the extra padding.
 
 That said, it would not be shocking if there were a bug in this code.
 It's not particularly common to use emit_library_call_value_1 with code
 that passes parameters on the stack.  And it's even less common to use
 it with parameters that require padding when they are pushed on the
 stack.  So a miscalculation in such a scenario could survive for quite
 along time.
 consider stack slots of 8 bytes, two parameters, one 8-byte, one 4-byte
 (padded below), all arranged on the stack like this (low addresses at
 the bottom):

 16 
 8   [ P2 ]
 0  [   P1]

 P1: offset = slot_offset = 0, size = 8
 P2: offset = 12, slot_offset = 8, size = 8
 highest_outgoing_args_in_use = 16 (sum of sizes)

 buffer is allocated 16 bytes.

 lower bound for P2 is 12 (P2.offset).

 upper bound for P2 is 20 (12 + 8).

 the loop indexes interval [12, 20) of the buffer, but only 16 bytes were
 allocated.

 hopefully this clarifies the issue.

Yes.  Thanks for the explanation.


 that said, this probably belongs to gcc bugzilla: I don't have an exact
 way to reproduce it with a mainline gcc version, though, as I haven't
 really tried other targets, while mine is well ... not merged in the
 mainline ... 

Assuming you have a copyright assignment, just send a patch to
gcc-patches with the explanation.  This is code which will never be used
for any popular target.

Ian


Re: possible buffer overflow in calls.c?

2009-02-11 Thread Paolo Bonzini

 Assuming you have a copyright assignment, just send a patch to
 gcc-patches with the explanation.  This is code which will never be used
 for any popular target.

The patch is probably small enough that it does not require assignment,
given the description in his original message.

Paolo


[plugins] binary-level or source-level?

2009-02-11 Thread Pjotr Kourzanov
Dear GCC developers,

  I've been following the plugins discussion and have seen various 
proposals. So far all of them seem to be focusing on plugins as
dynamically linkable libraries (with all associated versioning and
portability ballast). While you could also easily extend that, and
integrate plugins more tightly with the compiler binary as static
libraries (thereby creating customized compilers), I was wondering
whether in future there might be a need to express tighter dependency
between the code and the plugin(s) that the code might require... Or 
at least the dependency between the code and the plugin 
configuration options...

  Should we not have a way to specify a plugin in the source itself?
This could be achieved by tagging a function with a __plugin__
attribute (or a #pragma), exporting the PluginAPI as a bunch of 
built-in functions and having the compiler itself (1) ensure that such
functions only call portable built-ins, and (2) compiling/executing or 
interpreting them as compilation passes. Then, the code can just 
#include a source-level plugin to have it available just for that 
translation unit.

  This is useful for at least one project I am working on...

Regards,

Pjotr Kourzanov







Re: possible buffer overflow in calls.c?

2009-02-11 Thread Jaka Močnik
Dne 11.02.2009 (sre) ob 16:31 +0100 je Paolo Bonzini zapisal(a):
  Assuming you have a copyright assignment, just send a patch to
  gcc-patches with the explanation.  This is code which will never be used
  for any popular target.
 
 The patch is probably small enough that it does not require assignment,
 given the description in his original message.
lol. don't speak about me in third person when I'm around as well, will
you? ;)

anyway, thanks for the review and comments, ian. will send the fix to
gcc-patches. suppose I don't really need a copyright assignment for a
rather obvious two-liner.

j

-- 
email: j...@xlab.si
w3:http://www.gmajna.net/svojat/jaka



question: suffix for fixed-point literal constant

2009-02-11 Thread Janis Johnson
I'm rewriting function interpret_float_suffix in libcpp/expr.c to fix
suffixes in decimal float literal constants for c/33466.  While I'm at
it I'm fixing suffixes for fixed-point literal constants.  Currently for
fixed-point GCC accepts any ordering of the letters in the suffix.  The
technical report (N1169) gives specific strings, not individual letters
that can be used in any order.  That seems like something obvious to fix
but I thought I'd mention it in case they really should be accepted in
any order.

My question, though, is about the case of the letters in the suffixes.
N1169 says note that the suffix is case insensitive; should I take
that literally and allow any mix of cases (as GCC currently does), or
require that the same case be used within a particular suffix?

GCC accepts ll or LL, but not lL or Ll, in fixed-point suffixes.  These
are not in N1169; is there a later draft TR that includes them or are
they simply a GNU extension on top of the draft TR?

Janis




Re: question: suffix for fixed-point literal constant

2009-02-11 Thread Ian Lance Taylor
Janis Johnson janis...@us.ibm.com writes:

 My question, though, is about the case of the letters in the suffixes.
 N1169 says note that the suffix is case insensitive; should I take
 that literally and allow any mix of cases (as GCC currently does), or
 require that the same case be used within a particular suffix?

I think you should take it literally.  Why not?  When it doesn't make
any difference, follow the standard.

Ian


RE: question: suffix for fixed-point literal constant

2009-02-11 Thread Fu, Chao-Ying
Janis Johnson wrote:
 
 I'm rewriting function interpret_float_suffix in libcpp/expr.c to fix
 suffixes in decimal float literal constants for c/33466.  While I'm at
 it I'm fixing suffixes for fixed-point literal constants.  
 Currently for
 fixed-point GCC accepts any ordering of the letters in the 
 suffix.  The
 technical report (N1169) gives specific strings, not 
 individual letters
 that can be used in any order.  That seems like something 
 obvious to fix
 but I thought I'd mention it in case they really should be accepted in
 any order.
 
 My question, though, is about the case of the letters in the suffixes.
 N1169 says note that the suffix is case insensitive; should I take
 that literally and allow any mix of cases (as GCC currently does), or
 require that the same case be used within a particular suffix?

  From my implementation, I allow mixed-case suffixes.
We can view this as a GCC feature, if it turns out that the spec doesn't allow 
this.
Thanks!

Regards,
Chao-ying


Re: proposal for improved management bugzilla priorities/release criteria

2009-02-11 Thread Mark Mitchell
Paolo Bonzini wrote:

 I think the only reasonable release criteria is zero P1 regressions over
 some period.  50 P2 regressions doesn't make a release blocker, neither
 is 49 P2 regressions a clear sign for a non-blocked release.
 
 I agree.

I mostly agree.  P1 regressions are, by definition, Really Bad.  In the
past, we've sometimes had to release in that state because it was clear
that there was no reasonable way to get the P1 regression fixed.  But,
that's not what we want to do.

However, I don't agree that P2 regressions aren't a factor.  If we have
a ton of crashing on wrong-code, etc., regressions that adds up to a
release that won't work well for people.

I don't think there can be, or need to be, completely bright-line rules.
 We need human beings to use their judgment about when the release is
good enough to go out the door.  So, I'm all for guidelines, and I agree
that 49 vs. 50 isn't itself a big deal.  But, I think that Paolo's
criterion should not be interpreted literally.

Thanks,

-- 
Mark Mitchell
CodeSourcery
m...@codesourcery.com
(650) 331-3385 x713


RE: question: suffix for fixed-point literal constant

2009-02-11 Thread Janis Johnson
On Wed, 2009-02-11 at 10:42 -0800, Fu, Chao-Ying wrote:
 Janis Johnson wrote:
  
  I'm rewriting function interpret_float_suffix in libcpp/expr.c to fix
  suffixes in decimal float literal constants for c/33466.  While I'm at
  it I'm fixing suffixes for fixed-point literal constants.  
  Currently for
  fixed-point GCC accepts any ordering of the letters in the 
  suffix.  The
  technical report (N1169) gives specific strings, not 
  individual letters
  that can be used in any order.  That seems like something 
  obvious to fix
  but I thought I'd mention it in case they really should be accepted in
  any order.
  
  My question, though, is about the case of the letters in the suffixes.
  N1169 says note that the suffix is case insensitive; should I take
  that literally and allow any mix of cases (as GCC currently does), or
  require that the same case be used within a particular suffix?
 
   From my implementation, I allow mixed-case suffixes.
 We can view this as a GCC feature, if it turns out that the spec doesn't 
 allow this.
 Thanks!

Where do the 'll' and 'LL' come from in fixed-point suffixes?  Is there
a reason that your implementation requires them to be the same case?

Janis



Re: question: suffix for fixed-point literal constant

2009-02-11 Thread Fu, Chao-Ying
Janis Johnson wrote:

 On Wed, 2009-02-11 at 10:42 -0800, Fu, Chao-Ying wrote:
  Janis Johnson wrote:
  
   I'm rewriting function interpret_float_suffix in libcpp/expr.c to fix
   suffixes in decimal float literal constants for c/33466.  While I'm at
   it I'm fixing suffixes for fixed-point literal constants.
   Currently for
   fixed-point GCC accepts any ordering of the letters in the
   suffix.  The
   technical report (N1169) gives specific strings, not
   individual letters
   that can be used in any order.  That seems like something
   obvious to fix
   but I thought I'd mention it in case they really should be accepted in
   any order.
  
   My question, though, is about the case of the letters in the suffixes.
   N1169 says note that the suffix is case insensitive; should I take
   that literally and allow any mix of cases (as GCC currently does), or
   require that the same case be used within a particular suffix?
 
From my implementation, I allow mixed-case suffixes.
  We can view this as a GCC feature, if it turns out that the spec doesn't
allow this.
  Thanks!

 Where do the 'll' and 'LL' come from in fixed-point suffixes?  Is there
 a reason that your implementation requires them to be the same case?

 Janis

  The spec doesn't have long long fixed-point types or constants.  So, the
long long fixed-point
support in GCC is an extension to the spec.  I just reused C code to enforce
ll and LL.  We are free to
accept any formats.  If you like, you can change C code to accept all of
ll, LL, Ll, lL.  Thanks!

Regards,
Chao-ying



gcc-4.2-20090211 is now available

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

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

You'll find:

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

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

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

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

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

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

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

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

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

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


Re: question: suffix for fixed-point literal constant

2009-02-11 Thread Joseph S. Myers
On Wed, 11 Feb 2009, Janis Johnson wrote:

 I'm rewriting function interpret_float_suffix in libcpp/expr.c to fix
 suffixes in decimal float literal constants for c/33466.  While I'm at
 it I'm fixing suffixes for fixed-point literal constants.  Currently for
 fixed-point GCC accepts any ordering of the letters in the suffix.  The
 technical report (N1169) gives specific strings, not individual letters
 that can be used in any order.  That seems like something obvious to fix
 but I thought I'd mention it in case they really should be accepted in
 any order.

I believe you should follow the formal syntax, 6.4.4.2a (at least in 
N1275, the most recent version I know of, on page 16 of that document).  
This does not allow them in multiple orders.  It uses long-suffix from the 
C99 syntax.

 My question, though, is about the case of the letters in the suffixes.
 N1169 says note that the suffix is case insensitive; should I take
 that literally and allow any mix of cases (as GCC currently does), or
 require that the same case be used within a particular suffix?

The syntax allows a mix of cases.

 GCC accepts ll or LL, but not lL or Ll, in fixed-point suffixes.  These
 are not in N1169; is there a later draft TR that includes them or are
 they simply a GNU extension on top of the draft TR?

I presume the extension is to add long-long-suffix somewhere in the 
syntax, which means ll or LL but not lL or Ll because those aren't in C99 
which defines long-long-suffix.

-- 
Joseph S. Myers
jos...@codesourcery.com


Re: [plugins] binary-level or source-level?

2009-02-11 Thread Diego Novillo
On Wed, Feb 11, 2009 at 11:46, Pjotr Kourzanov
peter.kourza...@xs4all.nl wrote:

  Should we not have a way to specify a plugin in the source itself?
 This could be achieved by tagging a function with a __plugin__
 attribute (or a #pragma), exporting the PluginAPI as a bunch of
 built-in functions and having the compiler itself (1) ensure that such
 functions only call portable built-ins, and (2) compiling/executing or
 interpreting them as compilation passes. Then, the code can just
 #include a source-level plugin to have it available just for that
 translation unit.

But then, what would be the difference between this and just adding
your pass to the compiler?  I'm not sure I understand what this would
buy you in terms of simplicity.  Perhaps I'm missing something.


Diego.


Re: question: suffix for fixed-point literal constant

2009-02-11 Thread Janis Johnson
On Wed, 2009-02-11 at 22:47 +, Joseph S. Myers wrote:
 On Wed, 11 Feb 2009, Janis Johnson wrote:
 
  I'm rewriting function interpret_float_suffix in libcpp/expr.c to fix
  suffixes in decimal float literal constants for c/33466.  While I'm at
  it I'm fixing suffixes for fixed-point literal constants.  Currently for
  fixed-point GCC accepts any ordering of the letters in the suffix.  The
  technical report (N1169) gives specific strings, not individual letters
  that can be used in any order.  That seems like something obvious to fix
  but I thought I'd mention it in case they really should be accepted in
  any order.
 
 I believe you should follow the formal syntax, 6.4.4.2a (at least in 
 N1275, the most recent version I know of, on page 16 of that document).  
 This does not allow them in multiple orders.  It uses long-suffix from the 
 C99 syntax.

Thanks for the reference.  I had been looking earlier in the document
at a table of suffixes, but this section makes it clear.

  My question, though, is about the case of the letters in the suffixes.
  N1169 says note that the suffix is case insensitive; should I take
  that literally and allow any mix of cases (as GCC currently does), or
  require that the same case be used within a particular suffix?
 
 The syntax allows a mix of cases.

Yes, that's also clear in the section you referenced.

  GCC accepts ll or LL, but not lL or Ll, in fixed-point suffixes.  These
  are not in N1169; is there a later draft TR that includes them or are
  they simply a GNU extension on top of the draft TR?
 
 I presume the extension is to add long-long-suffix somewhere in the 
 syntax, which means ll or LL but not lL or Ll because those aren't in C99 
 which defines long-long-suffix.

That makes sense, I'll go with that.

Janis



Re: [plugins] binary-level or source-level?

2009-02-11 Thread Pjotr Kourzanov
On Wed, 2009-02-11 at 18:14 -0500, Diego Novillo wrote:
 On Wed, Feb 11, 2009 at 11:46, Pjotr Kourzanov
 peter.kourza...@xs4all.nl wrote:
 
   Should we not have a way to specify a plugin in the source itself?
  This could be achieved by tagging a function with a __plugin__
  attribute (or a #pragma), exporting the PluginAPI as a bunch of
  built-in functions and having the compiler itself (1) ensure that such
  functions only call portable built-ins, and (2) compiling/executing or
  interpreting them as compilation passes. Then, the code can just
  #include a source-level plugin to have it available just for that
  translation unit.
 
 But then, what would be the difference between this and just adding
 your pass to the compiler?  
  
  Well I guess you don't have to rebuild the compiler, once it supports
such JIT plugins. Otherwise you might end up with building lots of 
compilers with only minor differences and getting a Makefile headache.

  Also portability can be improved, since JIT plugins can be made
as portable as any scripting language.

 I'm not sure I understand what this would
 buy you in terms of simplicity.  Perhaps I'm missing something.

  I can imagine a situation when you'll want a set of plugins to apply
only to some specific parts of your code. Or specific plugin options for
some parts, but not others. For such cases, you'd better just #include
an appropriate plugin or supply a parameter via a #pragma to it, rather
than solve these issues in the Makefiles.

  As a bonus, these will have to be distributed in source form, so no 
illegal proprietary gambles are possible. You might get additional
benefits from executing JIT plugins in a restricted or managed mode
(only allow usage of some restricted builtins by plugin sourcecode),
rather than just allowing random access to whole compiler workspace.

Pjotr.



[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



  1   2   >