[Bug tree-optimization/49849] New: loop optimization prevents vectorization

2011-07-26 Thread vincenzo.innocente at cern dot ch
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49849

   Summary: loop optimization prevents vectorization
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: vincenzo.innoce...@cern.ch


In the following example I suspect that some sort of loop merging at O3 prevent
the optimization of the second inner loop in bar
compare
c++ -Wall -O2 -ftree-vectorize -ftree-vectorizer-verbose=7 -c vectHist.cpp
-ffast-math
c++ -Wall -O3 -ftree-vectorize -ftree-vectorizer-verbose=7 -c vectHist.cpp
-ffast-math



what I do not understand is that if (following man page) I compare O2 and O3
with
gcc -c -Q -O3 --help=optimizers  /tmp/O3-opts
gcc -c -Q -O2 --help=optimizers  /tmp/O2-opts
diff /tmp/O2-opts /tmp/O3-opts | grep enabled
   -fgcse-after-reload [enabled]
   -finline-functions  [enabled]
   -fipa-cp-clone  [enabled]
   -fpredictive-commoning  [enabled]
   -ftree-loop-distribute-patterns [enabled]
   -ftree-vectorize[enabled]
   -funswitch-loops[enabled]

I still get
c++ -std=gnu++0x -DNDEBUG -Wall -O2 -ftree-vectorize -msse4
-fvisibility-inlines-hidden -ftree-vectorizer-verbose=2 --param
vect-max-version-for-alias-checks=30 -funsafe-loop-optimizations
-ftree-loop-distribution -ftree-loop-if-convert-stores -fipa-pta
-Wunsafe-loop-optimizations -fgcse-sm -fgcse-las -c vectHist.cpp -ffast-math
-funswitch-loops -ftree-loop-distribute-patterns -fpredictive-commoning
-finline-functions -fipa-cp-clone -fgcse-after-reload

vectHist.cpp:17: note: not vectorized: data ref analysis failed x_5 =
co[D.4986_4];

vectHist.cpp:16: note: vectorized 0 loops in function.

vectHist.cpp:35: note: not vectorized: data ref analysis failed D.4977_30 =
hist[D.4976_29];

vectHist.cpp:33: note: LOOP VECTORIZED.
vectHist.cpp:31: note: not vectorized: data ref analysis failed D.4957_13 =
co[D.4956_12];

vectHist.cpp:25: note: vectorized 1 loops in function.

while changing just O2 in 03 (that at this point should be not really effective
as I added all options by hand) does not vectorize…
c++ -std=gnu++0x -DNDEBUG -Wall -O3 -mavx -ftree-vectorize -msse4
-fvisibility-inlines-hidden -ftree-vectorizer-verbose=2 --param
vect-max-version-for-alias-checks=30 -funsafe-loop-optimizations
-ftree-loop-distribution -ftree-loop-if-convert-stores -fipa-pta
-Wunsafe-loop-optimizations -fgcse-sm -fgcse-las -c vectHist.cpp -ffast-math
-funswitch-loops -ftree-loop-distribute-patterns -fpredictive-commoning
-finline-functions -fipa-cp-clone -fgcse-after-reload 
vectHist.cpp:17: note: not vectorized: data ref analysis failed x_5 =
co[D.5125_4];

vectHist.cpp:17: note: not vectorized: data ref analysis failed x_5 =
co[D.5125_4];

vectHist.cpp:16: note: vectorized 0 loops in function.

vectHist.cpp:30: note: not vectorized: data ref analysis failed D.5096_55 =
co[D.5095_54];

vectHist.cpp:30: note: not vectorized: data ref analysis failed D.5096_55 =
co[D.5095_54];

vectHist.cpp:25: note: vectorized 0 loops in function.

note how it does not report anything about loops at lines 31,33 and 35

---
// a classroom example
#includecmath

const int N=1024;

float __attribute__ ((aligned(16))) a[N];
float __attribute__ ((aligned(16))) b[N];
float __attribute__ ((aligned(16))) c[N];
float __attribute__ ((aligned(16))) d[N];
int __attribute__ ((aligned(16)))   k[N];



float __attribute__ ((aligned(16))) co[12];
float __attribute__ ((aligned(16))) hist[100];


// do not expect GCC to vectorize (yet)
void foo() {
  for (int i=0; i!=N; ++i) {
float x = co[k[i]];
float y = a[i]/std::sqrt(x*b[i]);
++hist[int(y)];
  } 
}


// let's give it an hand: split the loop so that the heavy duty one vectorize
void bar() {
  const int S=8;
  int loops = N/S;
  float x[S];
  float y[S];
  for (int j=0; j!=loops; ++j) {
for (int i=0; i!=S; ++i)
  x[i] = co[k[j+i]];
for (int i=0; i!=S; ++i) // this should vectorize
  y[i] = a[j+i]/std::sqrt(x[i]*b[j+i]);
for (int i=0; i!=S; ++i)
  ++hist[int(y[i])];
  } 
}


[Bug middle-end/49671] [4.6/4.7 Regression] volatile goes missing after inlining

2011-07-26 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49671

--- Comment #6 from Andrew Pinski pinskia at gcc dot gnu.org 2011-07-26 
07:52:27 UTC ---
Author: pinskia
Date: Tue Jul 26 07:52:24 2011
New Revision: 176785

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176785
Log:
2011-07-25  Andrew Pinski  apin...@cavium.com

PR tree-opt/49671
* tree-inline.c (remap_gimple_op_r): Copy TREE_THIS_VOLATILE and
TREE_THIS_NOTRAP into the inner most MEM_REF.
Always copy TREE_THIS_VOLATILE.
* tree-sra.c (ptr_parm_has_direct_uses): Check that the lhs, rhs and
arguments are not volatile references.

2011-07-25  Andrew Pinski  apin...@cavium.com

PR tree-opt/49671
* gcc.dg/tree-ssa/pr49671-1.c: New testcase.
* gcc.dg/tree-ssa/pr49671-2.c: New testcase.


Added:
branches/gcc-4_6-branch/gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c
  - copied unchanged from r176782,
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr49671-1.c
branches/gcc-4_6-branch/gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c
  - copied unchanged from r176782,
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr49671-2.c
Modified:
branches/gcc-4_6-branch/   (props changed)
branches/gcc-4_6-branch/gcc/ChangeLog
branches/gcc-4_6-branch/gcc/config/rs6000/rs6000.c   (props changed)
branches/gcc-4_6-branch/gcc/config/rs6000/rs6000.h   (props changed)
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog
branches/gcc-4_6-branch/gcc/tree-inline.c
branches/gcc-4_6-branch/gcc/tree-sra.c

Propchange: branches/gcc-4_6-branch/
('svn:mergeinfo' modified)

Propchange: branches/gcc-4_6-branch/gcc/config/rs6000/rs6000.c
('svn:mergeinfo' modified)

Propchange: branches/gcc-4_6-branch/gcc/config/rs6000/rs6000.h
('svn:mergeinfo' modified)


[Bug middle-end/49671] [4.6/4.7 Regression] volatile goes missing after inlining

2011-07-26 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49671

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #7 from Andrew Pinski pinskia at gcc dot gnu.org 2011-07-26 
07:53:25 UTC ---
Fixed.


[Bug tree-optimization/49849] loop optimization prevents vectorization

2011-07-26 Thread vincenzo.innocente at cern dot ch
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49849

--- Comment #1 from vincenzo Innocente vincenzo.innocente at cern dot ch 
2011-07-26 08:30:45 UTC ---
it may be a duplicate of my own PR49730
as

void bar2(int jj) {
  const int S=8;
  float x[S];
  float y[S];
  int j = jj*S;
  for (int i=0; i!=S; ++i)
x[i] = co[k[j+i]];
  for (int i=0; i!=S; ++i) // this should vectorize
y[i] = a[j+i]/std::sqrt(x[i]*b[j+i]);
  for (int i=0; i!=S; ++i)
++hist[int(y[i])];
} 

vectorize at 03

(of course in the example I submitted previously the external loop should read

  for (int jj=0; jj!=loops; ++jj) {
int j = jj*S;

)


[Bug middle-end/49840] [4.7 Regression] New test failures

2011-07-26 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49840

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011.07.26 08:50:04
 AssignedTo|unassigned at gcc dot   |rguenth at gcc dot gnu.org
   |gnu.org |
   Target Milestone|--- |4.7.0
 Ever Confirmed|0   |1

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2011-07-26 
08:50:04 UTC ---
It looks like __fixunsxfdi is miscompiled.


[Bug tree-optimization/49849] loop optimization prevents vectorization

2011-07-26 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49849

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011.07.26 09:21:16
 Ever Confirmed|0   |1

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-07-26 
09:21:16 UTC ---
The loop likely completely unrolled, you can disable that with
--param max-completely-peel-times=1.

I think scalar-code vectorization does not handle this right now because
the temporary arrays that would help it have store-motion applied (and
should be later optimized away, but are not).


[Bug lto/49844] Building CodeBlocks on Windows using mingw gcc 4.6.1 -flto -fuse-linker-plugin results in many linker stage errors

2011-07-26 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49844

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2011-07-26 
09:25:00 UTC ---
It sounds like a linker bug.  Please try without fancy linker options like
--as-needed.


[Bug c++/49850] New: Implicit creation of a temporary object when a constant reference is passed as parameter and the actual and formal types are not identical

2011-07-26 Thread gccb...@andreas-borchert.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49850

   Summary: Implicit creation of a temporary object when a
constant reference is passed as parameter and the
actual and formal types are not identical
   Product: gcc
   Version: 4.4.5
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: gccb...@andreas-borchert.de


The following has been tested with g++ (Debian 4.4.5-8) 4.4.5 for the amd64
architecture as shipped with stable Debian 6.0. I do not have it tested for
newer releases as I do not have them conveniently available. Following code
demonstrates the problem:

 code start 
#include iostream
#include sys/types.h

using namespace std;

size_t si;

void foo(const unsigned int ui) {
   cout  address of ui =   (long long int) ui  endl;
}

int main() {
   cout  address of si =   (long long int) si  endl;
   foo(si);
}
 code end 

The code generated for the invocation of foo() in main() shows
the problem:

movqsi(%rip), %rax
movl%eax, -20(%rbp)
leaq-20(%rbp), %rax
movq%rax, %rdi
call_Z3fooRKj

Instead of passing the address of the global si variable, a temporary
object is created (at 20(%rbp)) whose address is passed. If you test
this program, the output shows the effect:

   address of si = 6295456
   address of ui = 140734739682956

The apparent problem is that unsigned int and size_t do not match,
at least not on this platform (size and signedness are different). But
then I would expect an error and not the implicit creation of a
temporary object of the appropriate type.


[Bug c++/49776] [C++0x]ICE in build_data_member_initialization, at cp/semantics.c:5499

2011-07-26 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49776

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 AssignedTo|unassigned at gcc dot   |paolo.carlini at oracle dot
   |gnu.org |com
   Target Milestone|--- |4.7.0

--- Comment #2 from Paolo Carlini paolo.carlini at oracle dot com 2011-07-26 
09:29:44 UTC ---
The fix seems easy.


[Bug lto/49844] Building CodeBlocks on Windows using mingw gcc 4.6.1 -flto -fuse-linker-plugin results in many linker stage errors

2011-07-26 Thread xunxun1982 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49844

--- Comment #2 from PcX xunxun1982 at gmail dot com 2011-07-26 09:32:14 UTC 
---
(In reply to comment #1)
 It sounds like a linker bug.  Please try without fancy linker options like
 --as-needed.

I remove -Wl,-O1 -Wl,--sort-common -Wl,--as-needed, and it also has the
problem.

ps: other linker option like -Wl,--enable-auto-image-base
-Wl,--add-stdcall-alias -Wl,--enable-auto-import is Code::Blocks's default
option.


[Bug tree-optimization/49849] loop optimization prevents vectorization

2011-07-26 Thread vincenzo.innocente at cern dot ch
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49849

--- Comment #3 from vincenzo Innocente vincenzo.innocente at cern dot ch 
2011-07-26 09:38:13 UTC ---
Thanks Richard,
--param max-completely-peel-times=1
does the trick and, in my real life example, does not have any adverse effect
elsewhere
while it speeds up the loop as expected.
More in general,
Do you think that GCC will ever be able to transform things like foo into bar
by itself?


[Bug tree-optimization/49849] loop optimization prevents vectorization

2011-07-26 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49849

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||spop at gcc dot gnu.org

--- Comment #4 from Richard Guenther rguenth at gcc dot gnu.org 2011-07-26 
09:45:55 UTC ---
(In reply to comment #3)
 Thanks Richard,
 --param max-completely-peel-times=1
 does the trick and, in my real life example, does not have any adverse effect
 elsewhere
 while it speeds up the loop as expected.
 More in general,
 Do you think that GCC will ever be able to transform things like foo into bar
 by itself?

I hope so ;)  The graphite framework is supposed to provide us with
this kind of features.


[Bug c++/49850] Implicit creation of a temporary object when a constant reference is passed as parameter and the actual and formal types are not identical

2011-07-26 Thread daniel.kruegler at googlemail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49850

Daniel Krügler daniel.kruegler at googlemail dot com changed:

   What|Removed |Added

 CC||daniel.kruegler at
   ||googlemail dot com

--- Comment #1 from Daniel Krügler daniel.kruegler at googlemail dot com 
2011-07-26 10:20:47 UTC ---
(In reply to comment #0)

 #include sys/types.h

To make the definition of size_t available, you should better include a
standard header, like stddef.h

 Instead of passing the address of the global si variable, a temporary
 object is created (at 20(%rbp)) whose address is passed. If you test
 this program, the output shows the effect:
 
address of si = 6295456
address of ui = 140734739682956
 
 The apparent problem is that unsigned int and size_t do not match,
 at least not on this platform (size and signedness are different). But
 then I would expect an error and not the implicit creation of a
 temporary object of the appropriate type.

You might expect this, but this would be in contradiction to what the C++
standard requires ([dcl.init.ref] p5 last bullet). GCC is required to accept
this conversion. If you want to prevent this, use a pointer type or a non-const
reference instead of a reference to const as function parameter.

This does not look like a compiler defect to me.


[Bug tree-optimization/49822] [4.7 regression] Segfault in remove_prop_source_from_use

2011-07-26 Thread rearnsha at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49822

Richard Earnshaw rearnsha at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #3 from Richard Earnshaw rearnsha at gcc dot gnu.org 2011-07-26 
11:04:23 UTC ---
Confirmed as fixing original problem.


[Bug tree-optimization/49851] New: IVOPTs makes a mess out of polyhedron air derivx and derivy

2011-07-26 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49851

   Summary: IVOPTs makes a mess out of polyhedron air derivx and
derivy
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: rgue...@gcc.gnu.org


SUBROUTINE DERIVX(D,U,Ux,Al,Np,Nd,M)
  IMPLICIT REAL*8(A-H,O-Z)
  PARAMETER (NX=150,NY=150)
  DIMENSION D(NX,33) , U(NX,NY) , Ux(NX,NY) , Al(30) , Np(30)
  DO jm = 1 , M
 jmax = 0
 jmin = 1
 DO i = 1 , Nd
jmax = jmax + Np(i) + 1
DO j = jmin , jmax
   uxt = 0.
   DO k = 0 , Np(i)
  uxt = uxt + D(j,k+1)*U(jmin+k,jm)
   ENDDO
   Ux(j,jm) = uxt*Al(i)
ENDDO
jmin = jmin + Np(i) + 1
 ENDDO
  ENDDO
  CONTINUE
  END

it ends up inserting loads of code into the pre-header blocks of the loops,
seemingly for rewriting of the loop exit tests.

As a result of this air runs about 25% slower when compiled with GCC compared
to ICC.


[Bug target/49833] [x32] PIC doesn't work

2011-07-26 Thread uros at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49833

--- Comment #20 from uros at gcc dot gnu.org 2011-07-26 12:00:36 UTC ---
Author: uros
Date: Tue Jul 26 12:00:33 2011
New Revision: 176788

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176788
Log:
PR target/47381
PR target/49832
PR target/49833
* config/i386/i386.md (i): Change SImode attribute to e.
(g): Change SImode attribute to rme.
(di): Change SImode attribute to nF.
(general_operand): Change SImode attribute to x86_64_general_operand.
(general_szext_operand): Change SImode attribute to
x86_64_szext_general_operand.
(immediate_operand): Change SImode attribute to
x86_64_immediate_operand.
(nonmemory_operand): Change SImode attribute to
x86_64_nonmemory_operand.
(*movdi_internal_rex64): Remove mode from pic_32bit_operand check.
(*movsi_internal): Ditto.  Use e constraint in alternative 2.
(*lea_1): Use SWI48 mode iterator.
(*lea_1_zext): New insn pattern.
(testsi_ccno_1): Use x86_64_nonmemory_operand predicate for operand 2.
(*btmode): Ditto.
(*addmode1): Use x86_64_general_operand predicate for operand 2.
Update operand constraints.
(addsi_1_zext): Ditto.
(*addmode2): Ditto.
(*addsi_3_zext): Ditto.
(*subsi_1_zext): Ditto.
(*subsi_2_zext): Ditto.
(*subsi_3_zext): Ditto.
(*addsi3_carry_zext): Ditto.
(*plusminus_insnsi3_zext_cc_overflow): Ditto.
(*mulsi3_1_zext): Ditto.
(*andsi_1): Ditto.
(*andsi_1_zext): Ditto.
(*andsi_2_zext): Ditto.
(*any_or:codesi_1_zext): Ditto.
(*any_or:codesi_2_zext): Ditto.
(*testmode_1): Use general_operand predicate for operand 1.
(*andmode_2): Ditto.
(movmodecc): Use  general_operand predicate for operands 1 and 2.
(add-lea splitter): Check operand modes in insn constraint.  Extend
operands less than SImode wide to SImode.
(add-lea zext splitter): Do not extend input operands to DImode.
(*lea_general_1): Handle only QImode and HImode operands.
(*lea_general_2): Ditto.
(*lea_general_3): Ditto.
(*lea_general_1_zext): Remove.
(*lea_general_2_zext): Ditto.
(*lea_general_3_zext): Ditto.
(*lea_general_4): Check operand modes in insn constraint.  Extend
operands less than SImode wide to SImode.
(ashift-lea splitter): Ditto.
* config/i386/i386.c (ix86_print_operand_address): Print address
registers with 'q' modifier on 64bit targets.
* config/i386/predicates.md (pic_32bit_opreand): Define as special
predicate.  Reject non-SI and non-DI modes.


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


[Bug target/47381] [x32] internal compiler error: in gen_lowpart_general, at rtlhooks.c:59

2011-07-26 Thread uros at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47381

--- Comment #4 from uros at gcc dot gnu.org 2011-07-26 12:00:36 UTC ---
Author: uros
Date: Tue Jul 26 12:00:33 2011
New Revision: 176788

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176788
Log:
PR target/47381
PR target/49832
PR target/49833
* config/i386/i386.md (i): Change SImode attribute to e.
(g): Change SImode attribute to rme.
(di): Change SImode attribute to nF.
(general_operand): Change SImode attribute to x86_64_general_operand.
(general_szext_operand): Change SImode attribute to
x86_64_szext_general_operand.
(immediate_operand): Change SImode attribute to
x86_64_immediate_operand.
(nonmemory_operand): Change SImode attribute to
x86_64_nonmemory_operand.
(*movdi_internal_rex64): Remove mode from pic_32bit_operand check.
(*movsi_internal): Ditto.  Use e constraint in alternative 2.
(*lea_1): Use SWI48 mode iterator.
(*lea_1_zext): New insn pattern.
(testsi_ccno_1): Use x86_64_nonmemory_operand predicate for operand 2.
(*btmode): Ditto.
(*addmode1): Use x86_64_general_operand predicate for operand 2.
Update operand constraints.
(addsi_1_zext): Ditto.
(*addmode2): Ditto.
(*addsi_3_zext): Ditto.
(*subsi_1_zext): Ditto.
(*subsi_2_zext): Ditto.
(*subsi_3_zext): Ditto.
(*addsi3_carry_zext): Ditto.
(*plusminus_insnsi3_zext_cc_overflow): Ditto.
(*mulsi3_1_zext): Ditto.
(*andsi_1): Ditto.
(*andsi_1_zext): Ditto.
(*andsi_2_zext): Ditto.
(*any_or:codesi_1_zext): Ditto.
(*any_or:codesi_2_zext): Ditto.
(*testmode_1): Use general_operand predicate for operand 1.
(*andmode_2): Ditto.
(movmodecc): Use  general_operand predicate for operands 1 and 2.
(add-lea splitter): Check operand modes in insn constraint.  Extend
operands less than SImode wide to SImode.
(add-lea zext splitter): Do not extend input operands to DImode.
(*lea_general_1): Handle only QImode and HImode operands.
(*lea_general_2): Ditto.
(*lea_general_3): Ditto.
(*lea_general_1_zext): Remove.
(*lea_general_2_zext): Ditto.
(*lea_general_3_zext): Ditto.
(*lea_general_4): Check operand modes in insn constraint.  Extend
operands less than SImode wide to SImode.
(ashift-lea splitter): Ditto.
* config/i386/i386.c (ix86_print_operand_address): Print address
registers with 'q' modifier on 64bit targets.
* config/i386/predicates.md (pic_32bit_opreand): Define as special
predicate.  Reject non-SI and non-DI modes.


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


[Bug target/49832] [x32] too many memory references for `lea'

2011-07-26 Thread uros at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49832

--- Comment #2 from uros at gcc dot gnu.org 2011-07-26 12:00:37 UTC ---
Author: uros
Date: Tue Jul 26 12:00:33 2011
New Revision: 176788

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176788
Log:
PR target/47381
PR target/49832
PR target/49833
* config/i386/i386.md (i): Change SImode attribute to e.
(g): Change SImode attribute to rme.
(di): Change SImode attribute to nF.
(general_operand): Change SImode attribute to x86_64_general_operand.
(general_szext_operand): Change SImode attribute to
x86_64_szext_general_operand.
(immediate_operand): Change SImode attribute to
x86_64_immediate_operand.
(nonmemory_operand): Change SImode attribute to
x86_64_nonmemory_operand.
(*movdi_internal_rex64): Remove mode from pic_32bit_operand check.
(*movsi_internal): Ditto.  Use e constraint in alternative 2.
(*lea_1): Use SWI48 mode iterator.
(*lea_1_zext): New insn pattern.
(testsi_ccno_1): Use x86_64_nonmemory_operand predicate for operand 2.
(*btmode): Ditto.
(*addmode1): Use x86_64_general_operand predicate for operand 2.
Update operand constraints.
(addsi_1_zext): Ditto.
(*addmode2): Ditto.
(*addsi_3_zext): Ditto.
(*subsi_1_zext): Ditto.
(*subsi_2_zext): Ditto.
(*subsi_3_zext): Ditto.
(*addsi3_carry_zext): Ditto.
(*plusminus_insnsi3_zext_cc_overflow): Ditto.
(*mulsi3_1_zext): Ditto.
(*andsi_1): Ditto.
(*andsi_1_zext): Ditto.
(*andsi_2_zext): Ditto.
(*any_or:codesi_1_zext): Ditto.
(*any_or:codesi_2_zext): Ditto.
(*testmode_1): Use general_operand predicate for operand 1.
(*andmode_2): Ditto.
(movmodecc): Use  general_operand predicate for operands 1 and 2.
(add-lea splitter): Check operand modes in insn constraint.  Extend
operands less than SImode wide to SImode.
(add-lea zext splitter): Do not extend input operands to DImode.
(*lea_general_1): Handle only QImode and HImode operands.
(*lea_general_2): Ditto.
(*lea_general_3): Ditto.
(*lea_general_1_zext): Remove.
(*lea_general_2_zext): Ditto.
(*lea_general_3_zext): Ditto.
(*lea_general_4): Check operand modes in insn constraint.  Extend
operands less than SImode wide to SImode.
(ashift-lea splitter): Ditto.
* config/i386/i386.c (ix86_print_operand_address): Print address
registers with 'q' modifier on 64bit targets.
* config/i386/predicates.md (pic_32bit_opreand): Define as special
predicate.  Reject non-SI and non-DI modes.


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


[Bug target/47381] [x32] internal compiler error: in gen_lowpart_general, at rtlhooks.c:59

2011-07-26 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47381

Uros Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 Target||x32
 Status|UNCONFIRMED |RESOLVED
URL||http://gcc.gnu.org/ml/gcc-p
   ||atches/2011-07/msg02249.htm
   ||l
 Resolution||FIXED
   Target Milestone|--- |4.7.0

--- Comment #5 from Uros Bizjak ubizjak at gmail dot com 2011-07-26 12:07:11 
UTC ---
Committed to trunk.


[Bug target/49832] [x32] too many memory references for `lea'

2011-07-26 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49832

Uros Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.7.0

--- Comment #3 from Uros Bizjak ubizjak at gmail dot com 2011-07-26 12:10:01 
UTC ---
Fixed by changing *movsi_internal operand 1 alt 1 constraint from i to e.


[Bug target/49833] [x32] PIC doesn't work

2011-07-26 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49833

Uros Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
URL||http://gcc.gnu.org/ml/gcc-p
   ||atches/2011-07/msg02249.htm
   ||l
 Resolution||FIXED
   Target Milestone|--- |4.7.0

--- Comment #21 from Uros Bizjak ubizjak at gmail dot com 2011-07-26 12:13:26 
UTC ---
Fixed, please open new PR for external function symbol problem.


[Bug bootstrap/49786] [4.7 Regression] bootstrap failed with bootstrap-profiled

2011-07-26 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49786

--- Comment #18 from Martin Jambor jamborm at gcc dot gnu.org 2011-07-26 
12:26:32 UTC ---
Proposed fix posted to the mailing list:
http://gcc.gnu.org/ml/gcc-patches/2011-07/msg02247.html


[Bug bootstrap/49786] [4.7 Regression] bootstrap failed with bootstrap-profiled

2011-07-26 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49786

--- Comment #19 from Martin Jambor jamborm at gcc dot gnu.org 2011-07-26 
12:27:01 UTC ---
Author: jamborm
Date: Tue Jul 26 12:26:58 2011
New Revision: 176789

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176789
Log:
2011-07-26  Martin Jambor  mjam...@suse.cz

PR bootstrap/49786
* ipa-cp.c (update_profiling_info): Avoid overflow when updating
counts.
(update_specialized_profile): Likewise.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/ipa-cp.c


[Bug c++/49850] Implicit creation of a temporary object when a constant reference is passed as parameter and the actual and formal types are not identical

2011-07-26 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49850

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID

--- Comment #2 from Paolo Carlini paolo.carlini at oracle dot com 2011-07-26 
12:27:33 UTC ---
Let's close this.


[Bug bootstrap/49786] [4.7 Regression] bootstrap failed with bootstrap-profiled

2011-07-26 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49786

Martin Jambor jamborm at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #20 from Martin Jambor jamborm at gcc dot gnu.org 2011-07-26 
12:29:21 UTC ---
Fixed.


[Bug middle-end/49840] [4.7 Regression] New test failures

2011-07-26 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49840

--- Comment #5 from Richard Guenther rguenth at gcc dot gnu.org 2011-07-26 
12:37:03 UTC ---
Author: rguenth
Date: Tue Jul 26 12:37:00 2011
New Revision: 176790

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176790
Log:
2011-07-26  Richard Guenther  rguent...@suse.de

PR tree-optimization/49840
* tree-vrp.c (range_fits_type_p): Properly handle full
double-int precision.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-vrp.c


[Bug middle-end/49840] [4.7 Regression] New test failures

2011-07-26 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49840

Richard Guenther rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #6 from Richard Guenther rguenth at gcc dot gnu.org 2011-07-26 
12:37:20 UTC ---
Fixed.


[Bug tree-optimization/49851] IVOPTs makes a mess out of polyhedron air derivx and derivy

2011-07-26 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49851

--- Comment #1 from Richard Guenther rguenth at gcc dot gnu.org 2011-07-26 
12:53:47 UTC ---
Testcase with caller, use -fwhole-program to force inlining.

  IMPLICIT REAL*8(a-H,O-Z)
  PARAMETER (NX=150,NY=150)
  DIMENSION ux(NX,NY) , uy(NX,NY) , vx(NX,NY) , vy(NX,NY) , 
   tx(NX,NY)
  DIMENSION DX(NX,33) , DY(NY,33)
  DIMENSION U(NX,NY) , V(NX,NY) , P(NX,NY) , RHO(NX,NY) , E(NX,NY)
  DIMENSION NPX(30) , x(NX) , NPY(30) , y(NY) , ALX(30) , bex(30)
  COMMON /XD1   / FP1 , FM1 , FP2 , FM2 , FP3 , FM3 , FP4 , FM4 ,   
 FP1x , FM1x , FP2x , FM2x , FP3x , FM3x , FP4x ,  
 FM4x , FV2 , FV3 , FV4 , DXP2 , DXM2 , DXP3 , 
 DXM3 , DXP4 , DXM4 , DX , NPX , ALX , NDX , MXPy
  COMMON /BNDRY / U , V , P , RHO , T , E , AS1 , AS2 , AS3 , AS4 , 
 NX1 , NY1 , NX2 , NY2 , SIG , GMA , S0 , T0 , P0 ,
 PE , HOO , RR , MINlet


  CALL DERIVX(DX,U,ux,ALX,NPX,NDX,MXPy)

  END

  SUBROUTINE DERIVX(D,U,Ux,Al,Np,Nd,M)
  IMPLICIT REAL*8(A-H,O-Z)
  PARAMETER (NX=150,NY=150)
  DIMENSION D(NX,33) , U(NX,NY) , Ux(NX,NY) , Al(30) , Np(30)
  DO jm = 1 , M
 jmax = 0
 jmin = 1
 DO i = 1 , Nd
jmax = jmax + Np(i) + 1
DO j = jmin , jmax
   uxt = 0.
   DO k = 0 , Np(i)
  uxt = uxt + D(j,k+1)*U(jmin+k,jm)
   ENDDO
   Ux(j,jm) = uxt*Al(i)
ENDDO
jmin = jmin + Np(i) + 1
 ENDDO
  ENDDO
  CONTINUE
  END


[Bug tree-optimization/46032] openmp inhibits loop vectorization

2011-07-26 Thread vincenzo.innocente at cern dot ch
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46032

--- Comment #5 from vincenzo Innocente vincenzo.innocente at cern dot ch 
2011-07-26 13:00:18 UTC ---
in case anybody wandering
it seems fixed in
Using built-in specs.
COLLECT_GCC=c++
COLLECT_LTO_WRAPPER=/afs/cern.ch/user/i/innocent/w2/libexec/gcc/x86_64-unknown-linux-gnu/4.7.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ./configure --prefix=/afs/cern.ch/user/i/innocent/w2
--enable-languages=c,c++,fortran -enable-gold=yes --enable-lto
--with-build-config=bootstrap-lto --with-gmp-lib=/usr/local/lib64
--with-mpfr-lib=/usr/local/lib64 -with-mpc-lib=/usr/local/lib64
--enable-cloog-backend=isl --with-cloog=/usr/local
--with-ppl-lib=/usr/local/lib64 CFLAGS='-O2 -ftree-vectorize -fPIC'
CXXFLAGS='-O2 -fPIC -ftree-vectorize -fvisibility-inlines-hidden'
Thread model: posix
gcc version 4.7.0 20110725 (experimental) (GCC) 


c++ -std=gnu++0x -DNDEBUG -Wall -Ofast -mavx openmpvector.cpp
-ftree-vectorizer-verbose=7 -fopenmp
openmpvector.cpp:11: note: versioning for alias required: can't determine
dependence between *pretmp.11_32[idx_3] and *pretmp.11_34[idx_3]
openmpvector.cpp:11: note: mark for run-time aliasing test between
*pretmp.11_32[idx_3] and *pretmp.11_34[idx_3]
openmpvector.cpp:11: note: versioning for alias required: can't determine
dependence between .omp_data_i_14(D)-coeff and *pretmp.11_34[idx_3]
openmpvector.cpp:11: note: mark for run-time aliasing test between
.omp_data_i_14(D)-coeff and *pretmp.11_34[idx_3]
openmpvector.cpp:11: note: Unknown alignment for access: *pretmp.11_32
openmpvector.cpp:11: note: Unknown alignment for access: *pretmp.11_34
openmpvector.cpp:11: note: Vectorizing an unaligned access.
openmpvector.cpp:11: note: Vectorizing an unaligned access.
openmpvector.cpp:11: note: Vectorizing an unaligned access.
openmpvector.cpp:11: note: vect_model_load_cost: unaligned supported by
hardware.
openmpvector.cpp:11: note: vect_model_load_cost: inside_cost = 2, outside_cost
= 0 .
openmpvector.cpp:11: note: vect_model_load_cost: unaligned supported by
hardware.
openmpvector.cpp:11: note: vect_model_load_cost: inside_cost = 2, outside_cost
= 0 .
openmpvector.cpp:11: note: vect_model_simple_cost: inside_cost = 1,
outside_cost = 0 .
openmpvector.cpp:11: note: vect_model_store_cost: unaligned supported by
hardware.
openmpvector.cpp:11: note: vect_model_store_cost: inside_cost = 2, outside_cost
= 0 .
openmpvector.cpp:11: note: cost model: Adding cost of checks for loop
versioning aliasing.

openmpvector.cpp:11: note: cost model: epilogue peel iters set to vf/2 because
loop iterations are unknown .
openmpvector.cpp:11: note: Cost model analysis: 
  Vector inside of loop cost: 7
  Vector outside of loop cost: 19
  Scalar iteration cost: 4
  Scalar outside cost: 1
  prologue iterations: 0
  epilogue iterations: 2
  Calculated minimum iters for profitability: 7

openmpvector.cpp:11: note:   Profitability threshold = 6

openmpvector.cpp:11: note: Profitability threshold is 6 loop iterations.
openmpvector.cpp:11: note: create runtime check for data references
*pretmp.11_32[idx_3] and *pretmp.11_34[idx_3]
openmpvector.cpp:11: note: create runtime check for data references
.omp_data_i_14(D)-coeff and *pretmp.11_34[idx_3]
openmpvector.cpp:11: note: created 2 versioning for alias checks.

openmpvector.cpp:11: note: LOOP VECTORIZED.
openmpvector.cpp:9: note: vectorized 1 loops in function.



graphite breaks it…. 
c++ -std=gnu++0x -DNDEBUG -Wall -Ofast -mavx openmpvector.cpp
-ftree-vectorizer-verbose=7 -fopenmp -fgraphite -fgraphite-identity
-floop-block -floop-flatten -floop-interchange -floop-strip-mine
-ftree-loop-linear -floop-parallelize-all

openmpvector.cpp:9: note: not vectorized: data ref analysis failed D.2372_47 =
*pretmp.11_32[D.2403_49];

openmpvector.cpp:9: note: vectorized 0 loops in function.


[Bug tree-optimization/46032] openmp inhibits loop vectorization

2011-07-26 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46032

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 CC||spop at gcc dot gnu.org

--- Comment #6 from Paolo Carlini paolo.carlini at oracle dot com 2011-07-26 
13:47:35 UTC ---
Good. But it Graphite breaks it, let's add Sebastian in CC..


[Bug c++/49852] New: [4.7 Regression] cp-demangle.c segfault

2011-07-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49852

   Summary: [4.7 Regression] cp-demangle.c segfault
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: hjl.to...@gmail.com
CC: ja...@redhat.com


[hjl@gnu-6 asm]$ c++filt _ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
Segmentation fault (core dumped)
[hjl@gnu-6 asm]$


[Bug tree-optimization/49851] IVOPTs makes a mess out of polyhedron air derivx and derivy

2011-07-26 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49851

--- Comment #2 from Richard Guenther rguenth at gcc dot gnu.org 2011-07-26 
13:59:26 UTC ---
AIR spends 86% of its time in DERIV[XY] (for ICC), 78% of its time there for
GCC.
The performance difference also reproduces when not inlining DERIV[XY] at all
(though it's slightly less of a difference - GCC doesn't care).


[Bug debug/49846] entryval: missing DW_TAG_GNU_call_site_parameter for stack-passed `double' parameter

2011-07-26 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49846

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011.07.26 14:00:49
 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org 2011-07-26 
14:00:49 UTC ---
Created attachment 24835
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24835
gcc47-pr49846.patch

Untested fix.


[Bug fortran/45586] [4.6/4.7 Regression] ICE non-trivial conversion at assignment

2011-07-26 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45586

--- Comment #59 from Tobias Burnus burnus at gcc dot gnu.org 2011-07-26 
14:27:43 UTC ---
(In reply to comment #53)
 reduced testcase for 4.7
   y=rs_gauge(i)%rs(j)%rs_grid%r

Here, %r-data is marked as restricted as r is allocatable. However, all
other references are a pointer.

The derived type is obtained via a nested calls to gfc_get_derived_type. For
r one calls gfc_get_array_type_bounds - seemingly with restricted = 1.

If one now declares rs_gauge, one calls gfc_nonrestricted_type which removes
the restrict qualifier from the type (i.e. rs_gauge) and from the
rs_gauge-rs but does not go higher up the chain.

Thus, one somehow needs to walk the components and remove the restrict there
...


With the following patch, one does not get any ICE anymore, but I am neither
sure whether it is sufficient, nor whether it removes restrict qualifiers where
it shouldn't, nor whether it is correct at all.


--- a/gcc/fortran/trans-types.c
+++ b/gcc/fortran/trans-types.c
@@ -2421,6 +2421,9 @@ gfc_get_derived_type (gfc_symbol * derived)
!c-attr.proc_pointer)
field_type = build_pointer_type (field_type);

+  if (c-attr.pointer)
+   field_type = gfc_nonrestricted_type (field_type);
+
   /* vtype fields can point to different types to the base type.  */
   if (c-ts.type == BT_DERIVED  c-ts.u.derived-attr.vtype)
  field_type = build_pointer_type_for_mode (TREE_TYPE (field_type),


[Bug tree-optimization/49851] IVOPTs makes a mess out of polyhedron air derivx and derivy

2011-07-26 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49851

--- Comment #3 from Richard Guenther rguenth at gcc dot gnu.org 2011-07-26 
14:32:35 UTC ---
(In reply to comment #2)
 AIR spends 86% of its time in DERIV[XY] (for ICC), 78% of its time there for
 GCC.
 The performance difference also reproduces when not inlining DERIV[XY] at all
 (though it's slightly less of a difference - GCC doesn't care).

Actually it does not.  Without inlining:

GCC:   air  2.42 4728556  3.99  10  0.1798
  SUBROUTINE DERIVX(D,U,Ux,Al,Np,Nd,M) /* derivx_ total: 8194999 42.3750 */
  SUBROUTINE DERIVY(D,U,Uy,Al,Np,Nd,M) /* derivy_ total: 8176250 42.2781 */

ICC:   air  2.90 4072563  3.45  10  0.1809
  SUBROUTINE DERIVX(D,U,Ux,Al,Np,Nd,M) /* derivx_ total: 8060834 47.2620 */
  SUBROUTINE DERIVY(D,U,Uy,Al,Np,Nd,M) /* derivy_ total: 7070627 41.4563 */

so not much difference in the total hits.  Which means ICC performs some
context-dependent optimization.


[Bug target/47446] [x32] .quad instead of .long is used for address

2011-07-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47446

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.7.0

--- Comment #6 from H.J. Lu hjl.tools at gmail dot com 2011-07-26 14:33:34 
UTC ---
Fixed by:

http://gcc.gnu.org/ml/gcc-cvs/2011-07/msg00806.html


[Bug target/49853] New: [x32] PIC doesn't work with external symbol

2011-07-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49853

   Summary: [x32] PIC doesn't work with external symbol
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: hjl.to...@gmail.com


[hjl@gnu-6 gcc]$ cat /tmp/bar.c
typedef unsigned int Elf32_Addr;
extern void _start (void);
int
dl_main ( Elf32_Addr *user_entry)
{
  if (*user_entry == (Elf32_Addr) _start)
return 0;
  else
return 1;
}
[hjl@gnu-6 gcc]$ ./xgcc -B./ -S -O2 -fPIC /tmp/bar.c   -mx32 -std=gnu99  -dp
/tmp/bar.c: In function ‘dl_main’:
/tmp/bar.c:10:1: error: unrecognizable insn:
(insn 6 5 7 3 (set (reg:SI 67)
(symbol_ref:SI (_start) [flags 0x41] function_decl 0x7faad972ff00
_start)) /tmp/bar.c:6 -1
 (nil))
/tmp/bar.c:10:1: internal compiler error: in extract_insn, at recog.c:2115
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
[hjl@gnu-6 gcc]$


[Bug c++/49852] [4.7 Regression] cp-demangle.c segfault

2011-07-26 Thread jan.kratochvil at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49852

--- Comment #1 from Jan Kratochvil jan.kratochvil at redhat dot com 
2011-07-26 14:40:32 UTC ---
78de04b4b6af769e72b723db729459736a67bc33 is the first bad commit
commit 78de04b4b6af769e72b723db729459736a67bc33
Author: DJ Delorie d...@delorie.com
Date:   Wed Jun 22 19:13:31 2011 +

merge from gcc

=

+2011-06-20  Jason Merrill  ja...@redhat.com
+
+   PR c++/37089
+   * cp-demangle.c (d_print_comp): Handle reference smashing.
+   * testsuite/demangle-expected: Test it.


[Bug c++/49852] [4.7 Regression] cp-demangle.c segfault

2011-07-26 Thread ian at airs dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49852

Ian Lance Taylor ian at airs dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||ian at airs dot com
 Resolution||FIXED

--- Comment #2 from Ian Lance Taylor ian at airs dot com 2011-07-26 15:24:28 
UTC ---
Already fixed.

I think there is a compiler problem in that this symbol was generated in the
first place.


[Bug target/49854] New: Clean up SPE/e500 option handling

2011-07-26 Thread jsm28 at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49854

   Summary: Clean up SPE/e500 option handling
   Product: gcc
   Version: 4.6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: js...@gcc.gnu.org
Target: powerpc*-*-*


As described at http://gcc.gnu.org/ml/gcc-patches/2010-08/msg01667.html, the
handling of SPE/e500 options should be cleaned up as follows:

* Enable rs6000_spe, rs6000_spe_abi, rs6000_float_gprs based on
information in the processor_target_table used to enable other features
based on the CPU, or failing that based on direct comparisons with
PROCESSOR_PPC8540 and PROCESSOR_PPC8548 as done for various other
processor peculiarities in rs6000_override_options.  Don't limit this to
vxworks.h; do it for all targets.

* If rs6000_spe is set while TARGET_SPE is 0, or similarly for the other
settings, give an error that the options given are not supported in this
compiler configuration (it's been built without e500 support).  (You
should do it in rs6000_option_override_internal after things have been
defaulted from the CPU.)

* Remove various special settings of defaults in eabispe.h and linuxspe.h
and e500-double.h, and the For the powerpc-eabispe configuration, we set
all these by default code in rs6000_override_options.  Instead,
config.gcc should enable --with-cpu=8540 / --with-cpu=8548 given one of
the *spe targets, selecting which of those options to enable based on
whether --enable-e500-double is passed - as well as ensuring e500.h is in
tm_file so the e500 support is built into the compiler, of course.  Then
the logic to default things from the CPU would do the rest.

* Remove the TARGET_E500 macro.  Everything using it should check either
features or specific PROCESSOR_* settings.


[Bug c++/49852] [4.7 Regression] cp-demangle.c segfault

2011-07-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49852

--- Comment #3 from H.J. Lu hjl.tools at gmail dot com 2011-07-26 15:36:56 
UTC ---
(In reply to comment #1)
 78de04b4b6af769e72b723db729459736a67bc33 is the first bad commit
 commit 78de04b4b6af769e72b723db729459736a67bc33
 Author: DJ Delorie d...@delorie.com
 Date:   Wed Jun 22 19:13:31 2011 +
 
 merge from gcc
 
 =
 
 +2011-06-20  Jason Merrill  ja...@redhat.com
 +
 +   PR c++/37089
 +   * cp-demangle.c (d_print_comp): Handle reference smashing.
 +   * testsuite/demangle-expected: Test it.

It isn't fixed as of Tue Jul 26 08:36:39 PDT 2011. I still
got

[hjl@gnu-6 binutils]$ ./cxxfilt _ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
Segmentation fault (core dumped)
[hjl@gnu-6 binutils]$


[Bug c++/49852] [4.7 Regression] cp-demangle.c segfault

2011-07-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49852

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
   Last reconfirmed||2011.07.26 15:38:53
 Resolution|FIXED   |
 Ever Confirmed|0   |1

--- Comment #4 from H.J. Lu hjl.tools at gmail dot com 2011-07-26 15:38:53 
UTC ---
(gdb) r _ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
Starting program:
/export/build/gnu/binutils/build-x86_64-linux/binutils/cxxfilt
_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_

Program received signal SIGSEGV, Segmentation fault.
0x004c61fd in d_print_comp (dpi=0x7fffd100, options=267, 
dc=0x7fffd508)
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:3899
3899if (sub-type == DEMANGLE_COMPONENT_REFERENCE
(gdb) bt
#0  0x004c61fd in d_print_comp (dpi=0x7fffd100, options=267, 
dc=0x7fffd508)
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:3899
#1  0x004c5586 in d_print_subexpr (dpi=0x7fffd100, options=267, 
dc=0x7fffd508)
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:3554
#2  0x004c74ed in d_print_comp (dpi=0x7fffd100, options=267, 
dc=0x7fffd520)
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:4393
#3  0x004c690a in d_print_comp (dpi=0x7fffd100, options=267, 
dc=0x7fffd538)
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:4106
#4  0x004c69a3 in d_print_comp (dpi=0x7fffd100, options=267, 
dc=0x7fffd4d8)
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:4118
#5  0x004c7f8a in d_print_function_type (dpi=0x7fffd100, 
options=267, dc=0x7fffd550, mods=0x7fffcf80)
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:4728
#6  0x004c6552 in d_print_comp (dpi=0x7fffd100, options=267, 
dc=0x7fffd550)
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:3991
#7  0x004c5a30 in d_print_comp (dpi=0x7fffd100, options=267, 
dc=0x7fffd568)
---Type return to continue, or q return to quit---
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:3683
#8  0x004c5258 in cplus_demangle_print_callback (options=267, 
dc=0x7fffd568, callback=0x4c4f3b d_growable_string_callback_adapter, 
opaque=0x7fffdd50)
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:3402
#9  0x004c86e0 in d_demangle_callback (
mangled=0x7fffe324 _ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_, 
options=267, callback=0x4c4f3b d_growable_string_callback_adapter, 
opaque=0x7fffdd50)
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:4961
#10 0x004c8735 in d_demangle (
mangled=0x7fffe324 _ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_, 
options=267, palc=0x7fffdda8)
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:4982
#11 0x004c879f in cplus_demangle_v3 (
mangled=0x7fffe324 _ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_, 
options=267)
at /export/gnu/import/git/binutils/libiberty/cp-demangle.c:5139
#12 0x004b85f1 in cplus_demangle (
mangled=0x7fffe324 _ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_, 
options=11) at /export/gnu/import/git/binutils/libiberty/cplus-dem.c:858
#13 0x004023b4 in demangle_it (
mangled_name=0x7fffe324
_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_)---Type return to continue,
or q return to quit---
 at /export/gnu/import/git/binutils/binutils/cxxfilt.c:63
#14 0x0040275d in main (argc=2, argv=0x7fffdfa8)
at /export/gnu/import/git/binutils/binutils/cxxfilt.c:227
(gdb) p sub
$1 = (const struct demangle_component *) 0x0
(gdb)


[Bug c++/49852] [4.7 Regression] cp-demangle.c segfault

2011-07-26 Thread jan.kratochvil at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49852

--- Comment #5 from Jan Kratochvil jan.kratochvil at redhat dot com 
2011-07-26 15:40:23 UTC ---
Patch committed: Fix demangler crash
http://gcc.gnu.org/ml/gcc-patches/2011-07/msg02263.html
From: Ian Lance Taylor iant at google dot com

DJ's script will merge it.


[Bug c++/49852] [4.7 Regression] cp-demangle.c segfault

2011-07-26 Thread j at bitron dot ch
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49852

--- Comment #6 from Jürg Billeter j at bitron dot ch 2011-07-26 15:43:11 UTC 
---
It works here now, both, just calling cxxfilt and the full ld command from
libreoffice. Thanks for the quick fix. For some reason, 'make' didn't rebuild
libbfd after updating cp-mangle.c. After 'make clean' it looks all fine,
though.


[Bug middle-end/48470] ICE in expand_expr_addr_expr_1 at expr.c:6835

2011-07-26 Thread gcc.ourteddybear at xoxy dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48470

--- Comment #3 from Stephen Cleary gcc.ourteddybear at xoxy dot net 
2011-07-26 15:56:40 UTC ---
(In reply to comment #2)
 The test case reduces to the following:
 void __attribute__((naked)) f(void)
 {
 int x = 0;
 g(x);
 }
 It ICEs 4.4.5, 4.5.2, and 4.6.0, but not 4.3.5, 4.2.4, or 4.1.2.
 I suspect it isn't valid to make recursive calls or take the address of local
 variables in naked functions.

It is important to note, however, that the original test case does not take the
address of a local variable in a naked function. The original test case is like
this:

static void g(void);
void __attribute__((naked)) f(void)
{
g();
}
void g(void)
{
int x = 0;
h(x);
}

So this may be due to overzealous inlining.


[Bug c++/49852] [4.7 Regression] cp-demangle.c segfault

2011-07-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49852

--- Comment #7 from H.J. Lu hjl.tools at gmail dot com 2011-07-26 16:27:39 
UTC ---
On Linux/ia32, revision 176793 gave:

FAIL at line 4023: unknown demangling style
_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
FAIL at line 4027: unknown demangling style yz.qrs
FAIL at line 4031: unknown demangling style oper.+
FAIL at line 4035: unknown demangling style yz.qrs
FAIL at line 4039: unknown demangling style yz.qrs.tuv
FAIL at line 4042: unknown demangling style yz.qrs.tuv
FAIL at line 4045: unknown demangling style yz.qrs.tuv
FAIL at line 4049: unknown demangling style yz.qrs.tuv
FAIL at line 4053: unknown demangling style x_E
FAIL at line 4056: unknown demangling style x.m1
FAIL at line 4059: unknown demangling style x.m3
FAIL at line 4062: unknown demangling style x.y.m2
FAIL at line 4066: unknown demangling style x.y.z.r
FAIL at line 4070: unknown demangling style x.y.j
FAIL at line 4074: unknown demangling style x.m3
FAIL at line 4078: unknown demangling style p'Elab_Body
FAIL at line 4082: unknown demangling style p'Elab_Spec
FAIL at line 4086: unknown demangling style p.taskobj
FAIL at line 4090: unknown demangling style p.taskobj.f1
FAIL at line 4093: unknown demangling style prot.lock.get
FAIL at line 4096: unknown demangling style prot.lock.get
FAIL at line 4099: unknown demangling style prot.lock.get.sub
FAIL at line 4102: unknown demangling style prot.lock.set
FAIL at line 4106: unknown demangling style prot.lock.set
FAIL at line 4109: unknown demangling style prot.lock.update
FAIL at line 4113: unknown demangling style prot.lock.update
FAIL at line 4116: unknown demangling style
gnat.sockets.sockets_library_controller.Finalize
FAIL at line 4120: unknown demangling style
system.partition_interface.racw_stub_type.Adjust
FAIL at line 4123: unknown demangling style
gnat.wide_wide_string_split.slice_set'Read
FAIL at line 4126: unknown demangling style
ada.real_time.timing_events.events.list'Write
FAIL at line 4129: unknown demangling style
system.finalization_root.root_controlled'Input
FAIL at line 4133: unknown demangling style
ada.finalization.limited_controlled'Output
FAIL at line 4136: unknown demangling style ada.synchronous_task_control'Size
FAIL at line 4139: unknown demangling style
ada.real_time.timing_events.events'Alignment
FAIL at line 4144: unknown demangling style system.finalization_root.:=
FAIL at line 4149: unknown demangling style DFA
FAIL at line 4152: unknown demangling style
Psi::VariantDetail::SelectVisitorResultVariantTest::TestVisit::test_method()::{lambda(char
const*)#2}, VariantTest::TestVisit::test_method()::{lambda(char)#3},
VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}::type
Psi::Variantchar, char
const*::visitVariantTest::TestVisit::test_method()::{lambda(char const*)#2},
VariantTest::TestVisit::test_method()::{lambda(char)#3},
VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}((VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1})...)

Revision 176790 is OK.


[Bug c++/49855] New: internal compiler error: in fold_convert_const_int_from_real

2011-07-26 Thread xinliangli at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49855

   Summary: internal compiler error: in
fold_convert_const_int_from_real
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: xinlian...@gmail.com


In the following code, FE should generate FIX_TRUNC_EXPR instead of NOP_EXPR
for the float to int conversion. 

extern void foo(int);

template class Key, class Value void Basic() {

  const int kT = 1.5e6;// --- causes ICE 
  int size = kT*2/3;
  do {
foo(size);
size = size * 0.5 - 1;
  } while (size = 0 );

}

Note that removing the template specification, the right code is generated and
there is no ICE.


David


[Bug target/49853] [x32] PIC doesn't work with external symbol

2011-07-26 Thread uros at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49853

--- Comment #1 from uros at gcc dot gnu.org 2011-07-26 18:03:59 UTC ---
Author: uros
Date: Tue Jul 26 18:03:54 2011
New Revision: 176798

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176798
Log:
PR target/47369
PR target/49853
* config/i386/i386.c (ix86_expand_move): Call convert_to_mode
if legitimize_tls_address returned operand in wrong mode. Allow
SImode and DImode symbolic operand for PIC.  Call convert_to_mode
if legitimize_pic_address returned operand in wrong mode.


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


[Bug target/47369] [x32] internal compiler error: in extract_insn, at recog.c:2109

2011-07-26 Thread uros at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47369

--- Comment #2 from uros at gcc dot gnu.org 2011-07-26 18:03:59 UTC ---
Author: uros
Date: Tue Jul 26 18:03:54 2011
New Revision: 176798

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176798
Log:
PR target/47369
PR target/49853
* config/i386/i386.c (ix86_expand_move): Call convert_to_mode
if legitimize_tls_address returned operand in wrong mode. Allow
SImode and DImode symbolic operand for PIC.  Call convert_to_mode
if legitimize_pic_address returned operand in wrong mode.


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


[Bug tree-optimization/48805] ICE in rename_uses, at sese.c:533 while compiling qutecom 2.2 with -fgraphite-identity

2011-07-26 Thread spop at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48805

--- Comment #4 from Sebastian Pop spop at gcc dot gnu.org 2011-07-26 18:47:51 
UTC ---
Author: spop
Date: Tue Jul 26 18:47:44 2011
New Revision: 176801

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176801
Log:
Fix PR48805: Do not instantiate ADDR_EXPRs

With this patch we avoid instantiating ADDR_EXPR: it makes no sense
to translate b[i] into b[{0, +, 1}_1].

Bootstrapped and tested on amd64-linux.

2011-07-26  Sebastian Pop  sebastian@amd.com

PR middle-end/48805
* tree-scalar-evolution.c (instantiate_scev_r): Return
chrec_dont_know for ADDR_EXPR.

* gcc.dg/graphite/id-pr48805.c: New.

Added:
trunk/gcc/testsuite/gcc.dg/graphite/id-pr48805.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-scalar-evolution.c


[Bug middle-end/47653] [4.6/4.7 Regression] gcc.c-torture/execute/930614-2.c FAILs with -fstack-check=generic -fgraphite-identity

2011-07-26 Thread spop at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47653

--- Comment #10 from Sebastian Pop spop at gcc dot gnu.org 2011-07-26 
18:48:19 UTC ---
Author: spop
Date: Tue Jul 26 18:48:08 2011
New Revision: 176802

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176802
Log:
Fix PR47653: do not handle loops using wrapping semantics in graphite

2011-07-26  Sebastian Pop  sebastian@amd.com

PR middle-end/47653
* graphite-scop-detection.c (graphite_can_represent_loop): Discard
loops using wrapping semantics.

* gcc.dg/graphite/run-id-pr47653.c: New.
* gcc.dg/graphite/interchange-3.c: Do not use unsigned types for
induction variables.
* gcc.dg/graphite/scop-16.c: Same.
* gcc.dg/graphite/scop-17.c: Same.
* gcc.dg/graphite/scop-21.c: Same.

Added:
trunk/gcc/testsuite/gcc.dg/graphite/run-id-pr47653.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/graphite-scop-detection.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/graphite/interchange-3.c
trunk/gcc/testsuite/gcc.dg/graphite/scop-16.c
trunk/gcc/testsuite/gcc.dg/graphite/scop-17.c
trunk/gcc/testsuite/gcc.dg/graphite/scop-21.c
trunk/libgomp/testsuite/libgomp.graphite/force-parallel-1.c


[Bug middle-end/47653] [4.6/4.7 Regression] gcc.c-torture/execute/930614-2.c FAILs with -fstack-check=generic -fgraphite-identity

2011-07-26 Thread spop at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47653

--- Comment #11 from Sebastian Pop spop at gcc dot gnu.org 2011-07-26 
18:48:32 UTC ---
Author: spop
Date: Tue Jul 26 18:48:20 2011
New Revision: 176803

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176803
Log:
Add testcase for PR47593

2011-07-26  Sebastian Pop  sebastian@amd.com

PR middle-end/47653
* gcc.dg/graphite/run-id-pr47593.c: New.

Added:
trunk/gcc/testsuite/gcc.dg/graphite/run-id-pr47593.c
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug middle-end/47046] gcc.target/i386/sse4_1-movntdqa.c ICEs with -fgraphite-identity

2011-07-26 Thread spop at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47046

--- Comment #3 from Sebastian Pop spop at gcc dot gnu.org 2011-07-26 18:48:57 
UTC ---
Author: spop
Date: Tue Jul 26 18:48:49 2011
New Revision: 176805

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176805
Log:
Fix PR47046: correct evolution_function_is_affine_p

Bug 47046 - gcc.target/i386/sse4_1-movntdqa.c ICEs with -fgraphite-identity

The problem here is that we are left with the following code to be
translated in the new representation following the transform that
Graphite has chosen:

D.2709_14 = j_33 * i_32;
D.2710_15 = D.2709_14 * i_32;
D.2711_16 = D.2710_15 * sign_34;
*D.2708_13 = D.2711_16;

In this particular case we have a nonlinear expression i * i for
which we have to generate code following the new graphite_iv variables.

The patch fixes the function that detects whether we are passing non
linear stuff to graphite: evolution_function_is_affine_p.  It seems
like for the moment evolution_function_is_affine_p is testing whether
an evolution function is affine only in the innermost loop, without
looking recursively at what happens in outer loops.

The chrec for this case is: {0, +, {0, +, {1, +, 2}_1}_1}_2 and we are
testing whether the evolution is affine only for the loop_2, which is
true as we have {0, +, blah}_2 with blah invariant in loop_2.

The patch adds the recursive call to evolution_function_is_affine_p.

Bootstrapped and tested on amd64-linux.

2011-07-26  Sebastian Pop  sebastian@amd.com

PR middle-end/47046
* tree-chrec.h (evolution_function_is_affine_p): Recursively call
evolution_function_is_affine_p on CHREC_RIGHT.

* gcc.dg/graphite/id-pr47046.c: New.

Added:
trunk/gcc/testsuite/gcc.dg/graphite/id-pr47046.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-chrec.h


[Bug middle-end/47046] gcc.target/i386/sse4_1-movntdqa.c ICEs with -fgraphite-identity

2011-07-26 Thread spop at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47046

Sebastian Pop spop at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #4 from Sebastian Pop spop at gcc dot gnu.org 2011-07-26 18:53:47 
UTC ---
Fixed.


[Bug tree-optimization/48805] ICE in rename_uses, at sese.c:533 while compiling qutecom 2.2 with -fgraphite-identity

2011-07-26 Thread spop at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48805

Sebastian Pop spop at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #5 from Sebastian Pop spop at gcc dot gnu.org 2011-07-26 18:54:46 
UTC ---
Fixed.


[Bug middle-end/47653] [4.6/4.7 Regression] gcc.c-torture/execute/930614-2.c FAILs with -fstack-check=generic -fgraphite-identity

2011-07-26 Thread spop at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47653

Sebastian Pop spop at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #12 from Sebastian Pop spop at gcc dot gnu.org 2011-07-26 
18:56:23 UTC ---
Fixed.


[Bug target/49853] [x32] PIC doesn't work with external symbol

2011-07-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49853

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 CC||ubizjak at gmail dot com

--- Comment #2 from H.J. Lu hjl.tools at gmail dot com 2011-07-26 19:29:01 
UTC ---
Another testcase:

[hjl@gnu-6 ilp32-10]$ cat x.i 
typedef struct FILE FILE;
int _fwalk(int (*)(FILE *));
int __sflush(FILE *);
int
fflush(FILE *fp)
{
  return (_fwalk(__sflush));
}
[hjl@gnu-6 ilp32-10]$ make
/export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -S -o x.s -mx32 -O2 -g -fPIC
-dp  x.i
x.i: In function ‘fflush’:
x.i:8:1: internal compiler error: in simplify_subreg, at simplify-rtx.c:5417
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
make: *** [x.s] Error 1
[hjl@gnu-6 ilp32-10]$


[Bug c/49820] Explicit check for integer negative after abs optimized away

2011-07-26 Thread agner at agner dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49820

--- Comment #13 from Agner Fog agner at agner dot org 2011-07-26 19:31:48 UTC 
---
My example does indeed give a warning when compiled with -Wstrict-overflow=2.
Unfortunately, -Wall implies only -Wstrict-overflow=1 so I got no warning in
the first place. I think the warning levels need to be adjusted so that we get
the warning with -Wall because the consequences are no less serious than
ignoring an overflow check with if(a+consta), which gives a warning with
-Wstrict-overflow=1


[Bug target/49764] [avr-g++] Rejects attribute progmem

2011-07-26 Thread artemeas at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49764

--- Comment #18 from _artem_ artemeas at gmail dot com 2011-07-26 19:34:13 
UTC ---
I've compiled gcc-avr from trunk and Arduino IDE stoped complaining about
PROGMEM. I downgraded binutils-avr from 2.21 to 2.20 patched and now delay()
function works as it should on arduino. Thank you guys. You can close that bug
report. I'm hoping that gcc 4.7 will be released soon (so I don't have to
compile it myself)


[Bug target/49853] [x32] PIC doesn't work with external symbol

2011-07-26 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49853

--- Comment #3 from Uros Bizjak ubizjak at gmail dot com 2011-07-26 19:34:47 
UTC ---
(In reply to comment #2)
 Another testcase:

This is PR47372.


[Bug target/49853] [x32] PIC doesn't work with external symbol

2011-07-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49853

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED

--- Comment #4 from H.J. Lu hjl.tools at gmail dot com 2011-07-26 19:37:09 
UTC ---
Fixed.


[Bug tree-optimization/46194] [4.5 Regression] gcc.dg/graphite/block-0.c FAILs with -ftree-parallelize-loops

2011-07-26 Thread spop at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46194

Sebastian Pop spop at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #18 from Sebastian Pop spop at gcc dot gnu.org 2011-07-26 
19:38:41 UTC ---
Unassigning: I won't backport this patch.
So I guess we could just close it as wont_fix.


[Bug target/49856] New: ICE when compiling mktime.c (gnulib, embedded in libvirt)

2011-07-26 Thread tg at mirbsd dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49856

   Summary: ICE when compiling mktime.c (gnulib, embedded in
libvirt)
   Product: gcc
   Version: 4.4.6
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: t...@mirbsd.org


Created attachment 24836
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24836
preprocessed source exhibiting the problem

tg@zigo:~ $ m68k-linux-gnu-gcc -O2 -c y.i   
y.i: In function ‘ranged_convert’:
y.i:632: internal compiler error: in m68k_sched_issue_rate, at
config/m68k/m68k.c:5877
Please submit a full bug report,
with preprocessed source if appropriate.

tg@zigo:~ $ gdb --args /home/tg/Xg/gcc-4.4-4.4.6/build/gcc/cc1 -fpreprocessed
y.i -m68020 -O2 -o y.s  

(gdb) b fancy_abort 
Breakpoint 1 at 0x4c1850: file ../../src/gcc/diagnostic.c, line 711.

(gdb) frame 1
#1  0x00754f2d in m68k_sched_issue_rate () at
../../src/gcc/config/m68k/m68k.c:5877
5877  gcc_unreachable ();
(gdb) list m68k_sched_issue_rate
5860}
5861
5862/* Return maximal number of insns that can be scheduled on a single
cycle.  */
5863static int
5864m68k_sched_issue_rate (void)
5865{
5866  switch (m68k_sched_cpu)
5867{
5868case CPU_CFV1:
5869case CPU_CFV2:
(gdb) 
5870case CPU_CFV3:
5871  return 1;
5872
5873case CPU_CFV4:
5874  return 2;
5875
5876default:
5877  gcc_unreachable ();
5878  return 0;
5879}
(gdb) print m68k_sched_cpu
$1 = CPU_UNKNOWN


[Bug c++/49776] [C++0x]ICE in build_data_member_initialization, at cp/semantics.c:5499

2011-07-26 Thread paolo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49776

--- Comment #3 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org 
2011-07-26 20:00:34 UTC ---
Author: paolo
Date: Tue Jul 26 20:00:31 2011
New Revision: 176809

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176809
Log:
/cp
2011-07-26  Paolo Carlini  paolo.carl...@oracle.com

PR c++/49776
* typeck.c (cp_build_modify_expr): Check digest_init return value
for error_mark_node.

/testsuite
2011-07-26  Paolo Carlini  paolo.carl...@oracle.com

PR c++/49776
* g++.dg/cpp0x/constexpr-49776.C: New.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-49776.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/typeck.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/49776] [C++0x]ICE in build_data_member_initialization, at cp/semantics.c:5499

2011-07-26 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49776

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #4 from Paolo Carlini paolo.carlini at oracle dot com 2011-07-26 
20:01:51 UTC ---
Fixed.


[Bug target/49856] ICE when compiling mktime.c (gnulib, embedded in libvirt)

2011-07-26 Thread tg at mirbsd dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49856

--- Comment #1 from Thorsten Glaser tg at mirbsd dot org 2011-07-26 20:04:49 
UTC ---
Also applies to 4.6.1-4:

root@ara5:~ # /usr/lib/m68k-linux-gnu/gcc/m68k-linux-gnu/4.6.1/cc1
-fpreprocessed y.i -m68020 -O2 -o y.s
 __strcspn_c1 __strcspn_c2 __strcspn_c3 __strspn_c1 __strspn_c2 __strspn_c3
__strpbrk_c2 __strpbrk_c3 __strtok_r_1c __strsep_1c __strsep_2c __strsep_3c
leapyear isdst_differ ydhms_diff time_t_avg time_t_add_ok time_t_int_add_ok
guess_time_tm ranged_convert mktime_internal rpl_mktime
Analyzing compilation unit
Performing interprocedural optimizations
 *free_lang_data visibility early_local_cleanups whole-program
ipa-profile cp inline pure-const static-varAssembling functions:
 ranged_convert
y.i: In function ‘ranged_convert’:
y.i:632:1: internal compiler error: in m68k_sched_issue_rate, at
config/m68k/m68k.c:6055
Please submit a full bug report,


[Bug target/43804] [4.5/4.6 regression] ICE in reload_cse_simplify_operands

2011-07-26 Thread tg at mirbsd dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43804

--- Comment #26 from Thorsten Glaser tg at mirbsd dot org 2011-07-26 20:16:22 
UTC ---
Both gcc-4.4 and gcc-4.6 with that patch applied compile memtest.i properly.


[Bug tree-optimization/44303] [graphite] Segmentation fault within CLooG

2011-07-26 Thread spop at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44303

--- Comment #5 from Sebastian Pop spop at gcc dot gnu.org 2011-07-26 20:19:03 
UTC ---
I will close this PR when the patches from Tobias will go on trunk:
http://gcc.gnu.org/ml/gcc-patches/2011-07/msg01892.html
This patch-set removes support for CLooG-PPL.


[Bug target/49856] ICE when compiling mktime.c (gnulib, embedded in libvirt)

2011-07-26 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49856

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 2011-07-26 
20:24:33 UTC ---
Dupe of PR47908.  As a workaround, remove '#pragma GCC optimize (wrapv)' from
the source code and compile with an explicit -fwrapv instead.


[Bug target/49857] New: Put constant switch-tables into flash

2011-07-26 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49857

   Summary: Put constant switch-tables into flash
   Product: gcc
   Version: 4.6.1
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: g...@gcc.gnu.org
CC: eric.wedding...@atmel.com
Target: avr


Created attachment 24837
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24837
C source with constant switch statement

For constant switches like

int sw_2 (char x)
{
switch(x) 
{ 
case '0': return -1;
case '1': return  2;
case '2': return  3;
case '3': return  5;
case '4': return  7;
case '5': return 11;
case '6': return 13;
case '7': return 17;
case '8': return 19;
case '9': return 23;
case 'a':return 29;
case 'A':return 29;
}

return -1;
}

avr-gcc 4.6.1 generates a lookup table (-Os -mmcu=atmega8 -S -fverbose-asm)

sw_2:
subi r24,lo8(-(-49)) ;  csui.0,
cpi r24,lo8(49) ;  csui.0,
brsh .L3 ; ,
mov r30,r24 ;  tmp50, csui.0
ldi r31,lo8(0) ; ,
subi r30,lo8(-(CSWTCH.1)) ;  tmp50,
sbci r31,hi8(-(CSWTCH.1)) ;  tmp50,
ld r24,Z ;  tmp51, CSWTCH.1
clr r25 ;  D.1929
sbrc r24,7 ;  D.1929
com r25 ;  D.1929
ret
.L3:
ldi r24,lo8(-1) ;  D.1929,
ldi r25,hi8(-1) ;  D.1929,
ret
.sizesw_2, .-sw_2
.data
.typeCSWTCH.1, @object
.sizeCSWTCH.1, 49
CSWTCH.1:
.byte2
.byte3
.byte5
.byte7
.byte11
.byte13
.byte17
.byte19
.byte23
.byte-1
.byte-1
.byte-1
...

CSWTCH.1 is put in .data (.rodata would not be better) so that the lookup table
ends up in RAM.  

The table is constant and could go into flash memory, i.e. .progmem.data.

===

avr-gcc -v -Os -fverbose-asm -mmcu=atmega8 -W -Wall -S foo.c # dp
-mmcu=atmega128 foo.c -save-temps -Os -c
Using built-in specs.
COLLECT_GCC=e:\WinAVR\4.6.1\bin\avr-gcc.exe
COLLECT_LTO_WRAPPER=e:/winavr/4.6.1/bin/../libexec/gcc/avr/4.6.1/lto-wrapper.exe
Target: avr
Configured with: ../../gcc.gnu.org/gcc-4_6-branch/configure --target=avr
--prefix=/local/gnu/install/gcc-4.6-mingw32 --host=i586-mingw32
--build=i686-linux-gnu --enable-languages=c,c++ --disable-nls --disable-shared
--with-dwarf2
Thread model: single
gcc version 4.6.1 20110620 (prerelease) (GCC) 

GNU C (GCC) version 4.6.1 20110620 (prerelease) (avr)
compiled by GNU C version 3.3.1 (mingw special 20030804-1), GMP version
4.3.2, MPFR version 2.4.2, MPC version 0.8.2
GGC heuristics: --param ggc-min-expand=47 --param ggc-min-heapsize=32702


[Bug target/49857] Put constant switch-tables into flash

2011-07-26 Thread eric.weddington at atmel dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49857

Eric Weddington eric.weddington at atmel dot com changed:

   What|Removed |Added

   Severity|normal  |enhancement


[Bug target/47908] attribute((optimize(2))) causes ICE in m68k_sched_issue_rate

2011-07-26 Thread sch...@linux-m68k.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47908

Andreas Schwab sch...@linux-m68k.org changed:

   What|Removed |Added

 CC||tg at mirbsd dot org

--- Comment #5 from Andreas Schwab sch...@linux-m68k.org 2011-07-26 20:57:11 
UTC ---
*** Bug 49856 has been marked as a duplicate of this bug. ***


[Bug target/49856] ICE when compiling mktime.c (gnulib, embedded in libvirt)

2011-07-26 Thread sch...@linux-m68k.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49856

Andreas Schwab sch...@linux-m68k.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE

--- Comment #3 from Andreas Schwab sch...@linux-m68k.org 2011-07-26 20:57:11 
UTC ---
.

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


[Bug fortran/49597] gfortran namelist read bug

2011-07-26 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49597

Jerry DeLisle jvdelisle at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jvdelisle at gcc dot
   ||gnu.org
 AssignedTo|unassigned at gcc dot   |jvdelisle at gcc dot
   |gnu.org |gnu.org

--- Comment #2 from Jerry DeLisle jvdelisle at gcc dot gnu.org 2011-07-26 
20:59:04 UTC ---
I will tke this one.


[Bug driver/49858] New: lost ability to use driver for external language support?

2011-07-26 Thread bigotp at acm dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49858

   Summary: lost ability to use driver for external language
support?
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: driver
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: big...@acm.org


The nesC compiler at http://sourceforge.net/projects/nescc/ has historically
used a host/target gcc driver to process its files by using an wrapper driver
that invokes the target gcc with a -specs option defining a suffix-spec pair
describing how to translate its source files.

The documentation at http://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html suggests
that this practice, as shown below, is a legitimate use of the driver:

.nc:
perl -S nesc-compile %{_*} %{m*} %{D*U*A*} %{H} %{I*} %{undef} %{trigraphs}
%{i*} %{nostdinc} %{a*} %{g*} %{O*} %{W*} %{w} %{S} %{pedantic*} %{std*}
%{ansi} %{traditional} %{v} %{p*} %{f*}
%{!fsyntax-only:%{!fnesc-cfile=*:%{!_fnesc-cfile=*:-fnesc-tmpcfile=%g.c}}
%{S:%W{o*}%{!o*:-o %b.s}}%{!S:%{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}}}
%{fsyntax-only:-o %j} %{-param*} %i -_ASM %Y

The change in commit 171307 rejects the options formerly allowed by this spec
string:

gcc: error: unrecognized command line option ‘-_fnesc-include=nesc_nx’

The wildcard spec string %{_*} no longer allows these options. Explicitly
adding %{_fnesc-include=*} didn't work either.

Is there a mechanism by which the driver can be informed of options that it
should allow in this situation, given that the list of these options is not
known at the time the driver is compiled?


[Bug tree-optimization/45450] [graphite] some programs do not pass the legality check

2011-07-26 Thread spop at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45450

Sebastian Pop spop at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||spop at gcc dot gnu.org
 Resolution||INVALID

--- Comment #1 from Sebastian Pop spop at gcc dot gnu.org 2011-07-26 21:07:33 
UTC ---
I went to investigate this bug, and I found out that inserting
  gcc_assert (graphite_legal_transform (scop));
is invalid: the legality function is not supposed to return true
when the dependence analysis cannot be performed at compile time.

On the particular case of id-1.c, we have this code:

lambda_vector_add_mc (lambda_vector vec1, int const1,
  lambda_vector vec2, int const2,
  lambda_vector vec3, int size)
{
  int i;
  for (i = 0; i  size; i++)
vec3[i] = const1 * vec1[i] + const2 * vec2[i];
}

and the assert would fail because the dependence analysis
returns a relation classified as unknown because it is not
possible to prove that vec1 and vec3 do not alias:

  if (!(pdr_read_p (pdr1)  pdr_read_p (pdr2))
   PDR_BASE_OBJECT_SET (pdr1) != PDR_BASE_OBJECT_SET (pdr2)
   may_alias)
PDDR_KIND (res) = unknown_dependence;

I investigated the other fails that I can see today on trunk:

FAIL: gcc.dg/graphite/scop-matmult.c (internal compiler error)
FAIL: gcc.dg/graphite/scop-mvt.c (internal compiler error)
FAIL: gcc.dg/graphite/id-1.c (internal compiler error)
FAIL: gcc.dg/graphite/run-id-pr42644.c (internal compiler error)
FAIL: gcc.dg/graphite/interchange-14.c (internal compiler error)
FAIL: gcc.dg/graphite/interchange-15.c (internal compiler error)
FAIL: gcc.dg/graphite/interchange-mvt.c (internal compiler error)
FAIL: gcc.dg/graphite/pr31183.c (internal compiler error)
FAIL: gcc.dg/graphite/pr38510.c (internal compiler error)
FAIL: gcc.dg/graphite/pr38786.c (internal compiler error)
FAIL: gcc.dg/graphite/pr42211.c (internal compiler error)

FAIL: libgomp.graphite/pr41118.c (internal compiler error)

FAIL: gfortran.dg/graphite/pr29581.f90  -O0  (internal compiler error)
FAIL: gfortran.dg/graphite/pr29832.f90  -O0  (internal compiler error)
FAIL: gfortran.dg/graphite/pr42334-1.f  -O  (internal compiler error)
FAIL: gfortran.dg/graphite/pr42393-1.f90  -O  (internal compiler error)
FAIL: gfortran.dg/graphite/pr42393.f90  -O  (internal compiler error)

when run in gdb, they all break on the statement before ICE-ing:
  PDDR_KIND (res) = unknown_dependence;

I am closing this bug as invalid.


[Bug tree-optimization/45313] [graphite] interchange-7.c is miscompiled

2011-07-26 Thread spop at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45313

Sebastian Pop spop at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #2 from Sebastian Pop spop at gcc dot gnu.org 2011-07-26 21:20:17 
UTC ---
Works on trunk.


[Bug target/47372] [x32] internal compiler error: in simplify_subreg, at simplify-rtx.c:5222

2011-07-26 Thread hjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47372

--- Comment #6 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org 2011-07-26 
21:44:01 UTC ---
Author: hjl
Date: Tue Jul 26 21:43:57 2011
New Revision: 176812

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176812
Log:
Call simplify_gen_subreg for PIC with mode of x.

2011-07-26  H.J. Lu  hongjiu...@intel.com

PR target/47372
* config/i386/i386.c (ix86_delegitimize_address): Call
simplify_gen_subreg for PIC with mode of x only if modes of
x and orig_x are different.

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


[Bug target/47369] [x32] internal compiler error: in extract_insn, at recog.c:2109

2011-07-26 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47369

Uros Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 Target||x32
 Status|UNCONFIRMED |RESOLVED
Version|4.6.0   |4.7.0
 Resolution||FIXED
   Target Milestone|--- |4.7.0

--- Comment #3 from Uros Bizjak ubizjak at gmail dot com 2011-07-26 21:51:27 
UTC ---
Fixed.


[Bug target/47537] [x32] internal compiler error: in copy_to_mode_reg, at explow.c:635

2011-07-26 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47537

Uros Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 Target||x32
 Status|UNCONFIRMED |RESOLVED
URL||http://gcc.gnu.org/ml/gcc-p
   ||atches/2011-07/msg01469.htm
   ||l
 Resolution||FIXED
   Target Milestone|--- |4.7.0

--- Comment #2 from Uros Bizjak ubizjak at gmail dot com 2011-07-26 22:02:57 
UTC ---
Fixed by:

Author: hjl
Date: Fri Jul 22 00:56:10 2011
New Revision: 176612

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=176612
Log:
Convert to Pmode if needed and use force_reg after convert.

2011-07-21  H.J. Lu  hongjiu...@intel.com

* config/i386/i386.c (ix86_expand_move): Convert to Pmode if
needed and use force_reg after convert.
(ix86_expand_call): Likewise.
(ix86_expand_special_args_builtin): Likewise.
(ix86_expand_builtin): Likewise.

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


[Bug target/47926] [x32] nested function pointer doesn't work

2011-07-26 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47926

Uros Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 Target||x32
 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.7.0

--- Comment #3 from Uros Bizjak ubizjak at gmail dot com 2011-07-26 22:12:34 
UTC ---
Fixed.


[Bug driver/49858] lost ability to use driver for external language support?

2011-07-26 Thread joseph at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49858

--- Comment #1 from joseph at codesourcery dot com joseph at codesourcery dot 
com 2011-07-26 23:31:27 UTC ---
On Tue, 26 Jul 2011, bigotp at acm dot org wrote:

 Is there a mechanism by which the driver can be informed of options that it
 should allow in this situation, given that the list of these options is not
 known at the time the driver is compiled?

No.  By design there is now a structured notion of options shared by the 
driver and cc1 and a single mechanism for option parsing, that 
consistently rejects unknown options rather than having them sometimes 
only inconsistently rejected depending on which phases of compilation are 
run, and that is intended in future to support multilib selection based on 
logical option state rather than option text, and maybe eventually 
disallowing options without --help text.

It was a mistake that specs were ever documented in the user manual; they 
should be considered a purely internal interface between different parts 
of GCC.  It is not expected that you can drop in support for new languages 
without at least part of that support being present when GCC is built 
(GNU/Linux distributors may include the minimal set of files defining 
specs and options for languages such as D and Pascal when they build their 
main GCC packages, for example, so that the driver then supports those 
languages even though the language compilers themselves are built 
separately).

(I do not rule out that the plugin mechanism could be extended in future 
to allow driver plugins, that might modify the unknown option handling, 
but the change away from allowing arbitrary options that just happen to be 
matched by some spec, to having a structured notion allowing a meaningful 
enumeration of all supported options and their associated properties, is 
deliberate.  It would also be reasonable to provide a way to export the 
properties of GCC's options for use in external wrappers to know what 
options take arguments.  But processing options unknown to GCC is outside 
the intended uses of the driver at present, although you may be able to 
find a hack where your wrapper hides them within options known to GCC that 
take an argument but where the driver doesn't validate that argument in 
any way; -fplugin-arg-* might be the most sensible option to use.)


[Bug driver/49858] lost ability to use driver for external language support?

2011-07-26 Thread bigotp at acm dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49858

--- Comment #2 from Peter A. Bigot bigotp at acm dot org 2011-07-27 00:38:16 
UTC ---
On Tue, Jul 26, 2011 at 6:31 PM, joseph at codesourcery dot com 
gcc-bugzi...@gcc.gnu.org wrote:

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

 --- Comment #1 from joseph at codesourcery dot com joseph at codesourcery
 dot com 2011-07-26 23:31:27 UTC ---
 On Tue, 26 Jul 2011, bigotp at acm dot org wrote:

  Is there a mechanism by which the driver can be informed of options that
 it
  should allow in this situation, given that the list of these options is
 not
  known at the time the driver is compiled?

 No.  By design there is now a structured notion of options shared by the
 driver and cc1 and a single mechanism for option parsing, that
 consistently rejects unknown options rather than having them sometimes
 only inconsistently rejected depending on which phases of compilation are
 run, and that is intended in future to support multilib selection based on
 logical option state rather than option text, and maybe eventually
 disallowing options without --help text.

 It was a mistake that specs were ever documented in the user manual; they
 should be considered a purely internal interface between different parts
 of GCC.  It is not expected that you can drop in support for new languages
 without at least part of that support being present when GCC is built
 (GNU/Linux distributors may include the minimal set of files defining
 specs and options for languages such as D and Pascal when they build their
 main GCC packages, for example, so that the driver then supports those
 languages even though the language compilers themselves are built
 separately).


On one hand, I think a regression like this warrants discussion, as this
removes a feature that has been supported by gcc (and arguably documented as
supported) for many years.  Worst, the people who depend on it are folks who
are unlikely to be involved in gcc development and will not be aware of the
change until after 4.7.0 comes out and their systems have to be
rearchitected to work with new vendor-provided gcc installations.  I only
found it now because I'm updating an out-of-tree back-end (TI msp430) and
most of my practical applications depend on nesC.

On the other hand, I'm sympathetic to the position that specs are a matter
of internal implementation feature and that the change is reasonable.  If
that's going to be the resolution, though, the spec files material should be
moved to the internals documentation.

Peter

(I do not rule out that the plugin mechanism could be extended in future
 to allow driver plugins, that might modify the unknown option handling,
 but the change away from allowing arbitrary options that just happen to be
 matched by some spec, to having a structured notion allowing a meaningful
 enumeration of all supported options and their associated properties, is
 deliberate.  It would also be reasonable to provide a way to export the
 properties of GCC's options for use in external wrappers to know what
 options take arguments.  But processing options unknown to GCC is outside
 the intended uses of the driver at present, although you may be able to
 find a hack where your wrapper hides them within options known to GCC that
 take an argument but where the driver doesn't validate that argument in
 any way; -fplugin-arg-* might be the most sensible option to use.)

 --
 Configure bugmail: http://gcc.gnu.org/bugzilla/userprefs.cgi?tab=email
 --- You are receiving this mail because: ---
 You reported the bug.



[Bug c++/49808] GCC adds an address-of somewhere!

2011-07-26 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49808

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011.07.27 00:51:13
 CC||jason at gcc dot gnu.org
 AssignedTo|unassigned at gcc dot   |jason at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1


[Bug c/49859] New: gcc could warn about statements between switch and first case

2011-07-26 Thread wkoszek at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49859

   Summary: gcc could warn about statements between switch and
first case
   Product: gcc
   Version: 4.5.2
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: wkos...@gmail.com


Created attachment 24838
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24838
Sample source code.

wkoszek@wkoszek:~/p/switch$ cat switch.c 
#include stdio.h

int
main(int argc, char **argv)
{
inttype;

type = 123;
switch (type) {
printf(SOMETHING\n);
case 1:
printf(1\n);
break;
case 2:
printf(2\n);
break;
default:
printf(default\n);
return 1;
}
return 0;
}
wkoszek@wkoszek:~/p/switch$ gcc -pedantic -Wall -Wunused -Wunreachable-code -c
switch.c
wkoszek@wkoszek:~/p/switch$ clang -pedantic -Wall -Wunused -Wunreachable-code
-c switch.c
switch.c:10:3: warning: will never be executed [-Wunreachable-code]
printf(SOMETHING\n);
^
1 warning generated.


wkoszek@wkoszek:~/p/switch$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
4.5.2-8ubuntu4' --with-bugurl=file:///usr/share/doc/gcc-4.5/README.Bugs
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.5 --enable-shared --enable-multiarch
--with-multiarch-defaults=i386-linux-gnu --enable-linker-build-id
--with-system-zlib --libexecdir=/usr/lib/i386-linux-gnu
--without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.5 --libdir=/usr/lib/i386-linux-gnu
--enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-plugin --enable-gold --enable-ld=default
--with-plugin-ld=ld.gold --enable-objc-gc --enable-targets=all --disable-werror
--with-arch-32=i686 --with-tune=generic --enable-checking=release
--build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)


[Bug c/49859] gcc could warn about statements between switch and first case

2011-07-26 Thread wkoszek at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49859

--- Comment #1 from Wojciech Koszek wkoszek at gmail dot com 2011-07-27 
01:16:25 UTC ---
I'd expect GCC to warn me about this case, since it's very likely an error.


[Bug target/49764] [avr-g++] Rejects attribute progmem

2011-07-26 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49764

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
  Known to work||4.6.2, 4.7.0
 Resolution||FIXED

--- Comment #19 from Jonathan Wakely redi at gcc dot gnu.org 2011-07-27 
01:18:20 UTC ---
caused by, and fixed by, changes for PR 44643


[Bug c/49859] gcc could warn about statements between switch and first case

2011-07-26 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49859

--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org 2011-07-27 
01:22:05 UTC ---
-Wunreachable-code support was removed because it dependent on optimization and
caused some false positives (well they are not false positives in the sense
they were unreachable code but rather the code compiled with some optimization
was a truly unreachable but only with inlining and such).

Also does clang warn about Duff's loops?


[Bug c/49859] gcc could warn about statements between switch and first case

2011-07-26 Thread wkoszek at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49859

--- Comment #3 from Wojciech Koszek wkoszek at gmail dot com 2011-07-27 
01:28:28 UTC ---
Looks like GCC and Clang both agree on Duff's stuff:

wkoszek@wkoszek:~/p/duff$ cat duff.c
#include stdio.h

void
duff(to, from, count)
register short *to, *from;
register int count;
{
register int n=(count+7)/8;
switch(count%8){
case 0:  do{  *to = *from++;
case 7:  *to = *from++;
case 6:  *to = *from++;
case 5:  *to = *from++;
case 4:  *to = *from++;
case 3:  *to = *from++;
case 2:  *to = *from++;
case 1:  *to = *from++;
}while(--n0);
}
}

int
main(int argc, char **argv)
{
short*dummy = NULL;

(void)argc;
(void)argv;

duff(dummy, dummy, 123);
return 0;
}
wkoszek@wkoszek:~/p/duff$ gcc -Wall -pedantic -Wunreachable-code -c duff.c
wkoszek@wkoszek:~/p/duff$ clang -Wall -pedantic -Wunreachable-code -c duff.c


[Bug c/48388] libgcc compilation causes a segfault

2011-07-26 Thread danp57 at optonline dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48388

Daniel E. Platt danp57 at optonline dot net changed:

   What|Removed |Added

 CC||danp57 at optonline dot net

--- Comment #2 from Daniel E. Platt danp57 at optonline dot net 2011-07-27 
03:20:50 UTC ---
(In reply to comment #1)
 llvm bug
 
 *** This bug has been marked as a duplicate of bug 48301 ***

I have the same bug, shows up on an macbook and an imac that I recently
installed OS X 10.7 for testing.


[Bug target/47446] [x32] .quad instead of .long is used for address

2011-07-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47446

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
   Last reconfirmed||2011.07.27 04:19:39
 Resolution|FIXED   |
 Ever Confirmed|0   |1

--- Comment #7 from H.J. Lu hjl.tools at gmail dot com 2011-07-27 04:19:39 
UTC ---
Testcase in comment #4 isn't fixed yet.


[Bug target/47446] [x32] .quad instead of .long is used for address

2011-07-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47446

H.J. Lu hjl.tools at gmail dot com changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution||FIXED

--- Comment #8 from H.J. Lu hjl.tools at gmail dot com 2011-07-27 04:24:20 
UTC ---
Fixed.


[Bug target/49860] New: [x32] Error: cannot represent relocation type BFD_RELOC_64 in x32 mode

2011-07-26 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49860

   Summary: [x32] Error: cannot represent relocation type
BFD_RELOC_64 in x32 mode
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: hjl.to...@gmail.com
CC: ubiz...@gmail.com


[hjl@gnu-6 ilp32-30]$ cat x.i
extern char inbuf[];
extern char outbuf[];
extern unsigned insize;
extern unsigned inptr;
static int max_len;
static int peek_bits;
void build_tree() {
  int len;
  char *prefixp;
  max_len = inbuf[inptr++];
  peek_bits = ((max_len) = (12) ? (max_len) : (12));
  prefixp = outbuf[1peek_bits];
  for (len = 1;
   len = peek_bits;
   len++) {
  }
  while (prefixp  outbuf) *--prefixp = 0;
}
[hjl@gnu-6 ilp32-30]$ make
/export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -S -o x.s -mx32
-funroll-all-loops -O3 -dp  x.i
/export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc
-B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -mx32 -funroll-all-loops -O3
-dp  -c -o x.o x.s
x.s: Assembler messages:
x.s:25: Error: cannot represent relocation type BFD_RELOC_64 in x32 mode
make: *** [x.o] Error 1
[hjl@gnu-6 ilp32-30]


[Bug target/49547] LZCNT should be enabled only if ABM or LZCNT bits are set

2011-07-26 Thread kirill.yukhin at intel dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49547

--- Comment #2 from Yukhin Kirill kirill.yukhin at intel dot com 2011-07-27 
05:04:04 UTC ---
Patch prepared.
Discussion is here:
http://gcc.gnu.org/ml/gcc-patches/2011-07/msg02266.html


[Bug c/49861] New: Cross compile for mingw32, All executable file can not start up, lead crash!

2011-07-26 Thread loaden at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49861

   Summary: Cross compile for mingw32, All executable file can not
start up, lead crash!
   Product: gcc
   Version: 4.6.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: loa...@gmail.com


Created attachment 24839
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24839
crash executable file

I am testing GCC 4.4.6 and 4.5.3, both them works well for mingw32 if use cross
build.
But when use 4.6.0 or 4.6.1, will lead start up crash.

My configure:
  ../../src/gcc-$sver/configure \
--prefix=/usr \
--build=i686-linux-gnu \
--host=i686-linux-gnu \
--target=$host \
--enable-languages=c \
--enable-threads \
--disable-shared \
--disable-lto \
--disable-plugin \
--disable-libssp \
--disable-libgomp \
--disable-nls \
--disable-sjlj-exceptions \
--with-dwarf2 \
--with-pkgversion='qp-MinGW32' \
--with-bugurl=http://qp-gcc.googlecode.com

code:
int main()
{
return 0;
}


[Bug c/49861] Cross compile for mingw32, All executable file can not start up, lead crash!

2011-07-26 Thread loaden at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49861

--- Comment #1 from Yuchen Deng loaden at gmail dot com 2011-07-27 05:51:01 
UTC ---
Created attachment 24840
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=24840
Full build script

host=i686-mingw32