[Bug c++/53602] [4.7/4.8 Regression] Libre Office causes an internal compiler error

2012-06-08 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53602

--- Comment #12 from Richard Henderson  2012-06-09 
06:18:53 UTC ---
Author: rth
Date: Sat Jun  9 06:18:38 2012
New Revision: 188358

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188358
Log:
PR c++/53602

Added:
trunk/gcc/testsuite/g++.dg/torture/pr53602.C


[Bug c++/53602] [4.7/4.8 Regression] Libre Office causes an internal compiler error

2012-06-08 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53602

--- Comment #11 from Richard Henderson  2012-06-09 
06:17:27 UTC ---
Author: rth
Date: Sat Jun  9 06:17:12 2012
New Revision: 188357

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188357
Log:
PR c++/53602
* combine-stack-adj.c (force_move_args_size_note): Add ARGS_SIZE
note to a clobber insn when no other insn is available.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/combine-stack-adj.c


[Bug c++/53602] [4.7/4.8 Regression] Libre Office causes an internal compiler error

2012-06-08 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53602

--- Comment #10 from Richard Henderson  2012-06-09 
06:14:34 UTC ---
Author: rth
Date: Sat Jun  9 06:14:27 2012
New Revision: 188356

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188356
Log:
PR c++/53602
* combine-stack-adj.c (force_move_args_size_note): Add ARGS_SIZE
note to a clobber insn when no other insn is available.

Added:
branches/gcc-4_7-branch/gcc/testsuite/g++.dg/torture/pr53602.C
Modified:
branches/gcc-4_7-branch/gcc/ChangeLog
branches/gcc-4_7-branch/gcc/combine-stack-adj.c


[Bug c++/53618] segfault on self-referential class partial specialization argument

2012-06-08 Thread potswa at mac dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53618

David Krauss  changed:

   What|Removed |Added

   Severity|normal  |minor

--- Comment #1 from David Krauss  2012-06-09 05:47:53 
UTC ---
I have been alerted to the fact that the sizeof expression is invalid because
it can't be applied to an incomplete type. So this is crashes on invalid code.

And the crashing specialization is extraneous anyway, such a case should be
handled by the primary template. (Which can be said in general of such a
mechanism, should anyone want it.)


[Bug c++/53618] New: segfault on self-referential class partial specialization argument

2012-06-08 Thread potswa at mac dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53618

 Bug #: 53618
   Summary: segfault on self-referential class partial
specialization argument
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: pot...@mac.com


I was trying a new approach to SFINAE on 4.7.0 and ICEd instead. Not sure if
this is valid. The idea is to check whether the specialization is already a
complete class while forming the partial specialization arguments.
(http://stackoverflow.com/questions/10958435)

---

template< int > struct ic;

template< typename t, typename c = ic< 0 > >
struct is_dereferenceable;

template< typename t >
struct is_dereferenceable< t, ic< true? 0 : * t() > > {};

template< typename t >
struct is_dereferenceable< t, ic< sizeof (is_dereferenceable< t >) > > {};

is_dereferenceable< char * > i;


[Bug target/53617] New: Suboptimal PC-relative addressing code on x86

2012-06-08 Thread bugdal at aerifal dot cx
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53617

 Bug #: 53617
   Summary: Suboptimal PC-relative addressing code on x86
Classification: Unclassified
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: bug...@aerifal.cx


Consider a function of the form:

int *foo()
{
static int x;
return &x;
}

When GCC compiles this, the result is similar to the following hand-written
asm:

call 1f
1:  pop %ecx
add $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx
lea x@GOTOFF(%ecx),%eax
ret

i.e. it loads the address of the GOT in a register, then computes the
GOT-relative address of the variable. This makes sense when the GOT address
will be needed for more than one address lookup, but it's unnecessarily costly
in the case where it's only used for a single variable, in which case the
following code would be better:

call 1f
1:  pop %eax
add $[x-1b], %eax
ret

The same principle applies to a great deal more code, and of course it works
when __i686.get_pc_thunk.cx or similar is being used, too. Is there any way GCC
could be enhanced to generate this superior code when possible?


[Bug c++/53415] problematic error message for ambiguity

2012-06-08 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53415

Manuel López-Ibáñez  changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-06-08
 CC||manu at gcc dot gnu.org
 Ever Confirmed|0   |1

--- Comment #1 from Manuel López-Ibáñez  2012-06-08 
23:47:03 UTC ---
I think there are quite a few bugs here. Starting with the
template-parameter-1-1 output.

Clang is not very helpful in this case:

/tmp/webcompile/_14729_0.cc:23:5: error: no matching function for call to 'foo'
foo(1);
^~~
/tmp/webcompile/_14729_0.cc:19:20: note: candidate template ignored:
substitution failure [with X = int]
S<0 + T::value> foo(X);
   ^
1 error generated.


[Bug target/53256] [avr] Attribute 'interrupt' shall override attribute 'signal'

2012-06-08 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53256

--- Comment #4 from Georg-Johann Lay  2012-06-08 
22:42:27 UTC ---
See also the following AVR-LibC bug report:

http://savannah.nongnu.org/bugs/index.php?26734


[Bug middle-end/53616] [4.8 Regression] 416.gamess in SPEC CPU 2006 miscompiled

2012-06-08 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53616

H.J. Lu  changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu.org
   Target Milestone|--- |4.8.0

--- Comment #1 from H.J. Lu  2012-06-08 22:15:39 
UTC ---
It is caused by revision 188261:

http://gcc.gnu.org/ml/gcc-cvs/2012-06/msg00171.html


[Bug tree-optimization/51938] missed optimization: 2 comparisons

2012-06-08 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51938

Marc Glisse  changed:

   What|Removed |Added

  Attachment #27590|0   |1
is obsolete||

--- Comment #7 from Marc Glisse  2012-06-08 20:03:35 
UTC ---
Created attachment 27591
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27591
incomplete patch

The same with one less typo and more up-to-date comments.


[Bug tree-optimization/51938] missed optimization: 2 comparisons

2012-06-08 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51938

--- Comment #6 from Marc Glisse  2012-06-08 19:49:07 
UTC ---
Created attachment 27590
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27590
incomplete patch

I wonder if this is the right direction. At least it passes the testsuite and
optimizes the original testcase.


[Bug fortran/52552] [OOP] ICE when trying to allocate non-allocatable object giving a dynamic type

2012-06-08 Thread gccbgz.lionm at xoxy dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52552

--- Comment #8 from gccbgz.lionm at xoxy dot net 2012-06-08 18:56:19 UTC ---
Nice! Thanks for fixing!


[Bug fortran/52531] [OOP] Compilation fails with polymorphic dummy argument and OpenMP

2012-06-08 Thread kaladhorn at me dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52531

--- Comment #4 from kaladhorn at me dot com 2012-06-08 18:46:11 UTC ---
(In reply to comment #3)
> (In reply to comment #2)
> > Out of curiosity, would there be a technical issue in this case?
> > It sure seemed natural to me.
> 
> AFAICS there should not be any huge issues. One might consider to implement
> this as an extension.

If it does not hurt, I think it would be a good thing.

As far as I am concerned, I engineered around it, as it is really an edge case
we do not want to rely on.
It arguably makes some code uglier, though.


[Bug c++/53611] class with hidden visibility cause function returns pointer to class also be hidden

2012-06-08 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53611

--- Comment #2 from Andrew Pinski  2012-06-08 
18:44:18 UTC ---
I think this is expected behavior as if someone defines a "__cook" in the
executable which links to the shared library, it will be considered a different
type.


[Bug c/38308] -Wformat does not work for wide strings

2012-06-08 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38308

Andrew Pinski  changed:

   What|Removed |Added

 CC||vhaisman at gmail dot com

--- Comment #4 from Andrew Pinski  2012-06-08 
18:42:45 UTC ---
*** Bug 53612 has been marked as a duplicate of this bug. ***


[Bug c/53612] __attribute__((format(...))) does not work with wchar_t format strings

2012-06-08 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53612

Andrew Pinski  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE

--- Comment #1 from Andrew Pinski  2012-06-08 
18:42:45 UTC ---
This is PR 38308 really.

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


[Bug fortran/52265] [OOP] TREE dump confusing with nested SELECT TYPE

2012-06-08 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52265

janus at gcc dot gnu.org changed:

   What|Removed |Added

 CC||janus at gcc dot gnu.org

--- Comment #2 from janus at gcc dot gnu.org 2012-06-08 18:21:36 UTC ---
(In reply to comment #0)
> Expected: Use different variable names, e.g. via
>   gfc_create_var (type, "__tmp_type_t")

I guess the technical problem here is that the temporaries are created already
at resolution stage (in resolve_select_type) on a gfc_symtree level, while
gfc_create_var operates on tree-level (at translation stage).

Do we have any other mechanism for creating temporaries, which could be
employed here? Or do we need to generate a numerically-decorated (or
'randomized') name by hand?


[Bug fortran/52552] [OOP] ICE when trying to allocate non-allocatable object giving a dynamic type

2012-06-08 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52552

janus at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #7 from janus at gcc dot gnu.org 2012-06-08 17:38:46 UTC ---
Fixed with r188335. Closing.

Thanks for the report!


[Bug fortran/52552] [OOP] ICE when trying to allocate non-allocatable object giving a dynamic type

2012-06-08 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52552

--- Comment #6 from janus at gcc dot gnu.org 2012-06-08 17:26:18 UTC ---
Author: janus
Date: Fri Jun  8 17:26:11 2012
New Revision: 188335

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188335
Log:
2012-06-08  Janus Weil  

PR fortran/52552
* match.c (gfc_match_allocate): Modify order of checks. Change wording
of error message. Remove FIXME note.
* resolve.c (resolve_allocate_expr): Add a comment.

2012-06-08  Janus Weil  

PR fortran/52552
* gfortran.dg/allocate_alloc_opt_1.f90: Modified.
* gfortran.dg/allocate_class_1.f90: Modified.
* gfortran.dg/allocate_with_typespec_4.f90: Modified.
* gfortran.dg/allocate_class_2.f90: New.

Added:
trunk/gcc/testsuite/gfortran.dg/allocate_class_2.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/match.c
trunk/gcc/fortran/resolve.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gfortran.dg/allocate_alloc_opt_1.f90
trunk/gcc/testsuite/gfortran.dg/allocate_class_1.f90
trunk/gcc/testsuite/gfortran.dg/allocate_with_typespec_4.f90


[Bug libitm/53113] Build fails in x86_avx.cc if AVX disabled but supported by as (Solaris & Linux)

2012-06-08 Thread safety0ff.bugz at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53113

--- Comment #2 from safety0ff.bugz at gmail dot com 2012-06-08 17:20:28 UTC ---
Created attachment 27589
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27589
This patch works for me (I have no clue whether it is the "proper" fix.)

This patch works for me (I have no clue whether it is the "proper" fix.)

Compiles, I can compile stuff with the resulting g++, compiled stuff runs...


[Bug middle-end/53616] New: [4.8 Regression] 416.gamess in SPEC CPU 2006 miscompiled

2012-06-08 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53616

 Bug #: 53616
   Summary: [4.8 Regression]  416.gamess in SPEC CPU 2006
miscompiled
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: hjl.to...@gmail.com
CC: areg.melikadam...@gmail.com


On Linux/x86-64, revision 188299 miscompiled 416.gamess in SPEC CPU 2006
with:

-O3 -funroll-loops -ffast-math -ffixed-form  -DSPEC_CPU_LP64

 Running 416.gamess ref peak lnx32e-gcc default

*** Miscompare of triazolium.out; for details see
   
/export/gnu/import/git/gcc-test-spec/spec/2006/x86_64/spec/benchspec/CPU2006
/416.gamess/run/run_peak_ref_lnx32e-gcc./triazolium.out.mis

*** Miscompare of cytosine.2.out; for details see
   
/export/gnu/import/git/gcc-test-spec/spec/2006/x86_64/spec/benchspec/CPU2006
/416.gamess/run/run_peak_ref_lnx32e-gcc./cytosine.2.out.mis

Revision 188248 is OK.


[Bug rtl-optimization/53595] Code size increase of +10% between two 4.7.1 snapshot

2012-06-08 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53595

--- Comment #11 from Georg-Johann Lay  2012-06-08 
17:04:41 UTC ---
FYI, the patch attachment 27568 also resolves the strange error described in
PR53615, at least for the test case given there.


[Bug other/53615] Buffer overflow in the compiler?

2012-06-08 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53615

--- Comment #2 from Georg-Johann Lay  2012-06-08 
16:52:54 UTC ---
Note: In attachment 27588 the long version is commented out. You have to remove
the comment and the second CODE32 like so:


#define CODE32  \
  "out %2, %C1\n\tmovw r30, %1\n\telpm %A0, Z+\n\telpm %B0, Z\n\t"


instead of


//#define CODE32  \
//  "out %2, %C1\n\tmovw r30, %1\n\telpm %A0, Z+\n\telpm %B0, Z\n\t"

#define CODE32  \
  ";%2, %C1%1%A0, Z+\n\telpm %B0, Z\n\t"


[Bug other/53615] Buffer overflow in the compiler?

2012-06-08 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53615

--- Comment #1 from Georg-Johann Lay  2012-06-08 
16:48:22 UTC ---
Created attachment 27588
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27588
wek.c

And here is the source file wek.c

Compiled with the above options yields:

$ avr-gcc -c wek.c -mmcu=atmega2561 -O3 -mstrict-X
wek.c: In function 'foo':
wek.c:86:20: error: can't find a register in class 'BASE_POINTER_REGS' while
reloading 'asm'
wek.c:86:20: error: 'asm' operand has impossible constraints

At the beginning of the source you see a macro called CODE32 that is defined to
a string literal which is used as inline assembler code template.

If CODE32 is defined to a shorter string like

#define CODE32 \
  ";%2, %C1%1%A0, Z+\n\telpm %B0, Z\n\t"

the compiler passes.

By all of by understanding such an error should not depend on the length of the
inline assembler template. Thus, does this indicates a buffer overflow or
missing GTY or similar?

Notice that the %-operands / %-operand sequence is unchanged in the shorter
version of CODE32.


[Bug other/53615] New: Buffer overflow in the compiler?

2012-06-08 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53615

 Bug #: 53615
   Summary: Buffer overflow in the compiler?
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: other
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: g...@gcc.gnu.org
  Host: x86-linux-gnu, mingw32
Target: avr
 Build: x86-linux-gnu


This is a bug I observe with the GCC 4.7.1 release snapshot SVN 188257.

== Command line ==

$ avr-gcc -c wek.c -mmcu=atmega2561 -O3 -mstrict-X

== configure ==

Target: avr
Configured with: ../../gcc.gnu.org/gcc-4_7-branch/configure --target=avr
--prefix=/local/gnu/install/gcc-4.7 --disable-nls --with-dwarf2
--enable-languages=c,c++ --enable-target-optspace=yes
Thread model: single
gcc version 4.7.1 20120606 (prerelease) (GCC)

GNU C (GCC) version 4.7.1 20120606 (prerelease) (avr)
compiled by GNU C version 4.3.2 [gcc-4_3-branch revision 141291], GMP
version 4.3.2, MPFR version 2.4.2, MPC version 0.8.2

The problem can also be seen with canadian cross configured as:

../../gcc.gnu.org/gcc-4_7-branch/configure --target=avr
--prefix=/local/gnu/install/gcc-4.7-mingw32 --host=i386-mingw32
--build=i686-linux-gnu --enable-languages=c,c++ --disable-nls --disable-shared
--with-dwarf2


[Bug c++/53614] g++ undefined symbols static const data members conditional assignment

2012-06-08 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53614

Jonathan Wakely  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID

--- Comment #3 from Jonathan Wakely  2012-06-08 
15:41:15 UTC ---
Not a bug, see
http://gcc.gnu.org/wiki/VerboseDiagnostics#missing_static_const_definition


[Bug libitm/53113] Build fails in x86_avx.cc if AVX disabled but supported by as (Solaris & Linux)

2012-06-08 Thread safety0ff.bugz at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53113

safety0ff.bugz at gmail dot com changed:

   What|Removed |Added

 CC||safety0ff.bugz at gmail dot
   ||com

--- Comment #1 from safety0ff.bugz at gmail dot com 2012-06-08 15:21:52 UTC ---
I have this problem too.

I'm using Gentoo x86_64, with GNU binutils 2.22 as well.
My CPU does support AVX (Intel Sandy Bridge.)

It is using the following flags:
-g -march=native -mtune=generic -mno-avx -O2 -pipe

It is a pain for me because Valgrind doesn't support AVX and compiling programs
with my system/default gcc version ends up using the 4.7 libgcc_s.so at run
time which will contain AVX code if I compile with AVX enabled.


[Bug c++/53614] g++ undefined symbols static const data members conditional assignment

2012-06-08 Thread cam888eron at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53614

--- Comment #2 from Cameron MacMinn  2012-06-08 
15:18:59 UTC ---
Created attachment 27587
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27587
to verify correctness using -DWORKAROUND, else ignore


[Bug c++/53614] g++ undefined symbols static const data members conditional assignment

2012-06-08 Thread cam888eron at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53614

--- Comment #1 from Cameron MacMinn  2012-06-08 
15:17:48 UTC ---
Created attachment 27586
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27586
2nd output of -save-temps


[Bug c++/53614] New: g++ undefined symbols static const data members conditional assignment

2012-06-08 Thread cam888eron at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53614

 Bug #: 53614
   Summary: g++ undefined symbols static const data members
conditional assignment
Classification: Unclassified
   Product: gcc
   Version: 4.4.6
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: cam888e...@yahoo.com


Created attachment 27585
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27585
output of -save-temps

I wanted to attach a 2nd file, main.ii.  Also a 3rd file, Foo.cc.
  Looks like this only allows 1 attachment.  I will try to send later.

  main.ii should let you duplicate ld error undefined symbols.
  Foo.cc if you wish to verify correctness using
  -DWORKAROUND, otherwise please ignore it.  Thanks.

% echo ; g++ -v -save-temps -m64 -c Foo.cc ; echo ; g++ -v -save-temps -m64
-odefineMe main.cc Foo.o

Using built-in specs.
Target: x86_64-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-gnu-unique-object
--enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk
--disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre
--enable-libgcj-multifile --enable-java-maintainer-mode
--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib
--with-ppl --with-cloog --with-tune=generic --with-arch_32=i686
--build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-m64' '-c' '-shared-libgcc'
'-mtune=generic'
 /usr/libexec/gcc/x86_64-redhat-linux/4.4.6/cc1plus -E -quiet -v -D_GNU_SOURCE
Foo.cc -m64 -mtune=generic -fpch-preprocess -o Foo.ii
ignoring nonexistent directory
"/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include-fixed"
ignoring nonexistent directory
"/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../x86_64-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6

/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux
 /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/backward
 /usr/local/include
 /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-m64' '-c' '-shared-libgcc'
'-mtune=generic'
 /usr/libexec/gcc/x86_64-redhat-linux/4.4.6/cc1plus -fpreprocessed Foo.ii
-quiet -dumpbase Foo.cc -m64 -mtune=generic -auxbase Foo -version -o Foo.s
GNU C++ (GCC) version 4.4.6 20110731 (Red Hat 4.4.6-3) (x86_64-redhat-linux)
compiled by GNU C version 4.4.6 20110731 (Red Hat 4.4.6-3), GMP
version 4.3.1, MPFR version 2.4.1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 42c2a139506c57f2f1525b40cf548e53
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-m64' '-c' '-shared-libgcc'
'-mtune=generic'
 as -V -Qy --64 -o Foo.o Foo.s
GNU assembler version 2.20.51.0.2 (x86_64-redhat-linux) using BFD version
version 2.20.51.0.2-5.28.el6 20091009
COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/4.4.6/:/usr/libexec/gcc/x86_64-redhat-linux/4.4.6/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.4.6/:/usr/lib/gcc/x86_64-redhat-linux/:/usr/libexec/gcc/x86_64-redhat-linux/4.4.6/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/4.4.6/:/usr/lib/gcc/x86_64-redhat-linux/
LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.4.6/:/usr/lib/gcc/x86_64-redhat-linux/4.4.6/:/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-m64' '-c' '-shared-libgcc'
'-mtune=generic'

Using built-in specs.
Target: x86_64-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-gnu-unique-object
--enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk
--disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre
--enable-libgcj-multifile --enable-java-maintainer-mode
--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib
--with-ppl --with-cloog --with-tune=generic --with-arch_32=i686
--build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.6 20110731 (Red Hat 4.4.6-3) (GCC) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-m64' '-odefineMe' '-shared

[Bug c++/53602] [4.7/4.8 Regression] Libre Office causes an internal compiler error

2012-06-08 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53602

Richard Henderson  changed:

   What|Removed |Added

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

--- Comment #9 from Richard Henderson  2012-06-08 
14:10:29 UTC ---
Mine.


[Bug tree-optimization/51938] missed optimization: 2 comparisons

2012-06-08 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51938

--- Comment #5 from Marc Glisse  2012-06-08 13:06:52 
UTC ---
The main difficulty is trapping math. It isn't hard to add to
tree-ssa-ifcombine an ifcombine_ifnotandif variant, and we could make it call
maybe_fold_and_comparisons (as ifcombine_ifandif does) with
invert_tree_comparison (gimple_cond_code (outer_cond),...), but unless we pass
-fno-trapping-math, it won't help.

combine_comparisons (fold-const.c) has relevant code to determine whether the
optimization is safe wrt trapping, but it does so with the semantic that
UNLT_EXPR never traps, whereas I am (wrongfully) using it for
TRUTH_NOT_EXPR(GE_EXPR). So I guess that means two more versions of
maybe_fold_and_comparisons/maybe_fold_or_comparisons are needed :-(


[Bug fortran/52531] [OOP] Compilation fails with polymorphic dummy argument and OpenMP

2012-06-08 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52531

janus at gcc dot gnu.org changed:

   What|Removed |Added

 CC||janus at gcc dot gnu.org

--- Comment #3 from janus at gcc dot gnu.org 2012-06-08 13:00:53 UTC ---
(In reply to comment #2)
> Out of curiosity, would there be a technical issue in this case?
> It sure seemed natural to me.

AFAICS there should not be any huge issues. One might consider to implement
this as an extension.


[Bug c++/53613] Cannot override a inline "= default" virtual destructor.

2012-06-08 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53613

--- Comment #2 from Jonathan Wakely  2012-06-08 
11:18:47 UTC ---
(In reply to comment #0)
> Workaround: define parent destructor outside the class definition.

Or add explicit 'noexcept' specifiers to the derived destructors.


[Bug c++/53613] Cannot override a inline "= default" virtual destructor.

2012-06-08 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53613

--- Comment #1 from Jonathan Wakely  2012-06-08 
11:16:47 UTC ---
Fixed on trunk by patch for PR 50043


[Bug c++/53611] class with hidden visibility cause function returns pointer to class also be hidden

2012-06-08 Thread kirbyz...@sogou-inc.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53611

--- Comment #1 from Kirby Zhou  2012-06-08 11:16:36 
UTC ---
gcc source base:

DATE 20120604
svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_7-branch@188193


[Bug c++/53613] New: Cannot override a inline "= default" virtual destructor.

2012-06-08 Thread kirbyz...@sogou-inc.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53613

 Bug #: 53613
   Summary: Cannot override a inline "= default" virtual
destructor.
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: kirbyz...@sogou-inc.com


[root@djt-17-109-v06 tmp]# cat tover.cpp 
struct __cook {
virtual ~__cook() = default;
};

struct __cook1: public __cook {
virtual ~__cook1() = default;
};

struct __cook2: public __cook {
virtual ~__cook2();
};
__cook2::~__cook2() {};

struct __cook3: public __cook {
virtual ~__cook3();
};
__cook3::~__cook3() = default;

[root@djt-17-109-v06 tmp]# g++47 -c -std=gnu++11 tover.cpp 
tover.cpp:6:10: error: looser throw specifier for 'virtual __cook1::~__cook1()'
tover.cpp:2:10: error:   overriding 'virtual __cook::~__cook() noexcept (true)'
tover.cpp:10:10: error: looser throw specifier for 'virtual
__cook2::~__cook2()'
tover.cpp:2:10: error:   overriding 'virtual __cook::~__cook() noexcept (true)'
tover.cpp:15:10: error: looser throw specifier for 'virtual
__cook3::~__cook3()'
tover.cpp:2:10: error:   overriding 'virtual __cook::~__cook() noexcept (true)
'
[root@djt-17-109-v06 tmp]# g++ -c -std=gnu++0x tover.cpp 
# g++ 4.4.6 works

Workaround: define parent destructor outside the class definition.

[root@djt-17-109-v06 tmp]# cat tover.cpp 
struct __cook {
virtual ~__cook();
};
__cook::~__cook() = default;
/*...*/


[Bug c/53612] New: __attribute__((format(...))) does not work with wchar_t format strings

2012-06-08 Thread vhaisman at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53612

 Bug #: 53612
   Summary: __attribute__((format(...))) does not work with
wchar_t format strings
Classification: Unclassified
   Product: gcc
   Version: 4.5.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: vhais...@gmail.com


The __attribute__((format(...))) does not work for wchar_t format strings:

/*-8<--*/
#include 

void foo (char const * fmt, ...) __attribute__ ((format (__printf__, 1, 2)));
void wide_foo (wchar_t const * fmt, ...) __attribute__ ((format (__printf__, 1,
2)));
/*-8<--*/

I get the following error with Cygwin's GCC 4.5.3:

./format_attr_text.c:4:1: error: format string argument not a string type


[Bug c++/53611] New: class with hidden visibility cause function returns pointer to class also be hidden

2012-06-08 Thread kirbyz...@sogou-inc.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53611

 Bug #: 53611
   Summary: class with hidden visibility cause function returns
pointer to class also be hidden
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: kirbyz...@sogou-inc.com


[root@djt-17-109-v06 tmp]# cat tvisi.cpp

extern "C" typedef struct __cook cook_t;
extern "C" cook_t* myopen();

struct __attribute__ ((visibility ("hidden"))) __cook {
virtual ~__cook() = 0;
};

//__attribute__ ((visibility ("default")))
cook_t* myopen()
{
return 0;
}

[root@djt-17-109-v06 tmp]# g++ tvisi.cpp -o libxx.so -shared -fPIC && nm -D
libxx.so | fgrep myopen
05cc T myopen  

The function myopen is exported by g++ 4.4.6

[root@djt-17-109-v06 tmp]# g++47 tvisi.cpp -o libxx.so -shared -fPIC && nm -D
libxx.so | fgrep myopen
[root@djt-17-109-v06 tmp]# 

The function myopen is not exported by g++ 4.7.0

Workaround: define '__cook' after the definition of 'myopen'


[Bug c++/53609] Wrong variadic template pack expansion in alias template

2012-06-08 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53609

Jonathan Wakely  changed:

   What|Removed |Added

   Keywords||rejects-valid
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-06-08
 CC||dodji at gcc dot gnu.org
Summary|Wrong variadic template |Wrong variadic template
   |pack expansion  |pack expansion in alias
   ||template
 Ever Confirmed|0   |1
  Known to fail||4.7.0, 4.8.0

--- Comment #1 from Jonathan Wakely  2012-06-08 
09:49:33 UTC ---
Confirmed.

It works fine if you rewrite it without alias templates:

template struct NumList { typedef List<  Z > type; };

then use NumList::type instead of NumList, so the problem is with the alias
template substitution.

G++ seems to be treating Z... as Z in the type-id of the
alias-declaration.


[Bug c++/53494] [4.7/4.8 Regression] ICE with invalid initializer list

2012-06-08 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53494

--- Comment #22 from Paolo Carlini  2012-06-08 
09:27:34 UTC ---
A tad simpler:

template
struct pair
{
  T first;
  U second;

  pair(const T&, const U&);
};

template
struct array
{
  typedef T value_type;
  value_type data[1];
};

array const> matchSynonyms{ { 1, 1 } };


[Bug c++/53494] [4.7/4.8 Regression] ICE with invalid initializer list

2012-06-08 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53494

--- Comment #21 from Paolo Carlini  2012-06-08 
09:20:47 UTC ---
No includes:

template
struct pair
{
  T first;
  U second;

  pair(const T&, const U&);
};

template
struct array
{
  typedef T value_type;
  value_type data[1];
};

struct string
{
  string(const char*) { }
};

array const> const matchSynonyms{ {"smile",1} };


[Bug c++/53610] C++11: constructors accept silly initializers

2012-06-08 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53610

--- Comment #1 from Jonathan Wakely  2012-06-08 
09:14:23 UTC ---
This seems to be an incomplete implementation of C99 designated initializers,
use -pedantic or -pedantic-errors to get a diagnostic.


[Bug c++/53610] New: C++11: constructors accept silly initializers

2012-06-08 Thread akim.demaille at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53610

 Bug #: 53610
   Summary: C++11: constructors accept silly initializers
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: akim.demai...@gmail.com


Created attachment 27584
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27584
test case

Use braces to call a constructor, G++ 4.7 and 4.8 both accept silly arguments,
provided the number of members matches the number of expected arguments.

#include 

class bar
{
public:
  bar(int a, int b)
  {
std::cerr << a << ' ' << b << std::endl;
  }
};

int
main()
{
  bar{.first = 42, .second = 51};
}


$ g++-mp-4.7 --version
g++-mp-4.7 (MacPorts gcc47 4.7.0_3) 4.7.0
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ g++-mp-4.7 -Wall -std=c++11 bar.cc
$ ./a.out
42 51

$ g++-mp-4.8 --version
g++-mp-4.8 (MacPorts gcc48 4.8-20120603_1) 4.8.0 20120603 (experimental)
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ g++-mp-4.8 -Wall -std=c++11 bar.cc
$ ./a.out
42 51


[Bug c++/53609] New: Wrong variadic template pack expansion

2012-06-08 Thread Gaetano.Checinski at googlemail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53609

 Bug #: 53609
   Summary: Wrong variadic template pack expansion
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: gaetano.checin...@googlemail.com


g++-4.7 missinterperts folowing code :


template struct List{};
template struct Z{ static constexpr int value=I;};
template using NumList = List<  Z... >;

templatestruct Mover;
templateclass C, class...I>
struct Mover>
{
using NL = NumList< I::value... > ;  // aka :  List<  Z... >
// missinterpreted as : List< Z >
};

using L=List< Z<1>,Z<2>,Z<3> >; // Works fine
using L2= NumList< 1,2,3 >; // Works also fine

Mover< L >::NL A; // dont work : should be 1 not 3 args in 'Z'


[Bug target/51643] Incorrect code produced for tail-call of weak function with -O2/-O3 option

2012-06-08 Thread jye2 at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51643

--- Comment #16 from jye2 at gcc dot gnu.org 2012-06-08 08:58:02 UTC ---
Author: jye2
Date: Fri Jun  8 08:57:53 2012
New Revision: 188332

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188332
Log:
2012-06-08  Joey Ye  

Backport r184442 from mainline
2012-02-21  Richard Earnshaw  

PR target/52294
* thumb2.md (thumb2_shiftsi3_short): Split register and 
immediate shifts.  For register shifts tie operands 0 and 1.
(peephole2 for above): Check that register-controlled shifts
have suitably tied operands.

Backport r183756 from mainline
2012-01-31  Matthew Gretton-Dann  

* config/arm/thumb2.md (thumb2_mov_notscc): Use MVN for true
condition.

Backport r183349 from mainline
2012-01-20  Jakub Jelinek  

PR target/51915
* config/arm/arm.c (arm_count_output_move_double_insns): Call
output_move_double on a copy of operands array.

Backport r183095 from mainline
2012-01-11  Matthew Gretton-Dann  

* config/arm/arm.md (mov_notscc): Use MVN for false condition.

Backport r182628 from mainline
2011-12-21  Richard Earnshaw  

PR target/51643
* arm.c (arm_function_ok_for_sibcall): Use DECL_WEAK in previous
change.

Backport r182621 from mainline
2011-12-21  Richard Earnshaw  

PR target/51643
* arm.c (arm_function_ok_for_sibcall): Don't try to tailcall a
weak function on bare-metal EABI targets.

Testsuite:
Backport r183349 from mainline
2012-01-20  Jakub Jelinek  

PR target/51915
* gcc.target/arm/pr51915.c: New test.

Backport r183095 from mainline
2012-01-11  Matthew Gretton-Dann  

* gcc.c-torture/execute/20120110-1.c: New testcase.

Backport r182621 from mainline
2011-12-21  Richard Earnshaw  

PR target/51643
* gcc.target/arm/sibcall-2.c: New test.


Added:
   
branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.c-torture/execute/20120111-1.c
branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.target/arm/pr51915.c
branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.target/arm/sibcall-2.c
Modified:
branches/ARM/embedded-4_6-branch/gcc/ChangeLog.arm
branches/ARM/embedded-4_6-branch/gcc/config/arm/arm.c
branches/ARM/embedded-4_6-branch/gcc/config/arm/arm.md
branches/ARM/embedded-4_6-branch/gcc/config/arm/thumb2.md
branches/ARM/embedded-4_6-branch/gcc/testsuite/ChangeLog.arm


[Bug target/52294] [4.7 Regression] [ARM Thumb] generated asm code produces "branch out of range" error in gas with -Os -mcpu=cortex-a9

2012-06-08 Thread jye2 at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52294

--- Comment #12 from jye2 at gcc dot gnu.org 2012-06-08 08:57:59 UTC ---
Author: jye2
Date: Fri Jun  8 08:57:53 2012
New Revision: 188332

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188332
Log:
2012-06-08  Joey Ye  

Backport r184442 from mainline
2012-02-21  Richard Earnshaw  

PR target/52294
* thumb2.md (thumb2_shiftsi3_short): Split register and 
immediate shifts.  For register shifts tie operands 0 and 1.
(peephole2 for above): Check that register-controlled shifts
have suitably tied operands.

Backport r183756 from mainline
2012-01-31  Matthew Gretton-Dann  

* config/arm/thumb2.md (thumb2_mov_notscc): Use MVN for true
condition.

Backport r183349 from mainline
2012-01-20  Jakub Jelinek  

PR target/51915
* config/arm/arm.c (arm_count_output_move_double_insns): Call
output_move_double on a copy of operands array.

Backport r183095 from mainline
2012-01-11  Matthew Gretton-Dann  

* config/arm/arm.md (mov_notscc): Use MVN for false condition.

Backport r182628 from mainline
2011-12-21  Richard Earnshaw  

PR target/51643
* arm.c (arm_function_ok_for_sibcall): Use DECL_WEAK in previous
change.

Backport r182621 from mainline
2011-12-21  Richard Earnshaw  

PR target/51643
* arm.c (arm_function_ok_for_sibcall): Don't try to tailcall a
weak function on bare-metal EABI targets.

Testsuite:
Backport r183349 from mainline
2012-01-20  Jakub Jelinek  

PR target/51915
* gcc.target/arm/pr51915.c: New test.

Backport r183095 from mainline
2012-01-11  Matthew Gretton-Dann  

* gcc.c-torture/execute/20120110-1.c: New testcase.

Backport r182621 from mainline
2011-12-21  Richard Earnshaw  

PR target/51643
* gcc.target/arm/sibcall-2.c: New test.


Added:
   
branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.c-torture/execute/20120111-1.c
branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.target/arm/pr51915.c
branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.target/arm/sibcall-2.c
Modified:
branches/ARM/embedded-4_6-branch/gcc/ChangeLog.arm
branches/ARM/embedded-4_6-branch/gcc/config/arm/arm.c
branches/ARM/embedded-4_6-branch/gcc/config/arm/arm.md
branches/ARM/embedded-4_6-branch/gcc/config/arm/thumb2.md
branches/ARM/embedded-4_6-branch/gcc/testsuite/ChangeLog.arm


[Bug target/51915] [4.7 Regression] ICE in output_move_double

2012-06-08 Thread jye2 at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51915

--- Comment #6 from jye2 at gcc dot gnu.org 2012-06-08 08:58:01 UTC ---
Author: jye2
Date: Fri Jun  8 08:57:53 2012
New Revision: 188332

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=188332
Log:
2012-06-08  Joey Ye  

Backport r184442 from mainline
2012-02-21  Richard Earnshaw  

PR target/52294
* thumb2.md (thumb2_shiftsi3_short): Split register and 
immediate shifts.  For register shifts tie operands 0 and 1.
(peephole2 for above): Check that register-controlled shifts
have suitably tied operands.

Backport r183756 from mainline
2012-01-31  Matthew Gretton-Dann  

* config/arm/thumb2.md (thumb2_mov_notscc): Use MVN for true
condition.

Backport r183349 from mainline
2012-01-20  Jakub Jelinek  

PR target/51915
* config/arm/arm.c (arm_count_output_move_double_insns): Call
output_move_double on a copy of operands array.

Backport r183095 from mainline
2012-01-11  Matthew Gretton-Dann  

* config/arm/arm.md (mov_notscc): Use MVN for false condition.

Backport r182628 from mainline
2011-12-21  Richard Earnshaw  

PR target/51643
* arm.c (arm_function_ok_for_sibcall): Use DECL_WEAK in previous
change.

Backport r182621 from mainline
2011-12-21  Richard Earnshaw  

PR target/51643
* arm.c (arm_function_ok_for_sibcall): Don't try to tailcall a
weak function on bare-metal EABI targets.

Testsuite:
Backport r183349 from mainline
2012-01-20  Jakub Jelinek  

PR target/51915
* gcc.target/arm/pr51915.c: New test.

Backport r183095 from mainline
2012-01-11  Matthew Gretton-Dann  

* gcc.c-torture/execute/20120110-1.c: New testcase.

Backport r182621 from mainline
2011-12-21  Richard Earnshaw  

PR target/51643
* gcc.target/arm/sibcall-2.c: New test.


Added:
   
branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.c-torture/execute/20120111-1.c
branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.target/arm/pr51915.c
branches/ARM/embedded-4_6-branch/gcc/testsuite/gcc.target/arm/sibcall-2.c
Modified:
branches/ARM/embedded-4_6-branch/gcc/ChangeLog.arm
branches/ARM/embedded-4_6-branch/gcc/config/arm/arm.c
branches/ARM/embedded-4_6-branch/gcc/config/arm/arm.md
branches/ARM/embedded-4_6-branch/gcc/config/arm/thumb2.md
branches/ARM/embedded-4_6-branch/gcc/testsuite/ChangeLog.arm


[Bug c++/53602] [4.7/4.8 Regression] Libre Office causes an internal compiler error

2012-06-08 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53602

--- Comment #8 from Jakub Jelinek  2012-06-08 
07:57:23 UTC ---
Or perhaps just handle this particular case for now, when there has been jump
threading right after the sp adjustment sequence that cancelled each other.
Thus, if we reach end of bb after the insn without seeing a CALL or or throwing
insn and the bb has a single fallthru successor only, keep looking in the
successor bb.


[Bug fortran/52552] [OOP] ICE when trying to allocate non-allocatable object giving a dynamic type

2012-06-08 Thread janus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52552

--- Comment #5 from janus at gcc dot gnu.org 2012-06-08 07:55:34 UTC ---
(In reply to comment #4)
> This patch avoids the segfault and correctly rejects the test case. I hope it
> does not introduce any other problems (I'll try it on the testsuite soon).

It passes the testsuite without any failures.


[Bug c++/53602] [4.7/4.8 Regression] Libre Office causes an internal compiler error

2012-06-08 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53602

Jakub Jelinek  changed:

   What|Removed |Added

 CC||rth at gcc dot gnu.org

--- Comment #7 from Jakub Jelinek  2012-06-08 
07:51:25 UTC ---
We end up with:
(insn 38 73 40 5 (parallel [
(set (reg/f:SI 7 sp)
(plus:SI (reg/f:SI 7 sp)
(const_int 12 [0xc])))
(clobber (reg:CC 17 flags))   
]) pr53602.ii:359 251 {*addsi_1}  
 (expr_list:REG_UNUSED (reg:CC 17 flags)
(expr_list:REG_ARGS_SIZE (const_int 0 [0])
(nil

(insn 40 38 41 5 (parallel [
(set (reg/f:SI 7 sp)
(plus:SI (reg/f:SI 7 sp)
(const_int -12 [0xfff4])))
(clobber (reg:CC 17 flags))
]) pr53602.ii:64 251 {*addsi_1}
 (expr_list:REG_UNUSED (reg:CC 17 flags)
(expr_list:REG_ARGS_SIZE (const_int 12 [0xc])
(nil

(insn 41 40 42 5 (set (mem/f:SI (pre_dec:SI (reg/f:SI 7 sp)) [0 S4 A32])
(mem/f/c:SI (plus:SI (reg/f:SI 6 bp)
(const_int -12 [0xfff4])) [3 D.3489.pData+0 S4
A32])) pr53602.ii:64 43 {*pushsi2}
 (expr_list:REG_ARGS_SIZE (const_int 16 [0x10])
(nil)))

before csa and csa obviously merges the two into sp += 0 that it wants to
delete.
force_move_args_size is called with prev == NULL (as it is at the start of a
bb).  But apparently cleanup_cfg at the start of csa pass jump threaded the
call sequence starting at insn 41, so the two stack adjustments that cancel
each other end up the only insns in a bb.  So we trigger:
  /* ??? We *must* have a place, lest we ICE on the lost adjustment.
 Options are: dummy clobber insn, nop, or prevent the removal of
 the sp += 0 insn.  Defer that decision until we can prove this
 can actually happen.  */

I guess if we proved that all the predecessors of the bb have the same current
REG_ARGS_SIZE, or all the successor have the same current REG_ARGS_SIZE, we
could avoid the note altogether.  Or do one of the things the comment talks
about.  Richard, can you please handle this?