[Bug c++/52830] New: ICE: canonical types differ for identity types ... when attempting SFINAE with member type

2012-04-02 Thread lucdanton at free dot fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52830

 Bug #: 52830
   Summary: ICE: canonical types differ for identity types ...
when attempting SFINAE with member type
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: lucdan...@free.fr


Created attachment 27061
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27061
Testcase

Using

$ gcc-snapshot --version
gcc-snapshot (Debian 20120313-1) 4.8.0 20120313 (experimental) [trunk revision
185345]

I get the following when attempting to compile what I believe to be a correct
testcase program (although I could be wrong on correctness):

main.cpp:25:21: internal compiler error: canonical types differ for identical
types std::enable_ifstd::is_sametypename fooT::type, U::value, int and
std::enable_ifstd::is_sameT, U::value, int

The program compiles and behaves as expected if T is used instead of
type/typename fooT::type in both declaration and definition, or if bar is
defined inline.


[Bug c/52825] incorrect message for incompatible pointer type with extra struct for a typedeffed struct

2012-04-02 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52825

Mikael Pettersson mikpe at it dot uu.se changed:

   What|Removed |Added

 CC||mikpe at it dot uu.se

--- Comment #1 from Mikael Pettersson mikpe at it dot uu.se 2012-04-02 
07:09:49 UTC ---
Also happens with gcc 4.6, 4.5, and 4.4.  gcc 4.3 and older just print passing
argument 1 of 'f' from incompatible pointer type without trying to show the
corresponding types.

The problem is that gcc incorrectly refers to the type foo from 'typedef struct
{...} foo;' (note: no struct tag) as 'struct foo' in the diagnostic.


[Bug fortran/52789] gfortran sets -Wunused-parameter in the C sense as well as the Fortran sense

2012-04-02 Thread tkoenig at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52789

--- Comment #3 from Thomas Koenig tkoenig at gcc dot gnu.org 2012-04-02 
07:40:32 UTC ---
This may have been fixed with the fix for PR 48847.

Can you maybe check on trunk/4.7.0 ?


[Bug c++/9050] [DR 147] Can't explicitly specialize C++ constructor templates

2012-04-02 Thread schaub.johannes at googlemail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9050

--- Comment #16 from Johannes Schaub schaub.johannes at googlemail dot com 
2012-04-02 07:43:23 UTC ---
(In reply to comment #15)
 (In reply to comment #14)
 
 Good point, I've pointed out the problem with the proposed resolution.

Note that we currently have
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#581 open. 

Even when 12.1 would have allowed both the injected class name and it followed
by template-arguments, the name lookup rules would never allow it to match the
second condition because the injected class name would always have been
translated to a name denoting the constructor instead of the class.

So ultimately, 12.1 allowing the injected class name followed by template
arguments could only be used in an unqualified-id constructor declaration in
C++03.


[Bug fortran/52789] gfortran sets -Wunused-parameter in the C sense as well as the Fortran sense

2012-04-02 Thread mathewc at nag dot co.uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52789

--- Comment #4 from Mat Cross mathewc at nag dot co.uk 2012-04-02 08:03:22 
UTC ---
(In reply to comment #3)
 Can you maybe check on trunk/4.7.0 ?

I've just tried with

$ gfortran --version
GNU Fortran (GCC) 4.7.1 20120331 (prerelease)

$ gfortran -c -Wunused-parameter unused.f90
unused.f90:2.23:

integer, parameter :: i = 0
   1
Warning: Unused parameter 'i' declared at (1)
unused.f90:1:0: warning: unused parameter ‘x’ [-Wunused-parameter]

and

$ gfortran --version
GNU Fortran (GCC) 4.8.0 20120330 (experimental) [trunk revision 185988]

$ gfortran -c -Wunused-parameter unused.f90
unused.f90:2.23:

integer, parameter :: i = 0
   1
Warning: Unused parameter 'i' declared at (1)
unused.f90:1:0: warning: unused parameter ‘x’ [-Wunused-parameter]


[Bug c++/49152] Unhelpful diagnostic for iterator dereference

2012-04-02 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49152

--- Comment #31 from Manuel López-Ibáñez manu at gcc dot gnu.org 2012-04-02 
08:16:52 UTC ---
(In reply to comment #30)
 (In reply to comment #26)
  The caret is not a solution to this problem, because what Gabriel wants is 
  to
  not reconstruct expressions ONLY when the caret is shown, but he has said in
  the past that the caret should default to OFF to not change the current 
  output
  for IDEs and other software parsing the output of gcc like emacs, so we are
  back to printing the monsters mentioned above by default.
 
 I think I've said before that caret should default to on when the output is a
 terminal.
 

Well, that is reassuring. Then, will we still pretty-print expressions in
diagnostics once we have the caret?

Is there a GCC way to detect that the output is a terminal?


[Bug c++/40942] GCC accepts code that Comeau and MSVC deems invalid.

2012-04-02 Thread dodji at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40942

--- Comment #9 from Dodji Seketeli dodji at gcc dot gnu.org 2012-04-02 
08:51:30 UTC ---
Author: dodji
Date: Mon Apr  2 08:51:26 2012
New Revision: 186067

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=186067
Log:
PR c++/40942 - Failure of template specialization partial ordering

gcc/cp/

* pt.c (more_specialized_fn):  Don't apply decay conversion to
types of function parameters.

gcc/testsuite/

* g++.old-deja/g++.pt/spec40.C: Adjust to take the resolution of
DR 214 in account.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/cp/pt.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.old-deja/g++.pt/spec40.C


[Bug c++/40942] GCC accepts code that Comeau and MSVC deems invalid.

2012-04-02 Thread dodji at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40942

Dodji Seketeli dodji at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #10 from Dodji Seketeli dodji at gcc dot gnu.org 2012-04-02 
08:56:24 UTC ---
Fixed in 4.8 (trunk).


[Bug middle-end/52821] [4.8 Regression] 191.fma3d in SPEC CPU 2000 failed to build with LTO

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52821

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.8.0


[Bug libstdc++/52822] [C++11] stable_partition destroys sequence due to inappropriate self-move-assignment

2012-04-02 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52822

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 CC||paolo.carlini at oracle dot
   ||com

--- Comment #6 from Paolo Carlini paolo.carlini at oracle dot com 2012-04-02 
09:10:16 UTC ---
Ah great, thanks. For the FSF branches, I would say, let's just condition the
assignment on 4.6 (+ testcase) and have the complete fix/improvement for
4.7/4.8. Can you send the patch to the mailing lists too? Minor nit: first
blush, doesn't seem completely obvious to me what a 'true' predicate is - and
normally we just have a test for each overload, eg, with/without predicate.
Thus I would recommend extending a bit the comment in the testcase, even better
also have a separate testcase (named as the PR #) for the specific case in the
PR and also extend at will the existing test(s).


[Bug c++/52814] Internal compiler error: segmentation fault

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52814

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.6.1
  Known to fail||4.6.0

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
09:12:27 UTC ---
Fixed in 4.6.1.


[Bug bootstrap/52808] [4.8 Regression] LTO bootstrap failed with bootstrap-profiled

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52808

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-04-02
 AssignedTo|unassigned at gcc dot   |rguenth at gcc dot gnu.org
   |gnu.org |
   Target Milestone|--- |4.8.0
 Ever Confirmed|0   |1

--- Comment #6 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
09:13:44 UTC ---
Mine.


[Bug java/52805] [4.8 Regression] 243 new GCC HEAD@185977 regressions (libjava failures)

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52805

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.8.0

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
09:14:35 UTC ---
I also see the issue, all runtime tests fail with OOM.


[Bug c/52802] Equality rewrites pessimizes code

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52802

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2012-04-02
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
09:16:20 UTC ---
How would you do with a single compare?!


[Bug middle-end/52793] [4.8 Regression] 483.xalancbmk in SPEC CPU 2006 failed to build

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52793

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.8.0


[Bug rtl-optimization/52803] [4.8 Regression] ICE: in ira, at ira.c:3616 with -fno-move-loop-invariants on almost any code

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52803

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-04-02
 AssignedTo|unassigned at gcc dot   |rguenth at gcc dot gnu.org
   |gnu.org |
   Target Milestone|--- |4.8.0
 Ever Confirmed|0   |1

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
09:15:50 UTC ---
Might be caused by my changes.  Looking into it.


[Bug fortran/52789] gfortran sets -Wunused-parameter in the C sense as well as the Fortran sense

2012-04-02 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52789

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||diagnostic
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-04-02
 CC||burnus at gcc dot gnu.org
 Ever Confirmed|0   |1

--- Comment #5 from Tobias Burnus burnus at gcc dot gnu.org 2012-04-02 
09:38:34 UTC ---
Confirmed.

 * * *

We have for GCC in general:

  Language Independent Options
  Warning Options
   -Wunused-parameter
  Warn whenever a function parameter is unused aside from its declaration.
  (It is automatically enabled with -Wunused or -Wall.)

And gfortran specific:
  -Wunused-dummy-argument
 Warn about unused dummy arguments. This option is implied by -Wall.
  -Wunused-parameter
 Contrary to gcc's meaning of -Wunused-parameter, gfortran's implementation
 of this option does not warn about unused dummy arguments (see
 -Wunused-dummy-argument), but about unused PARAMETER values.
 -Wunused-parameter is not included in -Wall but is implied by -Wall
 -Wextra.

 * * *

TODO:

* -Wunused does not imply any of the Fortran -Wunused-* warnings.
  But it should! Interestingly, is does not even seem to enable the middle end
  warnings.

* If only -Wunused-parameter is used - but no flag which implies
  -Wunused-dummy-argument, the parameter has to be eliminated for the
  middle-end handling. Thus, we need a gfc_option.* for it - and ensure
  that warn_unused_parameter has the proper value (e.g. 0 if only
  -Wunused-parameter is used.)


[Bug middle-end/52831] New: extract_bit_field_1: issue when str_rtx unsafe from target

2012-04-02 Thread aurelien.buhrig.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52831

 Bug #: 52831
   Summary: extract_bit_field_1: issue when str_rtx unsafe from
target
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: aurelien.buhrig@gmail.com


This bug makes gcc.c-torture/execute/20040625-1.c fail on my private target
port with gcc 4.6.3. Note that it also occurs on trunk during expand, but it
seems to be masked by next passes.

The issue occurs when:
- str_rtx (op0) is not safe from target
- when bitsize  BITS_PER_WORD

Example:

WORD_MODE = HImode
Pmode == ptr_mode == PSImode

extract_bit_field_1 (str_rtx=0x2c15be28, bitsize=32, bitnum=0, unsignedp=1,
packedp=1 '\001', target=0x2c16c880, mode=PSImode, tmode=PSImode, 
fallback_p=1 '\001')
(gdb) call debug_rtx (str_rtx)
(mem:BLK (reg/v/f:PSI 22 [ s ]) [2 *s_3(D)+0 S4 A8])
(gdb) call debug_rtx (target)
(reg/v/f:PSI 22 [ s ])

Here is the expand log from trunk (see insns 19 and 20):

; s_4 = s_3(D)-next;

(insn 10 9 11 (clobber (reg/v/f:PSI 22 [ s ]))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))

(insn 11 10 12 (set (reg:QI 25)
(mem:QI (plus:PSI (reg/v/f:PSI 22 [ s ])
(const_int 2 [0x2])) [0+2 S1 A8]))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))

(insn 12 11 13 (set (reg:HI 24)
(zero_extend:HI (reg:QI 25)))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))

(insn 13 12 14 (set (reg:HI 26)
(reg:HI 24))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))

(insn 14 13 15 (set (reg:HI 26)
(unspec:HI [
(reg:HI 26)
] 11))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))

(insn 15 14 16 (set (strict_low_part (subreg:QI (reg:HI 26) 1))
(const_int 0 [0]))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))

(insn 16 15 17 (set (reg:QI 28)
(mem:QI (plus:PSI (reg/v/f:PSI 22 [ s ])
(const_int 3 [0x3])) [0+3 S1 A8]))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))

(insn 17 16 18 (set (reg:HI 27)
(zero_extend:HI (reg:QI 28)))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))

(insn 18 17 19 (set (reg:HI 29)
(ior:HI (reg:HI 27)
(reg:HI 26)))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))

(insn 19 18 20 (set (subreg:HI (reg/v/f:PSI 22 [ s ]) 2)
(reg:HI 29))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))

(insn 20 19 21 (set (reg:QI 31)
(mem:QI (reg/v/f:PSI 22 [ s ]) [0+0 S1 A8]))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))

(insn 21 20 22 (set (reg:HI 30)
(zero_extend:HI (reg:QI 31)))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))

(insn 22 21 23 (set (reg:HI 32)
(reg:HI 30))
/home/buhrig/work/sdk/gcc/trunk/src/gcc/testsuite/gcc.c-torture/execute/20040625-1.c:8
-1
 (nil))


The provided patch solves the issue by using an intermediate reg, when needed,
before extracting in word mode.


[Bug middle-end/52831] extract_bit_field_1: issue when str_rtx unsafe from target

2012-04-02 Thread aurelien.buhrig.gcc at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52831

--- Comment #1 from Aurelien Buhrig aurelien.buhrig.gcc at gmail dot com 
2012-04-02 09:42:28 UTC ---
Created attachment 27062
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27062
Fix


[Bug c/52802] Equality rewrites pessimizes code

2012-04-02 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52802

Mikael Pettersson mikpe at it dot uu.se changed:

   What|Removed |Added

 CC||mikpe at it dot uu.se

--- Comment #2 from Mikael Pettersson mikpe at it dot uu.se 2012-04-02 
09:43:03 UTC ---
On x86, mov and jcc don't clobber the flags, so the first cmpl should compare
with 8 not 7, the jbe should be adjusted to jb, and then the second cmpl is
redundant as the flags from the first cmpl are still available.


[Bug fortran/52729] Symbol has no implicit type in SELECT TYPE block

2012-04-02 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52729

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||rejects-valid
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-04-02
 CC||burnus at gcc dot gnu.org
 Ever Confirmed|0   |1

--- Comment #1 from Tobias Burnus burnus at gcc dot gnu.org 2012-04-02 
09:54:32 UTC ---
That's an odd issue.

The problem only occurs if one has a BLOCK (or the SELECT TYPE or ASSOCIATE
constructs which use it internally).

At the same time, one needs to have the function on the LHS of both a procedure
call and a proc-pointer assignment.

I think that one somewhere only looks as the namespace and its parent
(ns-parent) instead of walking higher up.


Reduced example:

module testMod
  implicit none
contains
  subroutine testSub()
procedure(double precision ), pointer :: r
double precision  :: testVal

block
  testVal=testFunc()
  r = testFunc
end block
  end subroutine testSub

  double precision function testFunc()
  end function testFunc
end module testMod


[Bug fortran/52832] New: ASSOCIATE construct with proc-pointer selector is rejected

2012-04-02 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52832

 Bug #: 52832
   Summary: ASSOCIATE construct with proc-pointer selector is
rejected
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Keywords: rejects-valid
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: bur...@gcc.gnu.org


Encountered when looking at PR 52729. I have not checked whether the following
program is valid, but my feeling is that it is.

Currently, gfortran rejects it with:

associate (k=r)
   1
Error: Expected association at (1)


  subroutine testSub()
procedure(real), pointer :: r
associate (k=r)
end associate
  end subroutine testSub


[Bug c++/52833] New: -O2 optimizes loop to infinite when loop invariant based on arithmetic overflow

2012-04-02 Thread gwpublic at wp dot pl
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52833

 Bug #: 52833
   Summary: -O2 optimizes loop to infinite when loop invariant
based on arithmetic overflow
Classification: Unclassified
   Product: gcc
   Version: 4.6.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: gwpub...@wp.pl


Created attachment 27063
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27063
This loop compiles to endless when O2 in gcc 4.6.1

Hello,

following code is based on artihmetic overflow assumption (after overflow we
gen 0 number on x86 and x86_64):

$cat overflow_loop.cpp
int main(){
int s=1, i=0;
while (s0) {
++i;
s=2*s;
}
return i;
} 


While it compiles fine when -O1 and -O2 , on -O3 compiles to infinite loop.

Let's generate assembly codes:
$ g++ -O1 -S -o overflow_loop-O1.s overflow_loop.cpp
$ g++ -O2 -S -o overflow_loop-O2.s overflow_loop.cpp


There is following difference between loops:

overflow_loop-O1.s
(...)
.L2:
addl$1, %eax
cmpl$31, %eax
jne.L2
(...)

overflow_loop-O2.s
(...)
.L2:
jmp.L2
(...)


Let's check what flags are enabled for O1 and O2

$ echo '$ gcc -c -Q -O2 --help=optimizers | grep enabled | sort ' 
optim_O2.txt
$ gcc -c -Q -O2 --help=optimizers | grep enabled | sort  optim_O2.txt
$ echo '$ gcc -c -Q -O1 --help=optimizers | grep enabled | sort ' 
optim_O1.txt
$ gcc -c -Q -O1 --help=optimizers | grep enabled | sort  optim_O1.txt


Here is the difference:

$ diff optim_O{1,2}.txt
1c1,5
 $ gcc -c -Q -O1 --help=optimizers | grep enabled | sort
---
 $ gcc -c -Q -O2 --help=optimizers | grep enabled | sort
   -falign-functions   [enabled]
   -falign-jumps   [enabled]
   -falign-labels  [enabled]
   -falign-loops   [enabled]
3a8
   -fcaller-saves  [enabled]
7a13,14
   -fcrossjumping  [enabled]
   -fcse-follow-jumps  [enabled]
10a18
   -fdevirtualize  [enabled]
12a21
   -fexpensive-optimizations   [enabled]
13a23
   -fgcse  [enabled]
18a29,30
   -finline-small-functions[enabled]
   -fipa-cp[enabled]
21a34
   -fipa-sra   [enabled]
27a41,43
   -foptimize-register-move[enabled]
   -foptimize-sibling-calls[enabled]
   -fpeephole2 [enabled]
29a46
   -fregmove   [enabled]
30a48,50
   -freorder-blocks[enabled]
   -freorder-functions [enabled]
   -frerun-cse-after-loop  [enabled]
40a61
   -fschedule-insns2   [enabled]
44a66,67
   -fstrict-aliasing   [enabled]
   -fthread-jumps  [enabled]
47a71
   -ftree-builtin-call-dce [enabled]
62a87
   -ftree-pre  [enabled]
68a94
   -ftree-switch-conversion[enabled]
70a97
   -ftree-vrp  [enabled]


Finally, detailed compiler version:
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.1/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: /build/src/gcc-4.6-20110819/configure --prefix=/usr
--libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man
--infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/
--enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared
--enable-threads=posix --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-clocale=gnu --enable-gnu-unique-object
--enable-linker-build-id --with-ppl --enable-cloog-backend=isl --enable-lto
--enable-gold --enable-ld=default --enable-plugin --with-plugin-ld=ld.gold
--disable-multilib --disable-libssp --disable-libstdcxx-pch
--enable-checking=release
Thread model: posix
gcc version 4.6.1 20110819 (prerelease) (GCC)


[Bug c++/52833] -O2 optimizes loop to infinite when loop invariant based on arithmetic overflow

2012-04-02 Thread gwpublic at wp dot pl
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52833

--- Comment #1 from Grzegorz Wierzowiecki gwpublic at wp dot pl 2012-04-02 
10:09:15 UTC ---
Created attachment 27064
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27064
overflow_loop-O1.s - Assembly after -O1


[Bug c++/52833] -O2 optimizes loop to infinite when loop invariant based on arithmetic overflow

2012-04-02 Thread gwpublic at wp dot pl
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52833

--- Comment #2 from Grzegorz Wierzowiecki gwpublic at wp dot pl 2012-04-02 
10:09:48 UTC ---
Created attachment 27065
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27065
overflow_loop-O2.s - assembly after -O2


[Bug c++/52833] -O2 optimizes loop to infinite when loop invariant based on arithmetic overflow

2012-04-02 Thread gwpublic at wp dot pl
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52833

--- Comment #3 from Grzegorz Wierzowiecki gwpublic at wp dot pl 2012-04-02 
10:11:02 UTC ---
Created attachment 27066
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27066
compiler flags enabled by -O1


[Bug c++/52833] -O2 optimizes loop to infinite when loop invariant based on arithmetic overflow

2012-04-02 Thread gwpublic at wp dot pl
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52833

--- Comment #4 from Grzegorz Wierzowiecki gwpublic at wp dot pl 2012-04-02 
10:11:32 UTC ---
Created attachment 27067
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27067
compiler flags enabled by -O2


[Bug c++/52833] -O2 optimizes loop to infinite when loop invariant based on arithmetic overflow

2012-04-02 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52833

--- Comment #5 from Jonathan Wakely redi at gcc dot gnu.org 2012-04-02 
10:12:34 UTC ---
(In reply to comment #0)

 following code is based on artihmetic overflow assumption (after overflow we
 gen 0 number on x86 and x86_64):

Bad assumption, overflow is undefined behaviour.

The bug submission form asys to read http://gcc.gnu.org/bugs/ before reporting
bugs, which says if your code works as you expect with -fwrapv then it's not a
bug in the compiler, it's a bug in your code.


[Bug c++/52833] -O2 optimizes loop to infinite when loop invariant based on arithmetic overflow

2012-04-02 Thread gwpublic at wp dot pl
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52833

Grzegorz Wierzowiecki gwpublic at wp dot pl changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED

--- Comment #6 from Grzegorz Wierzowiecki gwpublic at wp dot pl 2012-04-02 
10:16:31 UTC ---
Thanks for confirmation, I wanted to ensure it works as expected.


[Bug target/52802] Equality rewrites pessimizes code

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52802

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
 Target||x86_64-*-*, i?86-*-*
 Status|WAITING |NEW
  Component|c   |target

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
10:28:58 UTC ---
Confirmed.  On the tree level we canonicalize things which is good, if
you change the source to what the canonicalization looks like you get the
same problem.

Target issue.


[Bug fortran/52832] ASSOCIATE construct with proc-pointer selector is rejected

2012-04-02 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52832

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 CC||burnus at gcc dot gnu.org

--- Comment #1 from Tobias Burnus burnus at gcc dot gnu.org 2012-04-02 
10:30:43 UTC ---
From Fortran 2008:

 R804  association  is  associate-name = selector
 R805  selector  is  expr
 or  variable

 R602  variable  is  designator
 or  expr
 R601  designator  is  object-name

and expr boils down to:

R701 primary  is  constant
  or  designator  ! See above
  or ...

Thus, it boils down to the question whether that's fulfilled for a procedure
pointer.


Note that there such entries, which make me inclined that it is not valid:

R554 saved-entity  is  object-name
   or  proc-pointer-name
R639 pointer-object  is  variable-name [or ...]
 or  proc-pointer-name


Possible usage of proc-pointer selectors:
  associate(f = very%long%name%procptr)
f = something  !  usage as variable
a = f(4) + f(7) * f(x) + ... !  usage as expr
where the latter is more useful.


A quick test shows that ifort, pgf95 and crayftn accept proc-pointers in
ASSOCIATE.


[Bug middle-end/52800] [4.8 Regression] eglibc build broken with internal compiler error in cfgloop .

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52800

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-04-02
 AssignedTo|unassigned at gcc dot   |rguenth at gcc dot gnu.org
   |gnu.org |
   Target Milestone|--- |4.8.0
Summary|eglibc build broken with|[4.8 Regression] eglibc
   |internal compiler error in  |build broken with internal
   |cfgloop .   |compiler error in cfgloop .
 Ever Confirmed|0   |1

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
10:34:03 UTC ---
Fixed by

Index: gcc/cprop.c
===
--- gcc/cprop.c (revision 186066)
+++ gcc/cprop.c (working copy)
@@ -1916,7 +1916,7 @@ execute_rtl_cprop (void)
   changed = one_cprop_pass ();
   flag_rerun_cse_after_global_opts |= changed;
   if (changed)
-cleanup_cfg (0);
+cleanup_cfg (CLEANUP_CFG_CHANGED);
   return 0;
 }


[Bug bootstrap/52808] [4.8 Regression] LTO bootstrap failed with bootstrap-profiled

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52808

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Depends on||52756

--- Comment #7 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
10:39:39 UTC ---
The fix for this depends on fixing PR52756.  The issue here is -ftracer.


[Bug c++/52833] -O2 optimizes loop to infinite when loop invariant based on arithmetic overflow

2012-04-02 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52833

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Resolution|FIXED   |INVALID


[Bug middle-end/52756] [4.8 Regression] 255.vortex in SPEC CPU 2000 failed to build

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52756

--- Comment #6 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
11:38:59 UTC ---
It doesn't work, as we expect loop_latch_edge () to work during further
threading.
It also does not work because we miss some threadings and thus hit the assert
that e-aux is NULL after threading is done.

The issue is that we thread both the latch and the loop entry edge.  But the
code special casing each case does not consider that both may happen at
the same time.  If we'd re-start at thread_through_loop_header for the case
in this bug we'd fail, as the entry edges THREAD_TARGET2 is set.

Thus, I'll try again with

Index: gcc/tree-ssa-threadupdate.c
===
--- gcc/tree-ssa-threadupdate.c (revision 186066)
+++ gcc/tree-ssa-threadupdate.c (working copy)
@@ -838,6 +838,7 @@ thread_through_loop_header (struct loop
   edge_iterator ei;
   basic_block tgt_bb, atgt_bb;
   enum bb_dom_status domst;
+  bool threaded_latch = false;

   /* We have already threaded through headers to exits, so all the threading
  requests now are to the inside of the loop.  We need to avoid creating
@@ -908,6 +909,7 @@ thread_through_loop_header (struct loop
   if (single_succ_p (header))
 goto fail;

+thread_rest:
   if (latch-aux)
 {
   if (THREAD_TARGET2 (latch))
@@ -916,7 +918,7 @@ thread_through_loop_header (struct loop
   tgt_bb = tgt_edge-dest;
 }
   else if (!may_peel_loop_headers
-   !redirection_block_p (loop-header))
+   !redirection_block_p (header))
 goto fail;
   else
 {
@@ -950,7 +952,7 @@ thread_through_loop_header (struct loop
   if (!tgt_bb)
{
  /* There are no threading requests.  */
- return false;
+ return threaded_latch;
}

   /* Redirecting to empty loop latch is useless.  */
@@ -971,7 +973,7 @@ thread_through_loop_header (struct loop
   loop-header = NULL;
   loop-latch = NULL;
   loops_state_set (LOOPS_NEED_FIXUP);
-  return thread_block (header, false);
+  return threaded_latch | thread_block (header, false);
 }

   if (tgt_bb-loop_father-header == tgt_bb)
@@ -994,9 +996,10 @@ thread_through_loop_header (struct loop
   loop-latch = thread_single_edge (latch);
   gcc_assert (single_succ (loop-latch) == tgt_bb);
   loop-header = tgt_bb;
+  threaded_latch = true;

   /* Thread the remaining edges through the former header.  */
-  thread_block (header, false);
+  goto thread_rest;
 }
   else
 {
@@ -1039,7 +1042,7 @@ fail:
   free (e-aux);
   e-aux = NULL;
 }
-  return false;
+  return threaded_latch;
 }

 /* Walk through the registered jump threads and convert them into a


[Bug rtl-optimization/52803] [4.8 Regression] ICE: in ira, at ira.c:3616 with -fno-move-loop-invariants on almost any code

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52803

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
11:59:51 UTC ---
Author: rguenth
Date: Mon Apr  2 11:59:47 2012
New Revision: 186080

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=186080
Log:
2012-04-02  Richard Guenther  rguent...@suse.de

PR middle-end/52803
* loop-init.c (gate_handle_loop2): Destroy loops here if
we don't enter RTL loop optimizers.

* gcc.dg/pr52803.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.dg/pr52803.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/loop-init.c
trunk/gcc/testsuite/ChangeLog


[Bug middle-end/52800] [4.8 Regression] eglibc build broken with internal compiler error in cfgloop .

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52800

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
12:00:39 UTC ---
Fixed.


[Bug rtl-optimization/52803] [4.8 Regression] ICE: in ira, at ira.c:3616 with -fno-move-loop-invariants on almost any code

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52803

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
11:59:59 UTC ---
Fixed.


[Bug middle-end/52800] [4.8 Regression] eglibc build broken with internal compiler error in cfgloop .

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52800

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
12:00:34 UTC ---
Author: rguenth
Date: Mon Apr  2 12:00:30 2012
New Revision: 186081

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=186081
Log:
2012-04-02  Richard Guenther  rguent...@suse.de

PR rtl-optimization/52800
* cprop.c (execute_rtl_cprop): Call cleanup_cfg with
CLEANUP_CFG_CHANGED.

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


[Bug regression/52834] New: [4.7 Regression] ICE (segfault) in check_tag_decl

2012-04-02 Thread doko at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52834

 Bug #: 52834
   Summary: [4.7 Regression] ICE (segfault) in check_tag_decl
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: regression
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: d...@gcc.gnu.org


Created attachment 27068
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27068
preprocessed source

seen with the 4.7.0 release (x86_64-linux-gnu), works with 4.6.3

$ g++ -c -g ProcessDies.ii   In file included from
/usr/include/libsysactivity/global.h:56:0,
 from /usr/include/libsysactivity/libsysactivity.h:122,
 from
/home/packages/tmp/sentinella-0.9.0/src/Conditions/ProcessDies.h:24,
 from
/home/packages/tmp/sentinella-0.9.0/src/Conditions/ProcessDies.cpp:21:
/usr/include/libsysactivity/process.h:40:1: internal compiler error:
Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.

Program received signal SIGSEGV, Segmentation fault.
0x004fed50 in check_tag_decl(cp_decl_specifier_seq*) ()
(gdb) bt
#0  0x004fed50 in check_tag_decl(cp_decl_specifier_seq*) ()
#1  0x0050f0e6 in shadow_tag(cp_decl_specifier_seq*) ()
#2  0x0056bfdd in ?? ()
#3  0x00571238 in ?? ()
#4  0x0057547c in ?? ()
#5  0x00574118 in ?? ()
#6  0x00574458 in ?? ()
#7  0x005754f8 in ?? ()
#8  0x00574118 in ?? ()
#9  0x005759e3 in c_parse_file() ()
#10 0x00605c05 in c_common_parse_file() ()
#11 0x0086fae0 in toplev_main(int, char**) ()
#12 0x75ddcead in __libc_start_main () from
/lib/x86_64-linux-gnu/libc.so.6
#13 0x004e8181 in _start ()


[Bug regression/52834] [4.7 Regression] ICE (segfault) in check_tag_decl

2012-04-02 Thread markus at trippelsdorf dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52834

Markus Trippelsdorf markus at trippelsdorf dot de changed:

   What|Removed |Added

 CC||markus at trippelsdorf dot
   ||de

--- Comment #1 from Markus Trippelsdorf markus at trippelsdorf dot de 
2012-04-02 13:47:30 UTC ---
Testcase:

__attribute__ ((visibility(default))) enum foo{
  bar = 0 };

 % gcc -c test.ii
test.ii:2:11: internal compiler error: Segmentation fault
Please submit a full bug report,


[Bug middle-end/52756] [4.8 Regression] 255.vortex in SPEC CPU 2000 failed to build

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52756

--- Comment #7 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
14:05:31 UTC ---
With that patch gcc.dg/tree-ssa/ssa-dom-thread-2.c regresses as we do not
perform the threading through the header edge anymore.  Note that using
thread_block (header, true); for the rest of the header edges does not
work either, as it still happily creates the multiple entry loop with
the bogus header.

The following is another possibility - remove the remaining threadings
that would be harmful but allow those that would be safe.

Index: gcc/tree-ssa-threadupdate.c
===
--- gcc/tree-ssa-threadupdate.c (revision 186082)
+++ gcc/tree-ssa-threadupdate.c (working copy)
@@ -826,6 +826,17 @@ determine_bb_domination_status (struct l
   return (bb_reachable ? DOMST_DOMINATING : DOMST_LOOP_BROKEN);
 }

+/* Return true if BB is part of the new pre-header that is created
+   when threading the latch to DATA.  */
+
+static bool
+def_split_header_continue_p (const_basic_block bb, const void *data)
+{
+  const_basic_block new_header = (const_basic_block) data;
+  return (bb-loop_father == new_header-loop_father
+  bb != new_header);
+}
+
 /* Thread jumps through the header of LOOP.  Returns true if cfg changes.
If MAY_PEEL_LOOP_HEADERS is false, we avoid threading from entry edges
to the inside of the loop.  */
@@ -990,11 +1001,46 @@ thread_through_loop_header (struct loop

   if (latch-aux)
 {
+  basic_block *bblocks;
+  unsigned nblocks, i;
+
   /* First handle the case latch edge is redirected.  */
   loop-latch = thread_single_edge (latch);
   gcc_assert (single_succ (loop-latch) == tgt_bb);
   loop-header = tgt_bb;

+  /* Remove the new pre-header blocks from our loop.  */
+  bblocks = XCNEWVEC (basic_block, loop-num_nodes);
+  nblocks = dfs_enumerate_from (header, 0, def_split_header_continue_p,
+   bblocks, loop-num_nodes, tgt_bb);
+  for (i = 0; i  nblocks; i++)
+   {
+ remove_bb_from_loops (bblocks[i]);
+ add_bb_to_loop (bblocks[i], loop_outer (loop));
+   }
+  free (bblocks);
+
+  /* Cancel remaining threading requests that would make the
+loop a multiple entry loop.  */
+  FOR_EACH_EDGE (e, ei, header-preds)
+   {
+ edge e2;
+ if (e-aux == NULL)
+   continue;
+
+ if (THREAD_TARGET2 (e))
+   e2 = THREAD_TARGET2 (e);
+ else
+   e2 = THREAD_TARGET (e);
+
+ if (e-src-loop_father != e2-dest-loop_father
+  e2-dest != loop-header)
+   {
+ free (e-aux);
+ e-aux = NULL;
+   }
+   }
+
   /* Thread the remaining edges through the former header.  */
   thread_block (header, false);
 }


[Bug middle-end/52756] [4.8 Regression] 255.vortex in SPEC CPU 2000 failed to build

2012-04-02 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52756

--- Comment #8 from Richard Guenther rguenth at gcc dot gnu.org 2012-04-02 
15:13:50 UTC ---
Author: rguenth
Date: Mon Apr  2 15:13:45 2012
New Revision: 186085

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=186085
Log:
2012-04-02  Richard Guenther  rguent...@suse.de

PR tree-optimization/52756
* tree-ssa-threadupdate.c (def_split_header_continue_p): New function.
(thread_through_loop_header): After threading through the loop latch
remove the split part from the loop and clear further threading
opportunities that would create a multiple entry loop.

* gcc.dg/torture/pr52756.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr52756.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-threadupdate.c


[Bug fortran/52835] New: Incorrect code generated by gfortran 4.7.0

2012-04-02 Thread arnaud02 at users dot sourceforge.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52835

 Bug #: 52835
   Summary: Incorrect code generated by gfortran 4.7.0
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: arnau...@users.sourceforge.net


uname -sm
Linux x86_64
cat qq.f
  SUBROUTINE QQ2( ISU, ZSPM, RSV, MS )
  INTEGER :: ISU(MS)
  CHARACTER(8) :: ZSPM(MS)
  REAL :: RSV(MS)

  DO IS=1,MS
 ISU(IS)=0
 ZSPM(IS)=' '
 RSV(IS) =0.0
  ENDDO
  END subroutine qq2

  SUBROUTINE QQ()
  INTEGER, ALLOCATABLE :: ISU(:)
  CHARACTER(8), ALLOCATABLE :: ZSPM(:)
  REAL, ALLOCATABLE :: RSV(:)

  ALLOCATE( RSV(3) )
  ALLOCATE( ISU(3) )
  ALLOCATE( ZSPM(3) )
  CALL QQ2( ISU, ZSPM, RSV, 3 )
  write(*,*) '--',zspm(1)
  END subroutine qq

  program p1
  call qq()
  end program p1
gfortran470 -O3 -g qq.f -static-libgfortran ; valgrind --track-origins=yes 
./a.out
==18017== Memcheck, a memory error detector
==18017== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==18017== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==18017== Command: ./a.out
==18017==
==18017== Syscall param write(buf) points to uninitialised byte(s)
==18017==at 0x3541CC4150: __write_nocancel (in /lib64/libc-2.5.so)
==18017==by 0x40981C: raw_write (unix.c:308)
==18017==by 0x40F4FE: _gfortrani_fbuf_flush (unix.h:56)
==18017==by 0x405416: _gfortrani_next_record (transfer.c:3397)
==18017==by 0x405CF8: _gfortran_st_write_done (transfer.c:3592)
==18017==by 0x401C5B: qq_ (qq.f:22)
==18017==by 0x401CFC: main (qq.f:26)
==18017==  Address 0x4c2fb44 is 4 bytes inside a block of size 512 alloc'd
==18017==at 0x4A0776F: malloc (vg_replace_malloc.c:263)
==18017==by 0x4037B8: _gfortrani_get_mem (memory.c:43)
==18017==by 0x40F38A: _gfortrani_fbuf_init (fbuf.c:43)
==18017==by 0x408F89: _gfortrani_init_units (unit.c:585)
==18017==by 0x403747: init (main.c:226)
==18017==by 0x4196F5: ??? (in /tmp/arnaud/a.out)
==18017==by 0x401612: ??? (in /tmp/arnaud/a.out)
==18017==by 0x9CA212C: ???
==18017==by 0x419676: __libc_csu_init (in /tmp/arnaud/a.out)
==18017==by 0x3541C1D84D: (below main) (in /lib64/libc-2.5.so)
==18017==  Uninitialised value was created by a heap allocation
==18017==at 0x4A0776F: malloc (vg_replace_malloc.c:263)
==18017==by 0x401BE0: qq_ (qq.f:20)
==18017==by 0x401CFC: main (qq.f:26)
==18017==
 --
==18017==
==18017== HEAP SUMMARY:
==18017== in use at exit: 0 bytes in 0 blocks
==18017==   total heap usage: 20 allocs, 20 frees, 3,878 bytes allocated
==18017==
==18017== All heap blocks were freed -- no leaks are possible
==18017==
==18017== For counts of detected and suppressed errors, rerun with: -v
==18017== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 4 from 4)

The test case above demonstrates the problem observed on a large production
system. In qq2, zspm is not set properly to   as shown by valgrind. This is
taking place only when compiled with -O3. 

This is a regression with respect to gfortran 4.6.2.


[Bug c++/49152] Unhelpful diagnostic for iterator dereference

2012-04-02 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49152

--- Comment #32 from Jason Merrill jason at gcc dot gnu.org 2012-04-02 
15:57:16 UTC ---
(In reply to comment #31)
 Well, that is reassuring. Then, will we still pretty-print expressions in
 diagnostics once we have the caret?

No, there should be no need to.

 Is there a GCC way to detect that the output is a terminal?

I don't know if there's a usual GCC way, but isatty seems like a good way.


[Bug middle-end/52835] [4.7/4.8 Regression] -O3 wrongly optimizes loop __builtin_memcpy away

2012-04-02 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52835

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Keywords||wrong-code
   Last reconfirmed||2012-04-02
  Component|fortran |middle-end
 CC||burnus at gcc dot gnu.org
 Ever Confirmed|0   |1
Summary|Incorrect code generated by |[4.7/4.8 Regression] -O3
   |gfortran 4.7.0  |wrongly optimizes loop
   ||__builtin_memcpy away
   Target Milestone|--- |4.7.1

--- Comment #1 from Tobias Burnus burnus at gcc dot gnu.org 2012-04-02 
16:11:37 UTC ---
Confirmed - and smells rather like a middle-end issue. (Or a rather convoluted
FE declaration bug.)


Works with my 2011-12-24-r182676 build
Fails with my 2012-02-28-r184613 build
(Note: Those contained some patches, which shouldn't™ affect the result.)

 * * *

Works with: gfortran -fdump-tree-optimized -funswitch-loops
-fpredictive-commoning -fgcse-after-reload -ftree-vectorize -finline-functions
-fipa-cp-clone -O2
(And fails with -O3 and the -fno-* version of those flags.) Thus, none of the
specific flags which get enabled with -O3 seems too blame.

 * * *

Looking at the optimized dump, the loop
  DO IS=1,MS
 ISU(IS)=0
 ZSPM(IS)=' '
 RSV(IS) =0.0
  ENDDO

gets replaced by:
  __builtin_memset (D.1976_27, 0, 12);
  __builtin_memset (D.1956_11, 0, 12);

That's almost fine, however, the
  ZSPM(is) = ' '
is lacking. With -O2 one finds in the loop:
  __builtin_memcpy (D.2078_113, [0], 8);

Note that ZSPM is an array of size 3 of character strings of length 8:
  character(len=8) :: ZSPM(MS)
where MS is 3.

The best (optimized) version would be something like memset(ZSPM,  , 3*8);.


In 4.6, one had (with -O3) and expanded loop with the following for [0], [1]
and [2]:
  D.1697_89 = MEM[(character(kind=1)[0:D.1598][1:8] *)D.1577_23][0];
  __builtin_memcpy (D.1697_89, [0], 8);


[Bug middle-end/52835] [4.7/4.8 Regression] -O3 wrongly optimizes loop __builtin_memcpy away

2012-04-02 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52835

--- Comment #2 from Dominique d'Humieres dominiq at lps dot ens.fr 2012-04-02 
16:18:47 UTC ---
r183622 is OK
r183649 miscompiles the code.


[Bug java/52805] [4.8 Regression] 243 new GCC HEAD@185977 regressions (libjava failures)

2012-04-02 Thread iains at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52805

--- Comment #5 from Iain Sandoe iains at gcc dot gnu.org 2012-04-02 16:29:25 
UTC ---
Rainer's commit (http://gcc.gnu.org/ml/gcc-cvs/2012-04/msg00031.html) fixes
this for i686-darwin9.


[Bug fortran/52774] Derived-type assignment: check required to prevent double deallocation of allocatable component

2012-04-02 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52774

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Keywords||wrong-code
   Last reconfirmed||2012-04-02
 CC||burnus at gcc dot gnu.org,
   ||pault at gcc dot gnu.org
 Ever Confirmed|0   |1
Summary|A check is needed to|Derived-type assignment:
   |prevent deallocation in |check required to prevent
   |realloc-lhs |double deallocation of
   ||allocatable component
  Known to fail||4.3.4, 4.7.1, 4.8.0

--- Comment #1 from Tobias Burnus burnus at gcc dot gnu.org 2012-04-02 
16:36:17 UTC ---
Confirmed.

Remarks:

a) The reduced program in comment 0 is invalid: As p1%p is not allocated,
   accessing it with   print *, p1%p   is invalid - and is likely to segfault.
   Solution: Use print *, allocated (p1%p)   which shall print F;
   that still gives the expected segfault or invalid free() errors from
   valgrind with current gfortran - as expected.

b) The issue is unrelated to realloc on assignment and seems to be related to
   allocatable components (TR 15581, a GCC 4.2 feature). At least the program
   in comment 0 [modified as in comment (a)] also fails with GCC 4.3, using
   -fno-realloc-lhs  does not help, and valgrind shows the same failure.


[Bug libstdc++/52822] [C++11] stable_partition destroys sequence due to inappropriate self-move-assignment

2012-04-02 Thread jyasskin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52822

--- Comment #7 from Jeffrey Yasskin jyasskin at gcc dot gnu.org 2012-04-02 
16:41:41 UTC ---
Sounds good. Will send the patches to the list, probably tomorrow. Thanks!


[Bug regression/52834] [4.7 Regression] ICE (segfault) in check_tag_decl

2012-04-02 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52834

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2012-04-02 
16:45:42 UTC ---
Dup of PR52671 ?


[Bug java/52805] [4.8 Regression] 243 new GCC HEAD@185977 regressions (libjava failures)

2012-04-02 Thread iains at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52805

--- Comment #6 from Iain Sandoe iains at gcc dot gnu.org 2012-04-02 17:13:14 
UTC ---
(In reply to comment #2)
 e.g. AFAICT, although darwin defines JCR_SECTION_NAME, there is no crt
 machinery to deal with it [darwin has it's own crt code]

JFTR (in case anyone else has gone looking for it),  there's no entry in the
Darwin system-provided crts for this, and we don't supply an FSF one for it
either - instead, it appears that the class init code is provided in
libgcj.dylib (from libjava/darwin.cc).


[Bug c++/49152] Unhelpful diagnostic for iterator dereference

2012-04-02 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49152

--- Comment #33 from Manuel López-Ibáñez manu at gcc dot gnu.org 2012-04-02 
17:15:47 UTC ---
(In reply to comment #32)
 (In reply to comment #31)
  Well, that is reassuring. Then, will we still pretty-print expressions in
  diagnostics once we have the caret?
 
 No, there should be no need to.

As a first minimal step, would a first patch be enough that simply:

* Adds an option to disable/enable the caret? By default on if(isatty),
otherwise off.
* Implements the caret by reopening the file, looks for the appropriate line,
and prints this line, then prints a '^' below it using the column info.

Of course this may fail in some cases, like non-ANSI input, and not
preprocessing, but it will work in 99% of the cases. In any case, it is not
clear to me that we want to print the preprocessed line instead of the original
text.


[Bug c++/49152] Unhelpful diagnostic for iterator dereference

2012-04-02 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49152

--- Comment #34 from Manuel López-Ibáñez manu at gcc dot gnu.org 2012-04-02 
17:18:34 UTC ---
(In reply to comment #32)
 
 Of course this may fail in some cases, like non-ANSI input, and not
 preprocessing, but it will work in 99% of the cases. In any case, it is not
 clear to me that we want to print the preprocessed line instead of the 
 original
 text.

BTW, non-ANSI input may not even handled correctly by libcpp according to
PR49152, so I think we don't need to worry about it just now.


[Bug c++/49152] Unhelpful diagnostic for iterator dereference

2012-04-02 Thread manu at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49152

--- Comment #35 from Manuel López-Ibáñez manu at gcc dot gnu.org 2012-04-02 
17:19:15 UTC ---
(In reply to comment #34)
 (In reply to comment #32)
  
  Of course this may fail in some cases, like non-ANSI input, and not
  preprocessing, but it will work in 99% of the cases. In any case, it is not
  clear to me that we want to print the preprocessed line instead of the 
  original
  text.
 
 BTW, non-ANSI input may not even handled correctly by libcpp according to
 PR49152, so I think we don't need to worry about it just now.

Sorry, I meant PR49973 .


[Bug c++/49152] Unhelpful diagnostic for iterator dereference

2012-04-02 Thread pinskia at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49152

--- Comment #36 from pinskia at gmail dot com pinskia at gmail dot com 
2012-04-02 17:35:59 UTC ---
I know some of us use tee and that disables termainal detection code usually.
Or output to a file and then use tail -f. So please don't do that. It would
confuse lots of users.



Sent from my Palm Pre on ATamp;T
On Apr 2, 2012 4:17, manu at gcc dot gnu.org lt;gcc-bugzi...@gcc.gnu.orggt;
wrote: 

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



--- Comment #31 from Manuel López-Ibáñez lt;manu at gcc dot gnu.orggt;
2012-04-02 08:16:52 UTC ---

(In reply to comment #30)

gt; (In reply to comment #26)

gt; gt; The caret is not a solution to this problem, because what Gabriel
wants is to

gt; gt; not reconstruct expressions ONLY when the caret is shown, but he has
said in

gt; gt; the past that the caret should default to OFF to not change the
current output

gt; gt; for IDEs and other software parsing the output of gcc like emacs, so
we are

gt; gt; back to printing the monsters mentioned above by default.

gt; 

gt; I think I've said before that caret should default to on when the output
is a

gt; terminal.

gt; 



Well, that is reassuring. Then, will we still pretty-print expressions in

diagnostics once we have the caret?



Is there a GCC way to detect that the output is a terminal?


[Bug middle-end/52835] [4.7/4.8 Regression] -O3 wrongly optimizes loop __builtin_memcpy away

2012-04-02 Thread arnaud02 at users dot sourceforge.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52835

--- Comment #3 from Arnaud Desitter arnaud02 at users dot sourceforge.net 
2012-04-02 17:54:06 UTC ---
Additionally:
cat xxx.f
  SUBROUTINE XXX(RES,ALP,REN,NN )
  DIMENSION ALP(NN),REN (NN),RES (NN)
  DO IP = 1,NN
 REN(IP) = 0.0
 ALP(IP) = 0.0
 CALL YYY(ALP(IP),REN(IP),RES(IP))
  ENDDO
  END
gfortran470 -c -O3 -o xxx_O3.o xxx.f ; gfortran470 -c -O2 -o xxx_O2.o xxx.f ; 
nm xxx*.o

xxx_O2.o:
 T xxx_
 U yyy_

xxx_O3.o:
 U memset
 T xxx_

When compiled with -O3, the call to YYY is not generated. This is a pretty
serious wrong code generation.


[Bug regression/52834] [4.7 Regression] ICE (segfault) in check_tag_decl

2012-04-02 Thread markus at trippelsdorf dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52834

--- Comment #3 from Markus Trippelsdorf markus at trippelsdorf dot de 
2012-04-02 18:31:21 UTC ---
(In reply to comment #2)
 Dup of PR52671 ?

Yes. Gcc-4.8 from today is fine. Gcc-4.7 release fails.
Haven't tried the gcc-4.7 branch, but it seems obvious.


[Bug libffi/52497] libffi doesn't build on powerpc64-linux after latest upstream merge

2012-04-02 Thread bergner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52497

Peter Bergner bergner at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-04-02
 AssignedTo|unassigned at gcc dot   |bergner at gcc dot gnu.org
   |gnu.org |
   Target Milestone|--- |4.8.0
 Ever Confirmed|0   |1


[Bug libffi/52497] libffi doesn't build on powerpc64-linux after latest upstream merge

2012-04-02 Thread bergner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52497

Peter Bergner bergner at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #3 from Peter Bergner bergner at gcc dot gnu.org 2012-04-02 
18:50:22 UTC ---
Patch committed to gcc sources as revision 186091.  AG will merge these changes
back to upstream libffi.


[Bug middle-end/52835] [4.7/4.8 Regression] -O3 wrongly optimizes loop __builtin_memcpy away

2012-04-02 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52835

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2012-04-02 
19:18:22 UTC ---
Started with http://gcc.gnu.org/viewcvs?root=gccview=revrev=183624 and it is
ldist that incorrectly removes the call.


[Bug middle-end/52835] [4.7/4.8 Regression] -O3 wrongly optimizes loop __builtin_memcpy away

2012-04-02 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52835

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2012-04-02 
19:38:31 UTC ---
Created attachment 27069
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27069
gcc48-pr52835.patch

Untested fix.  Ignoring failures from compute_*loop can't be right.


[Bug fortran/52724] Internal read with character(kind=4) data

2012-04-02 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52724

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2012-04-02
 CC||burnus at gcc dot gnu.org
 Ever Confirmed|0   |1

--- Comment #3 from Tobias Burnus burnus at gcc dot gnu.org 2012-04-02 
20:01:08 UTC ---
(In reply to comment #2)
 I am curious about what this line is doing:

  character buffer4(100)
  buffer4 = 4_'123'

Well, that line does what it should do: It assign the value '123' - trimmed to
one character (namely '1') to the array buffer4. The array4 then contains 100
times the value '1'.

(In reply to comment #0)
   read(buffer4,*) i
   print *,i
   end
 ig25@linux-fd1f:~/Krempel/Opt gfortran foo.f90
 ig25@linux-fd1f:~/Krempel/Opt ./a.out
1

And seemingly that's also what Thomas gets.

 * * *

(In reply to comment #2)
 buffer4 is a kind=1 variable.  have you tried:
 character(kind=4) buffer4(100) ?

Well, with len=1,kind=4 or with len=2,kind=2 one gets, respectively, 1 and 12 -
which is the expected result.

However, the following fails:

  character(len=2,kind=4) buffer4(100)
  integer i
  buffer4 = 4_'123'
  read(buffer4,*) i
  print *,i
  end

Fortran runtime error: Bad integer for item 1 in list input


Printing the value of the array as print *, buffer4, one gets the expected 
121212 as output.

And reading the line as
  read(buffer4,'(i5)') i
works and yields 12. Only when replacing the formatted read by a
list-directed read, it fails.


[Bug target/52836] New: internal compiler error: in push_minipool_fix, at config/arm/arm.c:13084

2012-04-02 Thread meadori at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52836

 Bug #: 52836
   Summary: internal compiler error: in push_minipool_fix, at
config/arm/arm.c:13084
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: mead...@codesourcery.com
Target: arm


From r185746 trunk:

$ ./install/bin/arm-none-linux-gnueabi-gcc -O2 -funroll-loops -march=armv7-a
arm-minipool-ice.c 
/home/meadori/etc/bugs/arm-minipool-ice.c: In function 'Super_Mix':
/home/meadori/etc/bugs/arm-minipool-ice.c:144:3: warning: incompatible implicit
declaration of built-in function 'memset' [enabled by default]
/home/meadori/etc/bugs/arm-minipool-ice.c: In function 'Next_Fugue':
/home/meadori/etc/bugs/arm-minipool-ice.c:175:1: internal compiler error: in
push_minipool_fix, at config/arm/arm.c:13084
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.


[Bug target/52836] internal compiler error: in push_minipool_fix, at config/arm/arm.c:13084

2012-04-02 Thread meadori at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52836

--- Comment #1 from Meador Inge meadori at codesourcery dot com 2012-04-02 
20:54:30 UTC ---
Created attachment 27070
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27070
Reproduction case


[Bug c++/49152] Unhelpful diagnostic for iterator dereference

2012-04-02 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49152

--- Comment #37 from Jason Merrill jason at gcc dot gnu.org 2012-04-02 
22:05:13 UTC ---
(In reply to comment #36)
 I know some of us use tee and that disables termainal detection code usually.

Right, so then you don't get the caret by default.  You can still enable it
with a flag if you want.

Actually, it's not clear to me that the caret line would be likely to cause
trouble for IDEs in any case; they already have to deal with output that isn't
a specific error.  Maybe we should just turn it on by default in all cases, and
possibly backtrack to only on a tty if it causes problems.


[Bug c++/52837] New: ICE in cp/mangle.c:3306

2012-04-02 Thread matt at godbolt dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52837

 Bug #: 52837
   Summary: ICE in cp/mangle.c:3306
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: m...@godbolt.org


GCC version: 4.7.0 (custom build)
System type: Ubuntu 11.10 3.0.0-16-generic
$ /site/apps/gcc-4.7.0-drw.2/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/site/apps/gcc-4.7.0-drw.2/bin/gcc
COLLECT_LTO_WRAPPER=/site/apps/gcc-4.7.0-drw.2/libexec/gcc/x86_64-linux-gnu/4.7.0/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ./configure --prefix /site/apps/gcc-4.7.0-drw.2
--build=x86_64-linux-gnu --enable-clocale=gnu --enable-gold
--enable-languages=c,c++ --enable-ld=default --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-linker-build-id --enable-lto
--enable-plugin --enable-shared --enable-threads=posix --host=x86_64-linux-gnu
--target=x86_64-linux-gnu --with-pkgversion=DRW-internal-build
--with-plugin-ld=ld.gold --with-system-zlib
--with-gmp=/home/prodappadmin/fig-packages/scratch/gcc/4.7.0/build/gmp-5.0.2
--with-mpfr=/home/prodappadmin/fig-packages/scratch/gcc/4.7.0/build/mpfr-3.1.0
--with-mpc=/home/prodappadmin/fig-packages/scratch/gcc/4.7.0/build/mpc-0.9
--with-libelf=/home/prodappadmin/fig-packages/scratch/gcc/4.7.0/build/libelf-0.8.9
Thread model: posix
gcc version 4.7.0 (DRW-internal-build) 

command-line: /site/apps/gcc-4.7.0-drw.2/bin/gcc -MD -g3 -Wall -fPIC -DXP_UNIX
-DIN_GCC -DPLUGIN_NO_POISON -DHAVE_CONFIG_H 
-I/site/apps/gcc-4.7.0-drw.2/lib/gcc/x86_64-linux-gnu/4.7.0/plugin/include
-I/home/mgodbolt/build/objs-js/dist/include
-I/home/mgodbolt/build/objs-js/dist/lib -I//home/mgodbolt/local/include/js/ 
-O2 -x c++ -c util.c

compiler output: 
In file included from /home/mgodbolt/build/objs-js/dist/include/jsval.h:48:0,
 from /home/mgodbolt/build/objs-js/dist/include/jspubtd.h:47,
 from /home/mgodbolt/build/objs-js/dist/include/jsapi.h:49,
 from gcc_compat.h:31,
 from util.c:21:
/home/mgodbolt/build/objs-js/dist/include/jsutil.h:642:58: internal compiler
error: in mangle_decl_string, at cp/mangle.c:3306



When compiling the attached file we get an ICE in cp/mangle.c line 3306
(commented We shouldn't be trying to mangle an uninstantiated template.).

I have been unable to winnow down a more confined example of this error as I am
very unfamiliar with the code being built (it's an old version of the mozilla
JS runtime).

The error can be reproduced with the attached preprocessed file using simply 
cc1plus util.ii


[Bug c++/52837] ICE in cp/mangle.c:3306

2012-04-02 Thread matt at godbolt dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52837

--- Comment #1 from Matt Godbolt matt at godbolt dot org 2012-04-02 22:17:15 
UTC ---
Created attachment 27071
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27071
This is the .ii file that reproduces the problem. (gzipped to get past upload
limitations)

(attempt at attaching .ii file, first attempt failed).


[Bug c++/52837] ICE in cp/mangle.c:3306

2012-04-02 Thread matt at godbolt dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52837

--- Comment #2 from Matt Godbolt matt at godbolt dot org 2012-04-02 22:51:14 
UTC ---
After a little more research, I've managed to get a 4-line reproduction case.
(See attached).

I also confirmed this code compiles without error on GCC4.5 and GCC4.6.


[Bug c++/52837] ICE in cp/mangle.c:3306

2012-04-02 Thread matt at godbolt dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52837

--- Comment #3 from Matt Godbolt matt at godbolt dot org 2012-04-02 22:52:26 
UTC ---
Created attachment 27072
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=27072
Minimal reproducible test case

$ /site/apps/gcc-4.7.0-drw.2/bin/gcc -c gcc-4.7-ice-demangle.cc 
gcc-4.7-ice-demangle.cc:6:58: internal compiler error: in mangle_decl_string,
at cp/mangle.c:3306


[Bug target/52838] New: [x32] missed optimization for pointer return value

2012-04-02 Thread bartoldeman at users dot sourceforge.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52838

 Bug #: 52838
   Summary: [x32] missed optimization for pointer return value
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: bartolde...@users.sourceforge.net


The program test.c:

extern void *foo(void);
extern void bar(void*);

void test(void)
{
  bar(foo());
}

when compiled with
gcc-4.7 -mx32 -Os -S test.c
produces:
.filetest.c
.text
.globltest
.typetest, @function
test:
.LFB0:
.cfi_startproc
pushq%rax
.cfi_def_cfa_offset 16
callfoo
popq%rdx
.cfi_def_cfa_offset 8
movq%rax, %rdi
jmpbar
.cfi_endproc
.LFE0:
.sizetest, .-test
.identGCC: (Debian 4.7.0-1) 4.7.0
.section.note.GNU-stack,,@progbits

Here movq %rax, %rdi could be replaced by movl %eax, %edi, saving one
prefix byte 0x48.


[Bug java/52815] class.c:2815:53: error: 'JCR_SECTION_NAME' was not declared in this scope

2012-04-02 Thread dave.anglin at bell dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52815

--- Comment #2 from dave.anglin at bell dot net 2012-04-03 01:05:02 UTC ---
Fix is obvious but should GCC be smart enough to ignore code
code after gcc_unreachable?

--
John David Anglindave.ang...@bell.net


[Bug libstdc++/52839] New: double free or corruption running tr1/.../default_weaktoshared.exe

2012-04-02 Thread amodra at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52839

 Bug #: 52839
   Summary: double free or corruption running
tr1/.../default_weaktoshared.exe
Classification: Unclassified
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: amo...@gmail.com


Occasionally seen with r185830 when running libstdc++ testsuite on power7. 
Quickly reproducible using a few copies of
while LD_LIBRARY_PATH=necessary_paths ./default_weaktoshared.exe; do true done


*** glibc detected *** ./default_weaktoshared.exe: double free or corruption
(fasttop): 0x100222e8 ***
=== Backtrace: =
/lib/power7/libc.so.6(+0x833b8)[0xfc333b8]
/lib/power7/libc.so.6(cfree+0x94)[0xfc38b24]
/home/amodra/build/gcc-virgin/powerpc-linux/./libstdc++-v3/src/.libs/libstdc++.so.6(_ZdlPv+0x2c)[0xff12b7c]
./default_weaktoshared.exe[0x1eb8]
/lib/power7/libpthread.so.0(+0x749c)[0xfd6749c]
/lib/power7/libc.so.6(clone+0x84)[0xfca2160]
=== Memory map: 
0010-0012 r-xp  00:00 0  [vdso]
0fbb-0fd4 r-xp  fd:00 20234319  
/lib/power7/libc-2.11.1.so
0fd4-0fd5 rw-p 0018 fd:00 20234319  
/lib/power7/libc-2.11.1.so
0fd6-0fd8 r-xp  fd:00 20234324  
/lib/power7/libpthread-2.11.1.so
0fd8-0fd9 rw-p 0001 fd:00 20234324  
/lib/power7/libpthread-2.11.1.so
0fda-0fdc r-xp  fd:00 24224298  
/home/amodra/build/gcc-virgin/gcc/libgcc_s.so.1
0fdc-0fdd rw-p 0001 fd:00 24224298  
/home/amodra/build/gcc-virgin/gcc/libgcc_s.so.1
0fde-0fe9 r-xp  fd:00 20234322  
/lib/power7/libm-2.11.1.so
0fe9-0fea r--p 000a fd:00 20234322  
/lib/power7/libm-2.11.1.so
0fea-0feb rw-p 000b fd:00 20234322  
/lib/power7/libm-2.11.1.so
0fec-0ffd r-xp  fd:00 34160649  
/home/amodra/build/gcc-virgin/powerpc-linux/libstdc++-v3/src/.libs/libstdc++.so.6.0.17
0ffd-0ffe r--p 0010 fd:00 34160649  
/home/amodra/build/gcc-virgin/powerpc-linux/libstdc++-v3/src/.libs/libstdc++.so.6.0.17
0ffe-0fff rw-p 0011 fd:00 34160649  
/home/amodra/build/gcc-virgin/powerpc-linux/libstdc++-v3/src/.libs/libstdc++.so.6.0.17
1000-1001 r-xp  fd:00 14912951  
/home/amodra/build/gcc-virgin/powerpc-linux/libstdc++-v3/testsuite/default_weaktoshared.exe
1001-1002 rw-p  fd:00 14912951  
/home/amodra/build/gcc-virgin/powerpc-linux/libstdc++-v3/testsuite/default_weaktoshared.exe
1002-1005 rwxp  00:00 0  [heap]
f22e-f22f ---p  00:00 0 
f22f-f2b4 rw-p  00:00 0 
f2b4-f2b5 ---p  00:00 0 
f2b5-f33a rw-p  00:00 0 
f33a-f33b ---p  00:00 0 
f33b-f3c0 rw-p  00:00 0 
f3c0-f3c3 rw-p  00:00 0 
f3c3-f3d0 ---p  00:00 0 
f3d5-f3d6 ---p  00:00 0 
f3d6-f45b rw-p  00:00 0 
f45b-f45c ---p  00:00 0 
f45c-f4e1 rw-p  00:00 0 
f4e1-f4e2 ---p  00:00 0 
f4e2-f567 rw-p  00:00 0 
f567-f568 ---p  00:00 0 
f568-f5ed rw-p  00:00 0 
f5ed-f5ee ---p  00:00 0 
f5ee-f673 rw-p  00:00 0 
f673-f674 ---p  00:00 0 
f674-f6f9 rw-p  00:00 0 
f6f9-f6fa ---p  00:00 0 
f6fa-f77f rw-p  00:00 0 
f77f-f782 r-xp  fd:00 7757916   
/lib/ld-2.11.1.so
f782-f783 rw-p 0002 fd:00 7757916   
/lib/ld-2.11.1.so
ffd1-ffe6 rw-p  00:00 0 
[stack]
/bin/bash: line 2:  4173 Aborted (core dumped)

[Bug target/52828] powerpc -m32 -Os writes register saves below stack

2012-04-02 Thread amodra at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52828

Alan Modra amodra at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2012-04-03
 AssignedTo|unassigned at gcc dot   |amodra at gmail dot com
   |gnu.org |
 Ever Confirmed|0   |1


[Bug ada/52752] GNAT bug box on instantiation of subprogram with not null-qualified named access type

2012-04-02 Thread denkpadje at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52752

denkpadje at gmail dot com changed:

   What|Removed |Added

 CC||denkpadje at gmail dot com

--- Comment #2 from denkpadje at gmail dot com 2012-04-03 02:36:59 UTC ---
It seems the error is triggered in a different .c file with GNAT GPL 2010:


$ gnatmake -v -gnat05 -gnatd -O0 testcase.adb:

+===GNAT BUG DETECTED==+
| GPL 2010 (20100603) (i686-pc-linux-gnu) GCC error:   |
| in simplify_subreg, at simplify-rtx.c:4924   |
| Error detected around test.adb:16|
...
compilation abandoned


$ gnatmake -v -gnat05 -gnatd -O1 testcase.adb:

+===GNAT BUG DETECTED==+
| GPL 2010 (20100603) (i686-pc-linux-gnu) GCC error:   |
| in simplify_subreg, at simplify-rtx.c:4924   |
| Error detected around test.adb:21|
...
raised TYPES.UNRECOVERABLE_ERROR : comperr.adb:423


$ gnatmake -v -gnat05 -gnatd -O2 testcase.adb:

gcc -c -gnat05 -gnatd -O2 test.adb

raised STORAGE_ERROR : stack overflow (or erroneous memory access)


No gnat bug box with -O2 :/


[Bug c++/49152] Unhelpful diagnostic for iterator dereference

2012-04-02 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49152

--- Comment #38 from Andrew Pinski pinskia at gcc dot gnu.org 2012-04-03 
03:41:00 UTC ---
(In reply to comment #37)
 Actually, it's not clear to me that the caret line would be likely to cause
 trouble for IDEs in any case; they already have to deal with output that isn't
 a specific error.  Maybe we should just turn it on by default in all cases, 
 and
 possibly backtrack to only on a tty if it causes problems.

What I was trying to say, I think it would confuse an user who did a make and
saw an error and then did another make but this time piped to tee or to an
output file.  And looked at the output file and it was different than what was
on the tty before.

This is why I think we should not worry about the IDEs and just have them
handle those cases just as we handle the case of emitting more debugging info
and such.


[Bug target/52836] internal compiler error: in push_minipool_fix, at config/arm/arm.c:13084

2012-04-02 Thread cltang at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52836

Chung-Lin Tang cltang at gcc dot gnu.org changed:

   What|Removed |Added

 CC||cltang at gcc dot gnu.org

--- Comment #2 from Chung-Lin Tang cltang at gcc dot gnu.org 2012-04-03 
04:33:44 UTC ---
Also note that, for the above testcase from Meador, the ICE is hidden after the
changes in rev.185913, although a similar fail may still be triggered for
gcc.c-torture/compile/920928-2.c