[Bug middle-end/50325] [4.7 Regression] 76 new fails with rev. 177691

2011-11-22 Thread krebbel at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50325

Andreas Krebbel krebbel at gcc dot gnu.org changed:

   What|Removed |Added

   Severity|normal  |critical


[Bug fortran/51266] New: Pointer initialization in PARAMETER

2011-11-22 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51266

 Bug #: 51266
   Summary: Pointer initialization in PARAMETER
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Keywords: rejects-valid
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: bur...@gcc.gnu.org
Blocks: 45290


The following program from
   http://groups.google.com/group/comp.lang.fortran/msg/38bbc52c641f4b13
is rejected with:

TYPE(T), PARAMETER :: C = T(X)  !!!
1
  Error: Parameter 'x' at (1) has not been declared or is a variable, which
  does not reduce to a constant expression

The check is wrong as one has a pointer initialization - and X is a valid REAL,
TARGET, SAVE variable. Without PARAMETER, the initialization works. I think
just the checking needs to be fixed. (Note this is a F2008 feature.)

Variant: Use T() an in the derived type  P = X.


  PROGRAM MAIN
TARGET X
DATA X/0.0/
TYPE T
  REAL, POINTER :: P
END TYPE
TYPE(T), PARAMETER :: C = T(X)  !!!
READ *, X
CALL SUBR()
  CONTAINS
SUBROUTINE SUBR
  REAL, PARAMETER :: Y = C%P  !!!
 PRINT *, Y
END SUBROUTINE
  END


[Bug tree-optimization/51074] No constant folding performed for VEC_PERM_EXPR, VEC_INTERLEAVE*EXPR, VEC_EXTRACT*EXPR

2011-11-22 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51074

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2011-11-22 
09:38:53 UTC ---
Created attachment 25878
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25878
gcc47-pr51074-be.patch

Big endian fix, untested.


[Bug c++/51143] [C++11][DR 1159] Alias template allows class definition

2011-11-22 Thread dodji at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51143

--- Comment #2 from Dodji Seketeli dodji at gcc dot gnu.org 2011-11-22 
09:49:12 UTC ---
A candidate fix has been posted to
http://gcc.gnu.org/ml/gcc-patches/2011-11/msg02194.html.


[Bug target/51179] poor vectorization on interlagos.

2011-11-22 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51179

--- Comment #1 from Uros Bizjak ubizjak at gmail dot com 2011-11-22 10:19:40 
UTC ---
What about current 4.7 SVN?


[Bug rtl-optimization/50765] [4.7 Regression] ICE: in expand_insn, at optabs.c:7681 with -ftree-vectorize -fno-tree-dce

2011-11-22 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50765

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org 2011-11-22 
10:50:08 UTC ---
Created attachment 25879
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25879
gcc47-pr50765-test.patch

Fixed by part of my http://gcc.gnu.org/viewcvs?root=gccview=revrev=180932
change, in particular vectorizable_type_promotion has been mishandling ncopies
 1 - vect_create_vectorized_promotion_stmts would always grow vec_oprnd[01]
vectors if multi_step_cvt, but nothing would truncate them and we'd just
replace
the first element in those vectors, so for ncopies 2 (in this case) we have one
extra element in the vectors to promote.

I'll just add the testcase to the testsuite after regtesting it and then close
this.


[Bug c++/51196] FAIL: g++.dg/cpp0x/Wzero-as-null-pointer-constant-1.C

2011-11-22 Thread Greta.Yorsh at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51196

--- Comment #6 from Greta Yorsh Greta.Yorsh at arm dot com 2011-11-22 
10:56:41 UTC ---
Thanks for fixing it, Paolo. Tested as follows.

Successful cross-build of the patch version for arm-none-eabi target,
configured as before. No regression on qemu for check-g++. The tests for
g++.dg/cpp0x/Wzero-as-null-pointer-constant-1.C all pass. 

Can you see the patch committed to trunk, please? 

Thank you,
Greta


[Bug debug/50827] [4.7 Regression] ICE: RTL check: expected elt 0 type 'e' or 'u', have '0' (rtx entry_value) in loc_cmp, at var-tracking.c:3011

2011-11-22 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50827

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2011-11-22 
11:03:26 UTC ---
Fixed.


[Bug fortran/46686] Improve backtracing (unwinding) on non-glibc targets

2011-11-22 Thread jb at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46686

Janne Blomqvist jb at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #10 from Janne Blomqvist jb at gcc dot gnu.org 2011-11-22 
11:24:10 UTC ---
(In reply to comment #9)
 (In reply to comment #8)
  I thought that fork, exec, and pipe, which are necessary for starting and
  interacting with the addr2line process are not supported on mingw?
 
 I just asked Kai. _exec, _pipe and _dup2 are supported, but fork() is not.
 However, Kai suggests to use
   FILE *__cdecl _popen(const char *_Command,const char *_Mode)
 with _Mode = rb. One can then read from the stream. See also: 
 http://msdn.microsoft.com/en-us/library/96ayss4b%28v=vs.80%29.aspx

At least on POSIX popen() is not async-signal-safe, hence one cannot use it in
a signal handler.

In any case, unassigning myself, since I have neither the time nor the means to
work on the remaining platform-specific parts of this PR.


[Bug tree-optimization/51179] poor vectorization on interlagos.

2011-11-22 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51179

Uros Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-11-22
 CC||irar at il dot ibm.com
  Component|target  |tree-optimization
 Ever Confirmed|0   |1

--- Comment #2 from Uros Bizjak ubizjak at gmail dot com 2011-11-22 11:33:24 
UTC ---
We can start here with something that hopefully resembles your original fortran
code:

--cut here--
double C[10][4], B[10][10], A[10][4];

void test (void)
{
  int i = 0, j = 0, l = 0;

//for (; j  10; j += 2)
//  for (; l  10; l++)
  for (; i  4; i++)
{
  C[j+0][i] = C[j+0][i] + A[l][i] * B[j+0][l];
  C[j+1][i] = C[j+1][i] + A[l][i] * B[j+1][l];
}
}
--cut here--

gcc -O3 -ffast-math -mfma4 -mavx:

test:
vmovapd A(%rip), %ymm0
vbroadcastsdB(%rip), %ymm1
vfmaddpdC(%rip), %ymm1, %ymm0, %ymm1
vmovapd %ymm1, C(%rip)
vbroadcastsdB+80(%rip), %ymm1
vfmaddpdC+32(%rip), %ymm1, %ymm0, %ymm0
vmovapd %ymm0, C+32(%rip)
vzeroupper
ret

Nice.

Now uncomment the second loop (l index) and this kernel will break:

 ... lots of code deleted ... 
.L3:
vmovupd (%r8,%rax), %xmm1
addl$1, %esi
vinsertf128 $0x1, 16(%r8,%rax), %ymm1, %ymm1
vfmaddpd%ymm0, %ymm5, %ymm1, %ymm0
vmovapd %ymm0, (%rbx,%rax)
vmovupd (%rcx,%rax), %xmm0
vinsertf128 $0x1, 16(%rcx,%rax), %ymm0, %ymm0
vfmaddpd%ymm0, %ymm4, %ymm1, %ymm0
vmovupd %xmm0, (%rcx,%rax)
vextractf128$0x1, %ymm0, 16(%rcx,%rax)
addq$32, %rax
cmpl%r10d, %esi
jb  .L3
 ... lots of code deleted ... 

This already happens in the tree optimizers (vectorizer), RTL is just following
this trail.

Confirmed as a vectorizer problem.


[Bug rtl-optimization/49054] useless cmp+jmp generated for switch when default: is unreachable

2011-11-22 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49054

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords|wrong-code  |missed-optimization
 CC||ebotcazou at gcc dot
   ||gnu.org
  Component|middle-end  |rtl-optimization
   Host|x86-64  |
Version|unknown |4.6.0
  Build|x86-64  |
   Severity|normal  |enhancement

--- Comment #4 from Eric Botcazou ebotcazou at gcc dot gnu.org 2011-11-22 
11:37:38 UTC ---
The CFG cleanup code should be enhanced to deal with this.


[Bug fortran/51267] New: loop optimization error using LOC function

2011-11-22 Thread priv123 at hotmail dot fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51267

 Bug #: 51267
   Summary: loop optimization error using LOC function
Classification: Unclassified
   Product: gcc
   Version: 4.6.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: priv...@hotmail.fr


Created attachment 25880
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25880
simple source file

The small program attached fails using gfortran 4.6.1 (ubuntu oneiric built)
using -O1 optimization level or higher (ok at -O0).
It succeeds with gfortran 4.5.4 at all -O levels.

It ends by printing a boolean value : T if the test is ok, F else.

$ gfortran-4.5 -O1 -Wall -Wextra bug46_stat.f ; ./a.out
 tab(   1 )=  -1
 tab(   2 )=  -1
 tab(   3 )=  -1
 tab(   4 )=  -1
 tab(   5 )=  -1
 tab(   6 )=  -1
 T

$ gfortran-4.6 -O1 -Wall -Wextra bug46_stat.f ; ./a.out
 tab(   1 )=   134520832
 tab(   2 )=10813028
 tab(   3 )=  -1
 tab(   4 )=   0
 tab(   5 )=10870894
 tab(   6 )=  -1
 F


Ouput with '-v' : 

Driving: gfortran-4.6 -v -save-temps -O1 -Wall -Wextra prog_stat.F -l gfortran
-l m -shared-libgcc
Utilisation des specs internes.
COLLECT_GCC=gfortran-4.6
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6.1/lto-wrapper
Target: i686-linux-gnu
Configuré avec: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
4.6.1-9ubuntu3' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs
--enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr
--program-suffix=-4.6 --enable-shared --enable-linker-build-id
--with-system-zlib --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin
--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
Modèle de thread: posix
gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O1' '-Wall' '-Wextra' '-shared-libgcc'
'-mtune=generic' '-march=i686'
 /usr/lib/gcc/i686-linux-gnu/4.6.1/f951 prog_stat.F -ffixed-form
-cpp=prog_stat.f90 -quiet -v -imultilib . -imultiarch i386-linux-gnu
prog_stat.F -quiet -dumpbase prog_stat.F -mtune=generic -march=i686 -auxbase
prog_stat -O1 -Wall -Wextra -version -fintrinsic-modules-path
/usr/lib/gcc/i686-linux-gnu/4.6.1/finclude -o prog_stat.s
GNU Fortran (Ubuntu/Linaro 4.6.1-9ubuntu3) version 4.6.1 (i686-linux-gnu)
compiled by GNU C version 4.6.1, GMP version 5.0.1, MPFR version 3.0.1-p3,
MPC version 0.9
heuristiques GGC: --param ggc-min-expand=81 --param ggc-min-heapsize=95876
le répertoire « /usr/local/include/i386-linux-gnu » est ignoré car inexistant
le répertoire «
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../i686-linux-gnu/include » est
ignoré car inexistant
la recherche pour #include ... débute ici :
la recherche pour #include ... débute ici:
 /usr/lib/gcc/i686-linux-gnu/4.6.1/finclude
 /usr/lib/gcc/i686-linux-gnu/4.6.1/include
 /usr/local/include
 /usr/lib/gcc/i686-linux-gnu/4.6.1/include-fixed
 /usr/include/i386-linux-gnu
 /usr/include
Fin de la liste de recherche.
GNU Fortran (Ubuntu/Linaro 4.6.1-9ubuntu3) version 4.6.1 (i686-linux-gnu)
compiled by GNU C version 4.6.1, GMP version 5.0.1, MPFR version 3.0.1-p3,
MPC version 0.9
heuristiques GGC: --param ggc-min-expand=81 --param ggc-min-heapsize=95876
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O1' '-Wall' '-Wextra' '-shared-libgcc'
'-mtune=generic' '-march=i686'
 as --32 -o prog_stat.o prog_stat.s
Lecture des spécification à partir de
/usr/lib/gcc/i686-linux-gnu/4.6.1/libgfortran.spec
renommé les specs lib à liborig
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O1' '-Wall' '-Wextra' '-shared-libgcc'
'-mtune=generic' '-march=i686'
COMPILER_PATH=/usr/lib/gcc/i686-linux-gnu/4.6.1/:/usr/lib/gcc/i686-linux-gnu/4.6.1/:/usr/lib/gcc/i686-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.6.1/:/usr/lib/gcc/i686-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/i686-linux-gnu/4.6.1/:/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/:/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/:/lib/i386-linux-gnu/:/lib/../lib/:/usr/lib/i386-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-O1' '-Wall' '-Wextra' '-shared-libgcc'
'-mtune=generic' '-march=i686'
 /usr/lib/gcc/i686-linux-gnu/4.6.1/collect2 --build-id --no-add-needed
--as-needed --eh-frame-hdr -m elf_i386 --hash-style=gnu -dynamic-linker
/lib/ld-linux.so.2 -z relro
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crt1.o

[Bug fortran/51268] New: [Regression] A subroutine can not know anymore its own interface

2011-11-22 Thread bardeau at iram dot fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51268

 Bug #: 51268
   Summary: [Regression] A subroutine can not know anymore its own
interface
Classification: Unclassified
   Product: gcc
   Version: fortran-dev
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: bard...@iram.fr


Created attachment 25881
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25881
Declare a subroutine interface and use this interface in the subroutine

This a regression which appeared in the last months: problem is in 4.7.0
2019 but not in 4.7.0 20110507

In the latest version, a subroutine can not know its own interface and an error
is raised about duplicate symbols (see example attached):

test.f90:15.6:

  use myinterfaces
  1
Error: 'mysub' of module 'myinterfaces', imported at (1), is also the name of
the current program unit

From our developer point of view, this is a very annoying regression, since we
are in charge of several libraries, with hundreds of subroutines in each. We
made the choice to provide all the interfaces of all the subroutines to all of
them, in order to ensure a correct use of the subroutines everywhere. For each
library we thus have a dedicated interface module which is used everywhere.
Forbidding a subroutine to know its own interface would imply to use the
statement use only, which is definitely not well suited for large programs.

Thanks for your help.


[Bug c++/51264] O0 Bootstrap failure: control reaches end of non-void function

2011-11-22 Thread matz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51264

Michael Matz matz at gcc dot gnu.org changed:

   What|Removed |Added

 CC||matz at gcc dot gnu.org

--- Comment #8 from Michael Matz matz at gcc dot gnu.org 2011-11-22 12:59:59 
UTC ---
Andrew: no, the clobbers are needed also for the outer bind, in order to make
inlining such functions just work (i.e. enable stack sharing between different
inlined functions).  Otherwise we'd have to add the clobbers in the inliner
which is more difficult because the try/finally are already lowered.

In this case it's clearly a problem in tree.c, just remove the superfluous
break.


[Bug target/51134] [4.7 Regression] x86 memset/memcpy expansion is broken

2011-11-22 Thread michael.v.zolotukhin at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51134

--- Comment #10 from Michael Zolotukhin michael.v.zolotukhin at gmail dot com 
2011-11-22 13:17:38 UTC ---
Created attachment 25882
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25882
Patch for new memset/memcpy implementation

(In reply to comment #9)
 Regressions caused by the new memset/memcpy expansion are
 
 FAIL: 27_io/basic_filebuf/seekoff/wchar_t/1.cc execution test
 FAIL: 27_io/basic_filebuf/seekpos/wchar_t/9874.cc execution test
 FAIL: 27_io/manipulators/basefield/char/1.cc execution test
 FAIL: 27_io/manipulators/basefield/wchar_t/1.cc execution test
 FAIL: 27_io/objects/wchar_t/12.cc execution test
 FAIL: 27_io/objects/wchar_t/13.cc execution test
 FAIL: events run
 FAIL: gcc.target/i386/cleanup-1.c execution test
 FAIL: gcc.target/i386/cleanup-2.c execution test
 FAIL: gcc.target/i386/pr34077.c (internal compiler error)
 FAIL: gcc.target/i386/pr34077.c (internal compiler error)
 FAIL: gcc.target/i386/pr34077.c (test for excess errors)
 FAIL: gcc.target/i386/pr34077.c (test for excess errors)
 FAIL: gfortran.fortran-torture/execute/arrayarg.f90 execution,  -O2
 -fomit-frame-pointer -finline-functions -funroll-loops

With the attached patch fails on PR34077 and arrayarg.f90 are fixed, fails on
cleanup-tests are probably caused by incorrect testcase (see
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49503).


[Bug c++/51264] O0 Bootstrap failure: control reaches end of non-void function

2011-11-22 Thread matz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51264

--- Comment #9 from Michael Matz matz at gcc dot gnu.org 2011-11-22 13:32:20 
UTC ---
Author: matz
Date: Tue Nov 22 13:32:15 2011
New Revision: 181615

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=181615
Log:
PR c++/51264
* tree.c (iterative_hash_expr): Remove break after return.

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


[Bug tree-optimization/51269] New: Vectorization profitability threshold is not actually used

2011-11-22 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51269

 Bug #: 51269
   Summary: Vectorization profitability threshold is not actually
used
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: jamb...@gcc.gnu.org
  Host: x86_64-linux-gnu
Target: x86_64-linux-gnu


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

When analyzing performance of 410.bwaves from SPEC 2006 I've been
compiling a slightly modified source and noticed that vectorizer
generates only useless run-time checks for the Profitability
threshold.

It is observable when compiling the attached simple file with trunk
revision 181552 with the following options:

/path/to/compiler/gfortran -S -Ofast -g -funroll-loops -fpeel-loops
-fno-prefetch-loop-arrays -march=bdver1 -mtune=bdver1 -mveclibabi=svml
-DSPEC_CPU_LP64 test.f -fdump-tree-vect-details -fverbose-asm --param
min-vect-loop-bound=8

The last parameters just forces the threshold to be 19, so that it is
easier to spot in the IL than the original 2.  And the IL part with
the test looks like this:

  D.1883_6 = *nb_5(D);
  ...

  D.1962_99 = (character(kind=4)) D.1883_6;
  D.1963_100 = D.1962_99 = 19;
  if (D.1963_100 != 0)
goto bb 17;
  else
goto bb 18;

bb 17:
  prologue_after_cost_adjust.24_101 = (character(kind=4)) D.1883_6;

bb 18:
Invalid sum of incoming frequencies 2800, should be 1400
  # prologue_after_cost_adjust.24_102 = PHI
prologue_after_cost_adjust.24_101(17), prolog_loop_niters.22_90(16)
  D.1965_103 = prolog_loop_niters.22_90 == 0;
  if (D.1965_103 != 0)
goto bb 22;
  else
goto bb 19;

The thing is that prologue_after_cost_adjust.24_102 does not appear in
the IL anywhere else (all occurrences of all SSA names of the variable
are in the above snippet), the phi node is useless together with the
condition and both are promptly removed by subsequent passes.  I
therefore think the vectorizer either should not generate this
calculation at all or should do something with the result.

Finally, the whole point of the examination was to explore ways of
avoiding an expensive prologue when the number of iterations is small,
because then the vectorizer actually makes the generated code much
slower.  It would therefore be great if we could avoid as much of the
prologue as possible when the threshold is not exceeded.


[Bug c++/51264] O0 Bootstrap failure: control reaches end of non-void function

2011-11-22 Thread matz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51264

--- Comment #10 from Michael Matz matz at gcc dot gnu.org 2011-11-22 14:18:35 
UTC ---
Fixed.  Improving the situation with the clobbers should be tracked somewhere
else.


[Bug c++/51264] O0 Bootstrap failure: control reaches end of non-void function

2011-11-22 Thread matz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51264

Michael Matz matz at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED

--- Comment #11 from Michael Matz matz at gcc dot gnu.org 2011-11-22 14:19:17 
UTC ---
.


[Bug rtl-optimization/50765] [4.7 Regression] ICE: in expand_insn, at optabs.c:7681 with -ftree-vectorize -fno-tree-dce

2011-11-22 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50765

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2011-11-22 
14:23:02 UTC ---
Author: jakub
Date: Tue Nov 22 14:22:56 2011
New Revision: 181617

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=181617
Log:
PR tree-optimization/50765
* gcc.dg/pr50765.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/pr50765.c
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug testsuite/47013] FAIL: gcc.dg/sms-*.c scan-rtl-dump-times sms SMS succeeded *

2011-11-22 Thread iains at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47013

Iain Sandoe iains at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-11-22
 CC||iains at gcc dot gnu.org
 Ever Confirmed|0   |1

--- Comment #10 from Iain Sandoe iains at gcc dot gnu.org 2011-11-22 14:37:23 
UTC ---
any progress on resolving this .. or any more input needed?


[Bug rtl-optimization/50765] [4.7 Regression] ICE: in expand_insn, at optabs.c:7681 with -ftree-vectorize -fno-tree-dce

2011-11-22 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50765

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org 2011-11-22 
14:40:49 UTC ---
Fixed.


[Bug c++/25973] [4.4/4.5/4.6/4.7 Regression] Wrong warning: control reaches end of non-void function

2011-11-22 Thread vries at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25973

vries at gcc dot gnu.org changed:

   What|Removed |Added

 CC||vries at gcc dot gnu.org

--- Comment #11 from vries at gcc dot gnu.org 2011-11-22 14:51:37 UTC ---
I can't reproduce the problem from the description with 4.7, but I can
reproduce the problem from comment 4 with 4.7.

Tentative patch for test-case from comment 4:
...
Index: gcc/gimple-low.c
===
--- gcc/gimple-low.c (revision 181172)
+++ gcc/gimple-low.c (working copy)
@@ -680,6 +680,12 @@ block_may_fallthru (const_tree block)
 case CLEANUP_POINT_EXPR:
   return block_may_fallthru (TREE_OPERAND (stmt, 0));

+case DO_STMT:
+  /* DO_STMT is part of cp-tree.def, so this should be moved to a
+ cp-specific file.  */
+  /* If DO_BODY doesn't fall thru, then DO_STMT doesn't either.  */
+  return block_may_fallthru (TREE_OPERAND (stmt, 1));
+  
 default:
   return true;
 }
...

Perhaps we should file a separate bug for the test-case from comment 4.


[Bug other/51125] FAIL: g++.dg/tm/pr45940-3.C

2011-11-22 Thread matz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51125

--- Comment #8 from Michael Matz matz at gcc dot gnu.org 2011-11-22 14:56:03 
UTC ---
Author: matz
Date: Tue Nov 22 14:55:58 2011
New Revision: 181619

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=181619
Log:
PR other/51125
* trans-mem.c (expand_block_tm): Ignore clobbers.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/trans-mem.c


[Bug other/51125] FAIL: g++.dg/tm/pr45940-3.C

2011-11-22 Thread matz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51125

Michael Matz matz at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED

--- Comment #9 from Michael Matz matz at gcc dot gnu.org 2011-11-22 14:57:54 
UTC ---
Fixed.  (As per http://gcc.gnu.org/ml/gcc-patches/2011-11/msg02169.html an
optimization opportunity remains)


[Bug middle-end/51258] 64-bit gcc.dg/atomic-compare-exchange-5.c link failure on 32-bit Solaris/x86

2011-11-22 Thread ro at CeBiTec dot Uni-Bielefeld.DE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51258

--- Comment #3 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot 
Uni-Bielefeld.DE 2011-11-22 15:05:13 UTC ---
 --- Comment #1 from Andrew Macleod amacleod at redhat dot com 2011-11-21 
 19:21:30 UTC ---
 32 bit targets don't usually support 128 bit atomic operations natively, and
 leave calls to be resolved by an external atomic library.   There was some
 issue with X32 support where 32 bit could support it under some circumstances.

 Now gcc/testsuite/lib/target-supports.exp defines the testsuite check for
 whether 128 bit is supported as:

 proc check_effective_target_sync_int_128 { } {
 if { ([istarget x86_64-*-*] || [istarget i?86-*-*])
   ![is-effective-target ia32] } {
 return 1
 } else {
 return 0
 }
 }

 I presume if 32 bit solaris isn't supporting 128 bit operations then this 
 needs
 to be tweaked...

There's nothing Solaris-specific here, as I'm seeing the same issue on a
bi-arch i386-apple-darwin9.8.0 compiler for the 64-bit multilib.  It
seems the 32-bit compiler doesn't generate the 128-bit atomic insns when
generating 64-bit code.

Rainer


[Bug c++/51196] FAIL: g++.dg/cpp0x/Wzero-as-null-pointer-constant-1.C

2011-11-22 Thread paolo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51196

--- Comment #7 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org 
2011-11-22 15:04:33 UTC ---
Author: paolo
Date: Tue Nov 22 15:04:27 2011
New Revision: 181620

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=181620
Log:
2011-11-22  Paolo Carlini  paolo.carl...@oracle.com

PR c++/51196
* typeck.c (cp_build_binary_op, [case EQ_EXPR]): For targets having
TARGET_PTRMEMFUNC_VBIT_LOCATION == ptrmemfunc_vbit_in_delta, do here
the -Wzero-as-null-pointer-constant warning for pmf == 0.

Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/typeck.c


[Bug c++/51196] FAIL: g++.dg/cpp0x/Wzero-as-null-pointer-constant-1.C

2011-11-22 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51196

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

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

--- Comment #8 from Paolo Carlini paolo.carlini at oracle dot com 2011-11-22 
15:06:34 UTC ---
Thanks a lot Greta for testing, patch applied!


[Bug middle-end/51261] [4.7 Regression] -fcompare-debug with memset()

2011-11-22 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51261

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2011-11-22
 CC||jakub at gcc dot gnu.org
 AssignedTo|unassigned at gcc dot   |jakub at gcc dot gnu.org
   |gnu.org |
 Ever Confirmed|0   |1


[Bug bootstrap/50888] Bootstrap failure in libjava against latest git glibc

2011-11-22 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50888

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org 2011-11-22 
15:19:53 UTC ---
(In reply to comment #6)
 I suppose I don't really object to a workaround in libjava, but surely the
 sensible thing to do is fix isspace() not to throw.  It can't, anyway: that
 would be in breach of its spec.

Sorry, forgot about this PR.
isspace is actually marked as not throwing, i.e. throw() in C++.  In glibc
2.15+ it happens to be implemented as throw() inline function which calls
another function (which is throw() too), the problem is that with
-fnon-call-exceptions the compiler doesn't know the function pointer is always
non-NULL and assumes the call instruction might throw on SIGSEGV/SIGILL etc. 
That will always work, but the compiler must assume it doesn't always, thus it
needs -lsupc++ support with which libjava is not linked.


[Bug c++/51270] New: constness violation is accepted without any warning but leads to a required function call being eliminated during optimization

2011-11-22 Thread michiel_dewilde at agilent dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51270

 Bug #: 51270
   Summary: constness violation is accepted without any warning
but leads to a required function call being eliminated
during optimization
Classification: Unclassified
   Product: gcc
   Version: 4.6.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: michiel_dewi...@agilent.com


Created attachment 25884
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25884
Standalone source file

Bug summary: constness violation is accepted without any warning but leads to a
required function call being eliminated during optimization

The code itself has a problem in the function faulty_compiled_function:
Feeding the return value of pass_through as argument to recast_reference
violates const regulations.
This error is never caught by at least g++ 4.4.2 and g++ 4.6.2 on x86_64.
Far worse, when compiling with -O1 or bigger, the optimizer eliminates the call
to pass_through and feeds invalid data into recast_reference.

Proposed treatment: Either there must be an error keeping this code from
compiling, or the optimization must be able to handle it properly.

Bug triggered as follows:
  Compile using g++ -O faulty_optimization_of_invalid_const_usage.cpp
  Run ./a.out ; echo $0
This should return exit code 0. It returns exit code 1.

Without optimization, there is no error.
The error occurs at any nonzero optimization level, even when using
-fno-strict-aliasing -fno-inline -fno-omit-stack-frame.

$ gcc -v
COLLECT_GCC=gcc_x86_64
COLLECT_LTO_WRAPPER=/gfs/belgium/gntnas01/d3/hped_build_gent/tools/gcc/4.6.2/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.6.2/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ./configure --prefix=/hped/builds/tools/gcc/4.6.2
--enable-languages=c,c++ --with-gmp=/hfs/d1/local/dbjornba/btmp
--with-mpfr=/hfs/d1/local/dbjornba/btmp --with-mpc=/hfs/d1/local/dbjornba/btmp
Thread model: posix
gcc version 4.6.2 (GCC)


[Bug c++/51270] constness violation is accepted without any warning but leads to a required function call being eliminated during optimization

2011-11-22 Thread michiel_dewilde at agilent dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51270

--- Comment #1 from Michiel De Wilde michiel_dewilde at agilent dot com 
2011-11-22 15:26:42 UTC ---
Created attachment 25885
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25885
preprocessed source code (*.ii)


[Bug c++/51265] [4.6/4.7 Regression] ICE in finish_decltype_type, at cp/semantics.c:5244

2011-11-22 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51265

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-11-22
Summary|internal compiler error: in |[4.6/4.7 Regression] ICE in
   |finish_decltype_type, at|finish_decltype_type, at
   |cp/semantics.c:5244 |cp/semantics.c:5244
 Ever Confirmed|0   |1

--- Comment #1 from Paolo Carlini paolo.carlini at oracle dot com 2011-11-22 
15:37:17 UTC ---
Can be reduced to this, and seems a Regression:

struct Funny
{
  int print3(int) const;
};

templatetypename X, X ff
void c();

templatetypename X, X ff, typename R, typename... A
void xx(A... args)
{
  cdecltype(ff), ff();
}

int main()
{
  xxint (Funny::*)(int) const, Funny::print3, int, int(3);
}


[Bug fortran/51267] loop optimization error using LOC function

2011-11-22 Thread kargl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51267

kargl at gcc dot gnu.org changed:

   What|Removed |Added

 CC||kargl at gcc dot gnu.org

--- Comment #1 from kargl at gcc dot gnu.org 2011-11-22 15:40:43 UTC ---
(In reply to comment #0)
 Created attachment 25880 [details]
 simple source file
 
 The small program attached fails using gfortran 4.6.1 (ubuntu oneiric built)
 using -O1 optimization level or higher (ok at -O0).
 It succeeds with gfortran 4.5.4 at all -O levels.
 
 It ends by printing a boolean value : T if the test is ok, F else.
 
 $ gfortran-4.5 -O1 -Wall -Wextra bug46_stat.f ; ./a.out
  tab(   1 )=  -1
  tab(   2 )=  -1
  tab(   3 )=  -1
  tab(   4 )=  -1
  tab(   5 )=  -1
  tab(   6 )=  -1
  T
 
 $ gfortran-4.6 -O1 -Wall -Wextra bug46_stat.f ; ./a.out
  tab(   1 )=   134520832
  tab(   2 )=10813028
  tab(   3 )=  -1
  tab(   4 )=   0
  tab(   5 )=10870894
  tab(   6 )=  -1
  F
 
 
 Ouput with '-v' : 

Have you considered compiling the code with -fcheck=all?
It shows that you have an array reference issue.

troutmask:sgk[206] gfc4x -o z -fcheck=all -O bug46_stat.f
troutmask:sgk[207] ./z
At line 10 of file bug46_stat.f
Fortran runtime error: Index '-7' of dimension 1 of array 'ius' below lower
bound of 1


[Bug fortran/51266] [F08] Pointer initialization in PARAMETER

2011-11-22 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51266

--- Comment #1 from Tobias Burnus burnus at gcc dot gnu.org 2011-11-22 
15:44:34 UTC ---
Hmm, I somehow have the feeling that encountered this bug already. See the
thread starting at http://j3-fortran.org/pipermail/j3/2011-November/004840.html

I think I concur with Malcolm that the code of comment 0 cannot be implemented
(at least not without combining the linker with the front-end compiler,
something no one wants to do):
  http://j3-fortran.org/pipermail/j3/2011-November/004851.html

On the other hand, I think Bob right at
  http://j3-fortran.org/pipermail/j3/2011-November/004857.html
that the current standard seems to have a loop hole.

I probably should have realized the discussion earlier - on the other hand, Bob
seems to insist (cf. link above) that the program is not only valid but should
also be valid - otherwise, I presume, he wouldn't have posted it at
comp.lang.fortran.

(A PR might already exist for this thread.)


[Bug c++/51265] [4.6/4.7 Regression] ICE in finish_decltype_type, at cp/semantics.c:5244

2011-11-22 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51265

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

--- Comment #2 from Paolo Carlini paolo.carlini at oracle dot com 2011-11-22 
15:46:04 UTC ---
On it. A tad simpler:

struct Funny
{
  int print(int);
};

templatetypename X, X ff
void c();

templatetypename X, X ff
void xx()
{
  cdecltype(ff), ff();
}

int main()
{
  xxint (Funny::*)(int), Funny::print();
}


[Bug c++/51270] constness violation is accepted without any warning but leads to a required function call being eliminated during optimization

2011-11-22 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51270

--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org 2011-11-22 
15:47:45 UTC ---
If you want warnings then you should request them using -Wall etc.

Although doing so at -O2 gives this, which isn't actually very helpful:

e.cpp:67:60: warning: 'anonymous' is used uninitialized in this function
[-Wuninitialized]


There is no constness error, the argument to recast_reference creates a
temporary of type 'char const*' which binds to a reference-to-const to that
type:

You can rewrite it as:

  int* faulty_compiled_function(char* val)
  {
char const* tmp = pass_through(val);
return recast_reference(tmp);
  }

pass_through and recast_reference are not needed, they simply serve to hide the
error in your code, which is that you return a reference to the temporary, and
use it in main() after the temporary has gone out of scope.  Therefore the code
is invalid.


[Bug rtl-optimization/51271] New: ICE in in maybe_record_trace_start, at dwarf2cfi.c:2244

2011-11-22 Thread vries at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51271

 Bug #: 51271
   Summary: ICE in in maybe_record_trace_start, at
dwarf2cfi.c:2244
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: vr...@gcc.gnu.org


Created attachment 25886
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25886
preprocessed res_hconf.c

I ran into this ICE with a mips64el cross compiler build from r181586:
...
res_hconf.c: In function 'skip_string':
res_hconf.c:104:1: internal compiler error: in maybe_record_trace_start, at
dwarf2cfi.c:2244
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.
...

compile line:
...
mips64el-linux-gnu-gcc  -mabi=n32 res_hconf.c -c -std=gnu99 -fgnu89-inline -O2
-Wall -Winline -Wwrite-strings -fmerge-all-constants -g -Wno-strict-prototypes
-Wno-write-strings -Wstrict-prototypes -fexceptions -mabi=n32
...

configure line:
...
/scratch/vries/b4/ref-mips64-ml-11-11-21/src/gcc-mainline/configure
--build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=mips64el-linux-gnu
--enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch
--enable-checking=yes,rtl --disable-multilib --with-gnu-as --with-gnu-ld
--enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu
--enable-__cxa_atexit --disable-nls --prefix=/opt/codesourcery --disable-libffi
--disable-libquadmath --enable-languages=c
--with-sysroot=/opt/codesourcery/mips64el-linux-gnu/libc
--with-build-sysroot=/scratch/vries/b4/ref-mips64-ml-11-11-21/install/mips64el-linux-gnu/libc
--with-gmp=/scratch/vries/b4/ref-mips64-ml-11-11-21/obj/host-libs-mainline-0-mips64el-linux-gnu-i686-pc-linux-gnu/usr
--with-mpfr=/scratch/vries/b4/ref-mips64-ml-11-11-21/obj/host-libs-mainline-0-mips64el-linux-gnu-i686-pc-linux-gnu/usr
--with-mpc=/scratch/vries/b4/ref-mips64-ml-11-11-21/obj/host-libs-mainline-0-mips64el-linux-gnu-i686-pc-linux-gnu/usr
--with-ppl=/scratch/vries/b4/ref-mips64-ml-11-11-21/obj/host-libs-mainline-0-mips64el-linux-gnu-i686-pc-linux-gnu/usr
--with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm'
--with-cloog=/scratch/vries/b4/ref-mips64-ml-11-11-21/obj/host-libs-mainline-0-mips64el-linux-gnu-i686-pc-linux-gnu/usr
--with-libelf=/scratch/vries/b4/ref-mips64-ml-11-11-21/obj/host-libs-mainline-0-mips64el-linux-gnu-i686-pc-linux-gnu/usr
--disable-libgomp --enable-poison-system-directories
--with-build-time-tools=/scratch/vries/b4/ref-mips64-ml-11-11-21/install/mips64el-linux-gnu/bin
--with-build-time-tools=/scratch/vries/b4/ref-mips64-ml-11-11-21/install/mips64el-linux-gnu/bin
...


[Bug c++/51265] [4.6/4.7 Regression] ICE in finish_decltype_type, at cp/semantics.c:5244

2011-11-22 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51265

--- Comment #3 from Paolo Carlini paolo.carlini at oracle dot com 2011-11-22 
15:48:12 UTC ---
Even:

struct Funny;

templatetypename X
void c();

templatetypename X
void xx()
{
  cdecltype(ff)();
}

int main()
{
  xxint(Funny::*)(int)();
}


[Bug c++/51265] [4.6/4.7 Regression] ICE in finish_decltype_type, at cp/semantics.c:5244

2011-11-22 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51265

--- Comment #4 from Paolo Carlini paolo.carlini at oracle dot com 2011-11-22 
15:50:04 UTC ---
oops, scratch the latter ;)


[Bug c++/51270] constness violation is accepted without any warning but leads to a required function call being eliminated during optimization

2011-11-22 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51270

--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org 2011-11-22 
15:50:33 UTC ---
If you eliminate the obfuscation you get this:

int* faulty_compiled_function(char* val)
{
  char const* tmp = val;
  return (int*)tmp;
}

char* input = (char*)0x1234;
int* output = (int*)0x1234;

int main(int argc, char* argv[])
{
  return (faulty_compiled_function(input) == output ? 0 : 1);
}

Which correctly warns you about the problem even without -Wall

If there's a bug in GCC it's that it doesn't see through two layers of
functions to determine that you're returning a reference to a temporary.


[Bug c++/51270] constness violation is accepted without any warning but leads to a required function call being eliminated during optimization

2011-11-22 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51270

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||diagnostic

--- Comment #4 from Jonathan Wakely redi at gcc dot gnu.org 2011-11-22 
15:55:41 UTC ---
This variation is a bit closer to your original and doesn't get a warning:

int* faulty_compiled_function(char* val)
{
  char const* const tmp = (const char*)val;
  return (int*)tmp;
}

So maybe there is a missed warning bug.  Other compilers miss it too.


[Bug middle-end/51258] 64-bit gcc.dg/atomic-compare-exchange-5.c link failure on 32-bit Solaris/x86

2011-11-22 Thread amacleod at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51258

--- Comment #4 from Andrew Macleod amacleod at redhat dot com 2011-11-22 
16:07:52 UTC ---
I built a compiler in my linux box with a target of i386-apple-darwin.

during expanding an atomic_exchange it fails the call to
can_compare_and_swap_p(TImode, true).

It returns CODE_FOR_nothing for both cases:

icode = direct_optab_handler (atomic_compare_and_swap_optab, mode);
if (icode != CODE_FOR_nothing)
  return true;

icode = optab_handler (sync_compare_and_swap_optab, mode);
if (icode != CODE_FOR_nothing)
  return true;

so something in the config/i386/sync.md file must be wrong for a 32 bit
compiler which specifies -m64.  It does not set up the optab table for a TI
mode compare_and_swap.


[Bug tree-optimization/51074] No constant folding performed for VEC_PERM_EXPR, VEC_INTERLEAVE*EXPR, VEC_EXTRACT*EXPR

2011-11-22 Thread rth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51074

--- Comment #8 from Richard Henderson rth at gcc dot gnu.org 2011-11-22 
16:08:17 UTC ---
No, Jakub, vector elements are in memory order.  There is no adjustment
to be made here.

Unfortunately ppc represents its interleave patterns non-standard, but
one can interpret.  E.g. the ultimate implementation of
vec_interleave_low_v4si:

(define_insn altivec_vmrglw
  [(set (match_operand:V4SI 0 register_operand =v)
(vec_merge:V4SI
 (vec_select:V4SI (match_operand:V4SI 1 register_operand v)
  (parallel [(const_int 2)
 (const_int 0)
 (const_int 3)
 (const_int 1)]))
 (vec_select:V4SI (match_operand:V4SI 2 register_operand v)
  (parallel [(const_int 0)
 (const_int 2)
 (const_int 1)
 (const_int 3)]))
 (const_int 5)))]

By my reading that's { 4+0, 0, 4+1, 1 } if you consider op2 to be +4.
Which is ... argument reversed from the normal { 0, 4, 1, 5 } that we
expected, but certainly not the { 2, 6, 3, 7 } that you were going to
generate with that patch.

As for the swapped operands... that does seem to correlate with the
actual output quoted in comment #6.  It seems like we need to dig and
figure out if the rtl is wrong, or if arguments got swapped along the
N stage path between vector.md and the ultimate altivec.md pattern.


[Bug fortran/51268] [Regression] A subroutine can not know anymore its own interface

2011-11-22 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51268

Tobias Burnus burnus at gcc dot gnu.org changed:

   What|Removed |Added

 CC||burnus at gcc dot gnu.org

--- Comment #1 from Tobias Burnus burnus at gcc dot gnu.org 2011-11-22 
16:09:19 UTC ---
Well, that one now gets a diagnostic and didn't get one before is a change, but
the question is whether it is a progression or a regression.

NAG prints:
  Error: line 15: USE MYINTERFACES in program-unit MYSUB imports symbol MYSUB

g95 prints:
  Module 'myinterfaces' at (1) redefines the current program unit 'mysub'

pathf95 prints:
  MYSUB is the name of this program unit, therefore it must not be use 
  associated from module MYINTERFACES.

openf95 prints:
  MYSUB is the name of this program unit, therefore it must not be use 
  associated from module MYINTERFACES.

crayftn prints:
  MYSUB is the name of this program unit, therefore it must not be use 
  associated from module MYINTERFACES.

While ifort prints (only with -stand f95/f03):
  warning #7925: An interface-block in a subprogram shall not contain an
  interface-body for a procedure defined by that subprogram.   [MYSUB]

And pgf90 -Minfo=all and sunf95 -w0 simply silently accept the program.


I think the program is indeed invalid - but if needed, I can check the
standard. One could consider allowing it with a warning (as ifort does), but I
am not sure one should.


[Bug tree-optimization/51074] No constant folding performed for VEC_PERM_EXPR, VEC_INTERLEAVE*EXPR, VEC_EXTRACT*EXPR

2011-11-22 Thread pthaugen at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51074

--- Comment #9 from Pat Haugen pthaugen at gcc dot gnu.org 2011-11-22 
16:15:09 UTC ---
(In reply to comment #7)
 Created attachment 25878 [details]
 gcc47-pr51074-be.patch
 
 Big endian fix, untested.

This patch fixes the issue on both my testcase and the cpu2000 benchmark.


[Bug target/51134] [4.7 Regression] x86 memset/memcpy expansion is broken

2011-11-22 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51134

--- Comment #11 from H.J. Lu hjl.tools at gmail dot com 2011-11-22 16:34:54 
UTC ---
(In reply to comment #10)
 Created attachment 25882 [details]
 Patch for new memset/memcpy implementation
 
 (In reply to comment #9)
  Regressions caused by the new memset/memcpy expansion are
  
  FAIL: 27_io/basic_filebuf/seekoff/wchar_t/1.cc execution test
  FAIL: 27_io/basic_filebuf/seekpos/wchar_t/9874.cc execution test
  FAIL: 27_io/manipulators/basefield/char/1.cc execution test
  FAIL: 27_io/manipulators/basefield/wchar_t/1.cc execution test
  FAIL: 27_io/objects/wchar_t/12.cc execution test
  FAIL: 27_io/objects/wchar_t/13.cc execution test
  FAIL: events run
  FAIL: gcc.target/i386/cleanup-1.c execution test
  FAIL: gcc.target/i386/cleanup-2.c execution test
  FAIL: gcc.target/i386/pr34077.c (internal compiler error)
  FAIL: gcc.target/i386/pr34077.c (internal compiler error)
  FAIL: gcc.target/i386/pr34077.c (test for excess errors)
  FAIL: gcc.target/i386/pr34077.c (test for excess errors)
  FAIL: gfortran.fortran-torture/execute/arrayarg.f90 execution,  -O2
  -fomit-frame-pointer -finline-functions -funroll-loops
 
 With the attached patch fails on PR34077 and arrayarg.f90 are fixed, fails on
 cleanup-tests are probably caused by incorrect testcase (see
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49503).

Do you have a patch for those C++ and Java regressions?


[Bug c++/51270] missed warning about returning reference to temporary

2011-11-22 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51270

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

Summary|constness violation is  |missed warning about
   |accepted without any|returning reference to
   |warning but leads to a  |temporary
   |required function call  |
   |being eliminated during |
   |optimization|

--- Comment #5 from Jonathan Wakely redi at gcc dot gnu.org 2011-11-22 
16:41:16 UTC ---
Very similar to my PR 49974.


Still no warning even without the (highly questionable) cast:

char const* const faulty_compiled_function(char* val)
{
  char const* const tmp = (const char*)val;
  return tmp;
}

N.B. Clang warns for that variation (but not the others):

faulty_optimization_of_invalid_const_usage.cpp:4:10: warning: returning
  reference to local temporary object [-Wreturn-stack-address]
  return tmp;
 ^~~
faulty_optimization_of_invalid_const_usage.cpp:3:22: note: binding reference
  variable 'tmp' here
  char const* const tmp = (const char*)val;
 ^ 


[Bug c++/51143] [C++11][DR 1159] Alias template allows class definition

2011-11-22 Thread dodji at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51143

--- Comment #3 from Dodji Seketeli dodji at gcc dot gnu.org 2011-11-22 
16:41:18 UTC ---
Author: dodji
Date: Tue Nov 22 16:41:10 2011
New Revision: 181626

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=181626
Log:
PR c++/51143 - Alias template allows class definition

gcc/cp

PR c++/51143
* parser.c (cp_parser_alias_declaration): Don't allow type
definition in templates.

gcc/testsuite

PR c++/51143
* g++.dg/cpp0x/alias-decl-16.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/alias-decl-16.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/parser.c
trunk/gcc/testsuite/ChangeLog


[Bug c++/51143] [C++11][DR 1159] Alias template allows class definition

2011-11-22 Thread dodji at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51143

Dodji Seketeli dodji at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #4 from Dodji Seketeli dodji at gcc dot gnu.org 2011-11-22 
16:42:11 UTC ---
This should be fixed in trunk (4.7) now.


[Bug target/51134] [4.7 Regression] x86 memset/memcpy expansion is broken

2011-11-22 Thread michael.v.zolotukhin at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51134

--- Comment #12 from Michael Zolotukhin michael.v.zolotukhin at gmail dot com 
2011-11-22 16:54:35 UTC ---
 Do you have a patch for those C++ and Java regressions?

What regressions do you mean exactly? I managed to fix the bootstraps
(with sse_loop enabled again), but there are still some fails, so I
don't send the patch.

Currently I don't have a fix that solves all the problems - the
attached to previous letter patch fixes some of them, but there are
other fails (in 27_io and in some specs2k). I'm continuing debugging
and hope to finish fixes soon.

On 22 November 2011 20:34, hjl.tools at gmail dot com
gcc-bugzi...@gcc.gnu.org wrote:
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51134

 --- Comment #11 from H.J. Lu hjl.tools at gmail dot com 2011-11-22 16:34:54 
 UTC ---
 (In reply to comment #10)
 Created attachment 25882 [details]
 Patch for new memset/memcpy implementation

 (In reply to comment #9)
  Regressions caused by the new memset/memcpy expansion are
 
  FAIL: 27_io/basic_filebuf/seekoff/wchar_t/1.cc execution test
  FAIL: 27_io/basic_filebuf/seekpos/wchar_t/9874.cc execution test
  FAIL: 27_io/manipulators/basefield/char/1.cc execution test
  FAIL: 27_io/manipulators/basefield/wchar_t/1.cc execution test
  FAIL: 27_io/objects/wchar_t/12.cc execution test
  FAIL: 27_io/objects/wchar_t/13.cc execution test
  FAIL: events run
  FAIL: gcc.target/i386/cleanup-1.c execution test
  FAIL: gcc.target/i386/cleanup-2.c execution test
  FAIL: gcc.target/i386/pr34077.c (internal compiler error)
  FAIL: gcc.target/i386/pr34077.c (internal compiler error)
  FAIL: gcc.target/i386/pr34077.c (test for excess errors)
  FAIL: gcc.target/i386/pr34077.c (test for excess errors)
  FAIL: gfortran.fortran-torture/execute/arrayarg.f90 execution,  -O2
  -fomit-frame-pointer -finline-functions -funroll-loops

 With the attached patch fails on PR34077 and arrayarg.f90 are fixed, fails on
 cleanup-tests are probably caused by incorrect testcase (see
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49503).

 Do you have a patch for those C++ and Java regressions?


[Bug tree-optimization/51074] No constant folding performed for VEC_PERM_EXPR, VEC_INTERLEAVE*EXPR, VEC_EXTRACT*EXPR

2011-11-22 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51074

--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org 2011-11-22 
16:57:39 UTC ---
Author: jakub
Date: Tue Nov 22 16:57:33 2011
New Revision: 181627

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=181627
Log:
PR tree-optimization/51074
* fold-const.c (fold_binary_loc): Fix up VEC_INTERLEAVE_*_EXPR
handling for BYTES_BIG_ENDIAN.
* optabs.c (can_vec_perm_for_code_p): Likewise.

* gcc.dg/vect/pr51074.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/vect/pr51074.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/fold-const.c
trunk/gcc/optabs.c
trunk/gcc/testsuite/ChangeLog


[Bug tree-optimization/51179] poor vectorization on interlagos.

2011-11-22 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51179

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org 2011-11-22 
17:13:26 UTC ---
Your testcase doesn't ressemble the original, the inner for cycles need
clearing of the iteration variable.
double C[10][4], B[10][10], A[10][4];

void
test (void)
{
  int i = 0, j = 0, l = 0;

  for (l = 0; l  10; l++)
for (j = 0; j  10; j += 2)
  for (i = 0; i  4; i++)
{
  C[j + 0][i] = C[j + 0][i] + A[l][i] * B[j + 0][l];
  C[j + 1][i] = C[j + 1][i] + A[l][i] * B[j + 1][l];
}
}

is IMHO just a matter whether graphite can -floop-interchange this or not.
If you swap manually the l and j for lines, the generated code looks better,
though for some reason we unroll even the l loop which increases register
pressure too much.


[Bug bootstrap/50237] [4.7 regression] bootstrap comparison failure for libcpp/lex.o

2011-11-22 Thread ro at CeBiTec dot Uni-Bielefeld.DE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50237

--- Comment #20 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot 
Uni-Bielefeld.DE 2011-11-22 17:21:38 UTC ---
HJ,

with binutils 2.22 now released, could you please work to get this
fixed?  IMO binutils releases need to work for bootstrapping gcc out of
the box without any workarounds on the part of the installer.

Thanks.
Rainer


[Bug bootstrap/50237] [4.7 regression] bootstrap comparison failure for libcpp/lex.o

2011-11-22 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50237

--- Comment #21 from H.J. Lu hjl.tools at gmail dot com 2011-11-22 17:52:52 
UTC ---
(In reply to comment #20)
 HJ,
 
 with binutils 2.22 now released, could you please work to get this
 fixed?  IMO binutils releases need to work for bootstrapping gcc out of
 the box without any workarounds on the part of the installer.
 

There is not much I can do when there are 2 binutils used.


[Bug bootstrap/50237] [4.7 regression] bootstrap comparison failure for libcpp/lex.o

2011-11-22 Thread ro at CeBiTec dot Uni-Bielefeld.DE
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50237

--- Comment #22 from ro at CeBiTec dot Uni-Bielefeld.DE ro at CeBiTec dot 
Uni-Bielefeld.DE 2011-11-22 17:55:15 UTC ---
But this is the common case: you cannot expect or require the bootstrap
compiler to use the same linker as you configure with.  This is a
bootstrap failure which is going to get us much noise if not fixed.

Rainer


[Bug bootstrap/50888] Bootstrap failure in libjava against latest git glibc

2011-11-22 Thread aph at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50888

--- Comment #8 from Andrew Haley aph at gcc dot gnu.org 2011-11-22 17:55:51 
UTC ---
(In reply to comment #7)

 isspace is actually marked as not throwing, i.e. throw() in C++.  In glibc
 2.15+ it happens to be implemented as throw() inline function which calls
 another function (which is throw() too), the problem is that with
 -fnon-call-exceptions the compiler doesn't know the function pointer is always
 non-NULL and assumes the call instruction might throw on SIGSEGV/SIGILL etc. 
 That will always work, but the compiler must assume it doesn't always, thus it
 needs -lsupc++ support with which libjava is not linked.

Thank you, all is now clear.  I wonder if it might make sense to fix this
in a more general way than simply not calling isspace().  Perhaps we could
provide a weak __cxa_call_unexpected, or find some way of persuading g++ not
to emit such a call.


[Bug bootstrap/50237] [4.7 regression] bootstrap comparison failure for libcpp/lex.o

2011-11-22 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50237

--- Comment #23 from H.J. Lu hjl.tools at gmail dot com 2011-11-22 18:03:09 
UTC ---
(In reply to comment #22)
 But this is the common case: you cannot expect or require the bootstrap
 compiler to use the same linker as you configure with.  This is a
 bootstrap failure which is going to get us much noise if not fixed.
 

Have you tried the patch in comment 18?


[Bug c++/51270] missed warning about returning reference to temporary

2011-11-22 Thread michiel_dewilde at agilent dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51270

--- Comment #6 from Michiel De Wilde michiel_dewilde at agilent dot com 
2011-11-22 18:20:44 UTC ---
Hi Jonathan, thanks for the quick analysis.

I did not realize that char *  and char const *  are not
reference-compatible, leading to a temporary being introduced when initializing
a char const * const  reference from a char * .

Therefore this is not a true gcc bug.

It would be nice though to have a warning for this case, i.e. when only the
different constnesses after pointer dereferencing are responsible for
temporaries being created for const lvalue initializations from other lvalues.
I understand this may be difficult.
Improved tracking of the reference to the temporary would also be nice.

Thanks,

Michiel


[Bug tree-optimization/51179] poor vectorization on interlagos.

2011-11-22 Thread Joost.VandeVondele at mat dot ethz.ch
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51179

--- Comment #4 from Joost VandeVondele Joost.VandeVondele at mat dot ethz.ch 
2011-11-22 18:34:03 UTC ---
Created attachment 25887
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25887
general code

the more general code used to find the most efficient matrix multiply for sizes
4,10,10


[Bug tree-optimization/51179] poor vectorization on interlagos.

2011-11-22 Thread Joost.VandeVondele at mat dot ethz.ch
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51179

--- Comment #5 from Joost VandeVondele Joost.VandeVondele at mat dot ethz.ch 
2011-11-22 18:34:48 UTC ---
(In reply to comment #3)
 is IMHO just a matter whether graphite can -floop-interchange this or not.
 If you swap manually the l and j for lines, the generated code looks better,
 though for some reason we unroll even the l loop which increases register
 pressure too much.

Unfortunately, the issue is not just loop ordering or loop unrolling. I have a
code generator which tries systematically all possible loop orderings, and all
possible unroll factors. For this testcase (matrix sizes 4,10,10) the best cray
output (this one) runs at 10.8 Gflops. The best gcc compiled version runs at
4.7 Gflops (smm_dnn_4_10_10_1_1_10_2). I attach the test code, which I use for
testing.


[Bug target/50906] e500 exception unwinding under -Os causes SIGSEGV

2011-11-22 Thread Kyle.D.Moffett at boeing dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50906

--- Comment #17 from Kyle Moffett Kyle.D.Moffett at boeing dot com 2011-11-22 
18:50:20 UTC ---
Ok, a new kernel based on 3.2-rc1 resolved my crashing issues entirely.  I
wasn't too worried about my DDR clocks since I have ECC memory and EDAC never
reported any errors.

Using the gcc-4.6 fix on top of 4.6.2, I get the following diffs in the
testsuite summary between 4.6.2-unpatched and 4.6.2-patched.  I'm in the
process of running a second build with BOOT_CFLAGS=-Os, but I'll be out of
the office for Thanksgiving until next Monday and probably won't be able to
check on it during that time.

These appear to be EH bugs fixed by your changes:
-FAIL: g++.dg/torture/stackalign/eh-vararg-1.C -Os execution test
-FAIL: g++.dg/torture/stackalign/eh-vararg-2.C -Os execution test
-FAIL: g++.dg/torture/stackalign/eh-vararg-1.C -Os execution test
-FAIL: g++.dg/torture/stackalign/eh-vararg-2.C -Os execution test

These are tests that shouldn't be run on e500/SPE as they build with
-mcpu=power5.  These tests fail with SIGILL while executing an lfd opcode;
I'm not sure why they passed before:
+FAIL: gcc.target/powerpc/ppc-fma-5.c execution test
+FAIL: gfortran.dg/pr47614.f  -O0 execution test
+FAIL: gfortran.dg/pr47614.f  -O1 execution test
+FAIL: gfortran.dg/pr47614.f  -O2 execution test
+FAIL: gfortran.dg/pr47614.f  -O3 -fomit-frame-pointer execution test
+FAIL: gfortran.dg/pr47614.f  -O3 -fomit-frame-pointer -funroll-loops
+FAIL: gfortran.dg/pr47614.f  -O3 -fomit-frame-pointer -funroll-all-loops
-finline-functions execution test
+FAIL: gfortran.dg/pr47614.f  -O3 -g execution test
+FAIL: gfortran.dg/pr47614.f  -Os execution test

There's no other delta in the testsuite summary, so I feel pretty confident
that there were no regressions introduced by this patch for e500 at least.

Thanks again for your help!

Cheers,
Kyle Moffett


[Bug middle-end/51258] 64-bit gcc.dg/atomic-compare-exchange-5.c link failure on 32-bit Solaris/x86

2011-11-22 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51258

--- Comment #5 from Uros Bizjak ubizjak at gmail dot com 2011-11-22 18:52:56 
UTC ---
(In reply to comment #4)

 so something in the config/i386/sync.md file must be wrong for a 32 bit
 compiler which specifies -m64.  It does not set up the optab table for a TI
 mode compare_and_swap.

-mcx16 ?


[Bug other/51272] New: ld: Unsatisfied symbol _ITM_registerTMCloneTable in file /test/gnu/gcc/objdir/

2011-11-22 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51272

 Bug #: 51272
   Summary: ld: Unsatisfied symbol _ITM_registerTMCloneTable in
file /test/gnu/gcc/objdir/
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: other
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: dang...@gcc.gnu.org
  Host: hppa64-hp-hpux11.11
Target: hppa64-hp-hpux11.11
 Build: hppa64-hp-hpux11.11


In stage1 building libgomp:

configure:3688: /test/gnu/gcc/objdir/./gcc/xgcc -B/test/gnu/gcc/objdir/./gcc/
-B/opt/gnu64/gcc/gcc-4.7/hppa64-hp-hpux11.11/bin/
-B/opt/gnu64/gcc/gcc-4.7/hppa64-hp-hpux11.11/lib/ -isystem
/opt/gnu64/gcc/gcc-4.7/hppa64-hp-hpux11.11/include -isystem
/opt/gnu64/gcc/gcc-4.7/hppa64-hp-hpux11.11/sys-include-g -O2   conftest.c 
5
ld: Unsatisfied symbol _ITM_registerTMCloneTable in file
/test/gnu/gcc/objdir/./gcc/crtbegin.o
ld: Unsatisfied symbol _ITM_deregisterTMCloneTable in file
/test/gnu/gcc/objdir/./gcc/crtbegin.o
2 errors.
collect2: error: ld returned 1 exit status
configure:3692: $? = 1
configure:3729: result:
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME GNU OpenMP Runtime Library
| #define PACKAGE_TARNAME libgomp
| #define PACKAGE_VERSION 1.0
| #define PACKAGE_STRING GNU OpenMP Runtime Library 1.0
| #define PACKAGE_BUGREPORT 
| #define PACKAGE_URL http://www.gnu.org/software/libgomp/;
| #define PACKAGE libgomp
| #define VERSION 1.0
| /* end confdefs.h.  */
|
| int
| main ()
| {
|
|   ;
|   return 0;
| }
configure:3735: error: in `/test/gnu/gcc/objdir/hppa64-hp-hpux11.11/libgomp':
configure:3738: error: C compiler cannot create executables

2011-11-21  Richard Henderson  r...@redhat.com

* crtstuff.c (USE_TM_CLONE_REGISTRY): Default to 1 on ELF.
(__TMC_LIST__, __TMC_END__): New.
(__do_global_dtors_aux): Call _ITM_deregisterTMCloneTable.
(__do_global_dtors): Likewise.
(frame_dummy): Call _ITM_registerTMCloneTable.
(__do_global_ctors_1): Likewise.


[Bug c++/51270] missed warning about returning reference to temporary

2011-11-22 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51270

--- Comment #7 from Jonathan Wakely redi at gcc dot gnu.org 2011-11-22 
18:56:37 UTC ---
I don't think the warning should be restricted to conversions that only involve
different const-ness.

Here's a simpler testcase for the missed warning:

const int f(long l)
{
  const int i = l;
  return i;
}

See also PR 51066


[Bug fortran/50981] [4.4/4.5/4.6/4.7 Regression] Wrong-code for scalarizing ELEMENTAL call with absent OPTIONAL argument

2011-11-22 Thread mikael at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50981

Mikael Morin mikael at gcc dot gnu.org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot   |mikael at gcc dot gnu.org
   |gnu.org |

--- Comment #4 from Mikael Morin mikael at gcc dot gnu.org 2011-11-22 
18:57:52 UTC ---
I will take care of this one after mid-december.


[Bug fortran/51250] [4.7 Regression] Bug with SUM(,dim,mask)

2011-11-22 Thread mikael at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51250

Mikael Morin mikael at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Mikael Morin mikael at gcc dot gnu.org 2011-11-22 
19:02:27 UTC ---
I will take care of this one after mid-december.

Beside the workaround proposed by Tobias, you can use a variable instead of a
constant for SUM's DIM argument.
Or you can patch gfc_inline_intrinsic_function_p (in trans-intrinsic.c) to
return false in the SUM case.


[Bug testsuite/51258] 64-bit gcc.dg/atomic-compare-exchange-5.c link failure on 32-bit Solaris/x86

2011-11-22 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51258

Uros Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

  Component|middle-end  |testsuite

--- Comment #6 from Uros Bizjak ubizjak at gmail dot com 2011-11-22 19:22:54 
UTC ---
It is a testsuite problem:

/* { dg-options -mcx16 { target { x86_64-*-* } } } */

Something is missing there ... ;)


[Bug testsuite/51258] 64-bit gcc.dg/atomic-compare-exchange-5.c link failure on 32-bit Solaris/x86

2011-11-22 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51258

--- Comment #7 from Uros Bizjak ubizjak at gmail dot com 2011-11-22 19:29:20 
UTC ---
Can somebody please test following change:

--cut here--
Index: atomic-exchange-5.c
===
--- atomic-exchange-5.c (revision 181628)
+++ atomic-exchange-5.c (working copy)
@@ -2,7 +2,7 @@
values with each valid memory model.  */
 /* { dg-do run } */
 /* { dg-require-effective-target sync_int_128 } */
-/* { dg-options -mcx16 { target { x86_64-*-* } } } */
+/* { dg-options -mcx16 { target { i?86-*-* x86_64-*-* } } } */

 /* Test the execution of the __atomic_X builtin for a 16 byte value.  */

--cut here--


[Bug testsuite/51258] 64-bit gcc.dg/atomic-compare-exchange-5.c link failure on 32-bit Solaris/x86

2011-11-22 Thread amacleod at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51258

--- Comment #8 from Andrew Macleod amacleod at redhat dot com 2011-11-22 
19:34:03 UTC ---
yes, presuming that it works, which I think it will, that will have to be
applied to all the gcc.dg/atomic*-5.c files, as well as the
gcc.dg/simulate-thread/atomic-*-int128.c files.


[Bug c++/51270] missed warning about returning reference to temporary

2011-11-22 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51270

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-11-22
 Ever Confirmed|0   |1

--- Comment #8 from Jonathan Wakely redi at gcc dot gnu.org 2011-11-22 
19:39:27 UTC ---
since at least one other compiler (clang) warns about the testcase in comment 7
I'm going to confirm this


[Bug middle-end/51273] New: ICE: vector VEC(inline_summary_t,base) index domain error, in inline_summary at ipa-inline.h:193 with -O -fgnu-tm, transaction_safe and overloaded contructor

2011-11-22 Thread zsojka at seznam dot cz
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51273

 Bug #: 51273
   Summary: ICE: vector VEC(inline_summary_t,base) index domain
error, in inline_summary at ipa-inline.h:193 with -O
-fgnu-tm, transaction_safe and overloaded contructor
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: zso...@seznam.cz
CC: amacl...@redhat.com
  Host: x86_64-pc-linux-gnu
Target: x86_64-pc-linux-gnu


Created attachment 25888
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25888
reduced testcase

Compiler output:
$ gcc -O -fgnu-tm testcase.C 
testcase.C:13:1: internal compiler error: vector VEC(inline_summary_t,base)
index domain error, in inline_summary at ipa-inline.h:193
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html for instructions.

Tested revisions:
r181609 - crash


[Bug fortran/51267] loop optimization error using LOC function

2011-11-22 Thread priv123 at hotmail dot fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51267

--- Comment #2 from Mathieu priv123 at hotmail dot fr 2011-11-22 20:22:15 UTC 
---
Sure, and we are especially fans of -fbound-checks but we can not use it on
half of the code because of this usage.

For the story :
{
I reproduced here with this small code a part of the 1.e6 lines of our code
(see www.code-aster.org for more interest). It's 20 years old but it's always
evolving every week.

This usage (with an array allocated elsewhere and used in read/write using an
offset computed by LOC) allowed to simulate dynamic allocations and out-of-core
memory management in f77.
So if we are working to use current allocation management it requires to change
a lot of lines of code and the refactoring will be done part by part...
}

And just try this, it works :
c  do 12 i=1,3*n
cius(iad+i) = -1
c 12   continue
but not the unrolled loop.

That's why I think that the optimizer fails on that loop (and probably only
when the array of dimension(1)).

Do you know what does change between 4.5 and 4.6 that can explain the
difference of behavior ?
Any option to tune the behavior ?

Thx


[Bug c++/51265] [4.6/4.7 Regression] ICE in finish_decltype_type, at cp/semantics.c:5244

2011-11-22 Thread paolo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51265

--- Comment #5 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org 
2011-11-22 20:48:38 UTC ---
Author: paolo
Date: Tue Nov 22 20:48:33 2011
New Revision: 181638

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

PR c++/51265
* semantics.c (finish_decltype_type): Handle PTRMEM_CST.

/testsuite
2011-11-22  Paolo Carlini  paolo.carl...@oracle.com

PR c++/51265
* g++.dg/cpp0x/decltype36.C: New.

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


[Bug rtl-optimization/50764] [4.7 Regression] ICE: in maybe_record_trace_start, at dwarf2cfi.c:2243 with -O2 -fsched2-use-superblocks -ftree-tail-merge

2011-11-22 Thread vries at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50764

--- Comment #12 from vries at gcc dot gnu.org 2011-11-22 20:55:06 UTC ---
Author: vries
Date: Tue Nov 22 20:55:01 2011
New Revision: 181639

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=181639
Log:
2011-11-22  Tom de Vries  t...@codesourcery.com

PR rtl-optimization/50764
* sched-deps.c (sched_analyze_insn): Make sure frame-related insns are
not moved past preceding jump.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/sched-deps.c


[Bug rtl-optimization/50764] [4.7 Regression] ICE: in maybe_record_trace_start, at dwarf2cfi.c:2243 with -O2 -fsched2-use-superblocks -ftree-tail-merge

2011-11-22 Thread vries at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50764

--- Comment #13 from vries at gcc dot gnu.org 2011-11-22 20:55:13 UTC ---
Author: vries
Date: Tue Nov 22 20:55:10 2011
New Revision: 181640

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=181640
Log:
2011-11-22  Tom de Vries  t...@codesourcery.com

PR rtl-optimization/50764
* gcc.dg/pr50764.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/pr50764.c
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug fortran/51267] loop optimization error using LOC function

2011-11-22 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51267

--- Comment #3 from Dominique d'Humieres dominiq at lps dot ens.fr 2011-11-22 
20:56:43 UTC ---
According my archived builds
r165415 (20101013) gives the result you expect
r165758 (20101021) does not.

 Any option to tune the behavior ?

-fno-tree-ds seems to do the trick: from the C manual

http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#Optimize-Options

 -ftree-dce
 Perform dead code elimination (DCE) on trees. This flag is enabled by default 
 at -O and higher.


[Bug rtl-optimization/50764] [4.7 Regression] ICE: in maybe_record_trace_start, at dwarf2cfi.c:2243 with -O2 -fsched2-use-superblocks -ftree-tail-merge

2011-11-22 Thread vries at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50764

vries at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED

--- Comment #14 from vries at gcc dot gnu.org 2011-11-22 21:01:02 UTC ---
Patch and test-case checked in, marking resolved fixed.


[Bug fortran/51267] loop optimization error using LOC function

2011-11-22 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51267

--- Comment #4 from Dominique d'Humieres dominiq at lps dot ens.fr 2011-11-22 
21:03:51 UTC ---
 -fno-tree-ds seems to do the trick:

sorry, it is -fno-tree-dse and

 -ftree-dse
 Perform dead store elimination (DSE) on trees. A dead store is a store into a 
 memory location 
 which will later be overwritten by another store without any intervening 
 loads. 
 In this case the earlier store can be deleted. This flag is enabled by 
 default at -O and higher. 

(it makes more sense;-).


[Bug tree-optimization/51179] poor vectorization on interlagos.

2011-11-22 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51179

--- Comment #6 from Dominique d'Humieres dominiq at lps dot ens.fr 2011-11-22 
21:08:47 UTC ---
 ... I attach the test code, which I use for testing.

Compiling the code with -O3 gives the following ICE

pr51179_1.f90: In function 'tiny_find':
pr51179_1.f90:3594:0: internal compiler error: in check_loop_closed_ssa_use, at
tree-ssa-loop-manip.c:422

(if nobody beats me, I'll try to reduce the code and open a new pr). On a
2.5Ghz Core2Duo, I get 4.1Gflops with -O2 -ftree-vectorize.


[Bug libstdc++/51181] [4.7 regression] libstdc++.so __sync_sub_and_fetch_4 linkage error causing many test suite failures on m68k-linux

2011-11-22 Thread cestrauss at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51181

Cesar Strauss cestrauss at gmail dot com changed:

   What|Removed |Added

 CC||cestrauss at gmail dot com

--- Comment #10 from Cesar Strauss cestrauss at gmail dot com 2011-11-22 
21:32:33 UTC ---
*** Bug 51140 has been marked as a duplicate of this bug. ***


[Bug libstdc++/51140] libstdc++-v3/libsupc++/eh_tm.cc:48: undefined reference to `___sync_sub_and_fetch_4'

2011-11-22 Thread cestrauss at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51140

Cesar Strauss cestrauss at gmail dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE

--- Comment #4 from Cesar Strauss cestrauss at gmail dot com 2011-11-22 
21:32:33 UTC ---
(In reply to comment #3)
 I suppose this is a duplicate of PR51181

Indeed. The fix for PR51181 also fixed the build failure I reported here.

Thanks,
Cesar

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


[Bug c++/51265] [4.6/4.7 Regression] ICE in finish_decltype_type, at cp/semantics.c:5244

2011-11-22 Thread paolo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51265

--- Comment #6 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org 
2011-11-22 21:37:27 UTC ---
Author: paolo
Date: Tue Nov 22 21:37:24 2011
New Revision: 181641

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

PR c++/51265
* semantics.c (finish_decltype_type): Handle PTRMEM_CST.

/testsuite
2011-11-22  Paolo Carlini  paolo.carl...@oracle.com

PR c++/51265
* g++.dg/cpp0x/decltype36.C: New.

Added:
branches/gcc-4_6-branch/gcc/testsuite/g++.dg/cpp0x/decltype36.C
Modified:
branches/gcc-4_6-branch/gcc/cp/ChangeLog
branches/gcc-4_6-branch/gcc/cp/semantics.c
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog


[Bug c++/51265] [4.6/4.7 Regression] ICE in finish_decltype_type, at cp/semantics.c:5244

2011-11-22 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51265

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.6.3

--- Comment #7 from Paolo Carlini paolo.carlini at oracle dot com 2011-11-22 
21:38:37 UTC ---
Fixed for 4.6.3 and mainline.


[Bug ada/49084] [4.7 regression] bootstrap failure with Ada enabled

2011-11-22 Thread cestrauss at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49084

--- Comment #9 from Cesar Strauss cestrauss at gmail dot com 2011-11-22 
21:49:37 UTC ---
(In reply to comment #7)
 Hmm, this is due usage of %lld in printf-formatter.  Does following patch 
 fix your issue?

I did encounter the build failure reported in comment #6 (unknown conversion
type character 'l' in format) on i386-pc-mingw32, and the patch given in
comment #7 did fix this failure for me.

A similar solution is also needed in gcc/ira-color.c
(print_hard_regs_subforest), where %lld is also used.

This allowed the build to continue to the point where I could reproduce the
failure described in comment #8.


[Bug c++/51222] [C++11][SFINAE] Unevaluated combined delete new expression completely broken

2011-11-22 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51222

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2011-11-22
 Blocks|51185   |
 Ever Confirmed|0   |1

--- Comment #3 from Paolo Carlini paolo.carlini at oracle dot com 2011-11-22 
21:50:48 UTC ---
Confirmed indeed (and cleared Blocks field, PR51185 is fixed anyway).


[Bug fortran/51218] [4.6/4.7 Regression] Potential optimization bug due to implicit_pure?

2011-11-22 Thread anlauf at gmx dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51218

--- Comment #20 from Harald Anlauf anlauf at gmx dot de 2011-11-22 21:56:32 
UTC ---
(In reply to comment #17)
 Untested patch:
 
 --- a/gcc/fortran/resolve.c
 +++ b/gcc/fortran/resolve.c
 @@ -3257,6 +3255,7 @@ pure_subroutine (gfc_code *c, gfc_symbol *sym)
else if (gfc_pure (NULL))
  gfc_error (Subroutine call to '%s' at %L is not PURE, sym-name,
c-loc);
 +  gfc_current_ns-proc_name-attr.implicit_pure = 0;
  }

The patch works for the testcase in comment #16.
It did not produce any regressions in my tests.

(It also solves my original problem, which is a nice by-product.)

Thanks,
Harald


[Bug tree-optimization/51179] poor vectorization on interlagos.

2011-11-22 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51179

--- Comment #7 from Uros Bizjak ubizjak at gmail dot com 2011-11-22 22:00:36 
UTC ---
(In reply to comment #3)
 Your testcase doesn't ressemble the original, the inner for cycles need
 clearing of the iteration variable.

Ah, indeed... fingers were too fast.

One additional data point with -O2 -ftree-vectorize -mfma4 -mavx with all
loops:

movslq  %r8d, %rax
movl$C+32, %edx
xorl%esi, %esi
leaqB(,%rax,8), %rcx
movl$C, %eax
.L3:
  vmovsd  80(%rcx), %xmm1
addl$2, %esi
vmovapd A(%rdi), %ymm0
  vmovddup%xmm1, %xmm1
vbroadcastsd(%rcx), %ymm2
addq$160, %rcx
  vinsertf128 $1, %xmm1, %ymm1, %ymm1
vfmaddpd(%rax), %ymm2, %ymm0, %ymm2
vmovapd %ymm2, (%rax)
addq$64, %rax
vfmaddpd(%rdx), %ymm1, %ymm0, %ymm0
vmovapd %ymm0, (%rdx)
addq$64, %rdx
cmpl$10, %esi
jne .L3

This could be just vbroadcastsd 80(%rcx), %ymm1. For some reason combine pass
does not form it.


[Bug target/51244] SH Target: Inefficient conditional branch

2011-11-22 Thread kkojima at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51244

--- Comment #1 from Kazumoto Kojima kkojima at gcc dot gnu.org 2011-11-22 
22:33:43 UTC ---
  return (a != b || a != c) ? b : c;

test_func_0_NG and test_func_1_NG cases are related with the target
implementation of cstoresi4.
The middle end expands a complex conditional jump to cstores and
a simple conditional jumps.  For expression a != b, SH's cstoresi4
implementation uses sh.c:sh_emit_compare_and_set which generates
cmp/eq and movnegt insn, because we have no cmp/ne insn.  Then we've
got the sequence

  mov #-1,rn
  negc rn,rm
  tst #255,rm

which is essentially T_reg = T_reg.  Usually combine catches such
situation, but negc might be too complex for combine.
For this case, replacing current movnegt expander by insn, splitter
and peephole something like

(define_insn movnegt
  [(set (match_operand:SI 0 arith_reg_dest =r)
(plus:SI (reg:SI T_REG) (const_int -1)))
   (clobber (match_scratch:SI 1 =r))
   (clobber (reg:SI T_REG))]
  
  #
 [(set_attr length 4)])

(define_split
  [(set (match_operand:SI 0 arith_reg_dest =r)
(plus:SI (reg:SI T_REG) (const_int -1)))
   (clobber (match_scratch:SI 1 =r))
   (clobber (reg:SI T_REG))]
  reload_completed
  [(set (match_dup 1) (const_int -1))
   (parallel [(set (match_dup 0)
   (neg:SI (plus:SI (reg:SI T_REG)
(match_dup 1
  (set (reg:SI T_REG)
   (ne:SI (ior:SI (reg:SI T_REG) (match_dup 1))
  (const_int 0)))])]
  )

(define_peephole2
  [(set (match_operand:SI 1  ) (const_int -1))
   (parallel [(set (match_operand:SI 0  )
   (neg:SI (plus:SI (reg:SI T_REG)
(match_dup 1
  (set (reg:SI T_REG)
   (ne:SI (ior:SI (reg:SI T_REG) (match_dup 1))
  (const_int 0)))])
   (set (reg:SI T_REG)
(eq:SI (match_operand:QI 3  ) (const_int 0)))]
  REGNO (operands[3]) == REGNO (operands[0])
peep2_reg_dead_p (3, operands[0])
peep2_reg_dead_p (3, operands[1])
  [(const_int 0)]
  )

the above useless sequence could be removed, though we will miss
the chance that the -1 can be CSE-ed when the cstore value is
used.  This will cause a bit worse code for the loop like

int
foo (int *a, int x, int n)
{
  int i;
  int count;

  for (i = 0; i  n; i++)
count += (*(a + i) != x);

  return count;
}

though it may be relatively rare.

BTW, OT, (a != b || a != c) ? b : c could be reduced to b, I think.

  return a = 0  b = 0 ? c : d;

x = 0 is expanded to the sequence like

  ra = not x
  rb = -31
  rc = ra  (neg rb)
  T = (rc == 0)
  conditional jump

and combine tries to simplify it.  combine simplifies b = 0
successfully into shll and bt but fails to simplify a = 0.
It seems that combine doesn't do constant propagation well and
misses the constant -31.  In this case, a peephole like

(define_peephole2
  [(set (match_operand:SI 0 arith_reg_dest )
(not:SI (match_operand:SI 1 arith_reg_operand )))
   (set (match_operand:SI 2 arith_reg_dest ) (const_int -31))
   (set (match_operand:SI 3 arith_reg_dest )
(lshiftrt:SI (match_dup 0) (neg:SI (match_dup 2
   (set (reg:SI T_REG)
(eq:SI (match_operand:QI 4 arith_reg_operand )
   (const_int 0)))
   (set (pc)
(if_then_else (match_operator 5 comparison_operator
[(reg:SI T_REG) (const_int 0)])
  (label_ref (match_operand 6  ))
  (pc)))]
  REGNO (operands[3]) == REGNO (operands[4])
peep2_reg_dead_p (4, operands[0])
(peep2_reg_dead_p (4, operands[3])
   || rtx_equal_p (operands[2], operands[3]))
peep2_regno_dead_p (5, T_REG)
  [(set (match_dup 2) (const_int -31))
   (set (reg:SI T_REG) (ge:SI (match_dup 1) (const_int 0)))
   (set (pc)
(if_then_else (match_op_dup 7 [(reg:SI T_REG) (const_int 0)])
  (label_ref (match_dup 6))
  (pc)))]
  
{
  operands[7] = gen_rtx_fmt_ee (reverse_condition (GET_CODE (operands[5])),
GET_MODE (operands[5]),
XEXP (operands[5], 0), XEXP (operands[5], 1));
})

will be a workaround.  It isn't ideal, but better than nothing.

  return a == b ? test_sub0 (a, b) : test_sub1 (a, b);
  return a != b ? test_sub0 (a, b) : test_sub1 (a, b);

This case is intresting.  At -Os, two calls are converted into
one computed goto.  A bit surprisingly, the conversion is done
as a side effect of combine-stack-adjustments pass.  That pass
calls

  cleanup_cfg (flag_crossjumping ? CLEANUP_CROSSJUMP : 0);

and the cross jumping optimization merges two calls.
With -Os -fno-delayed-branch, the OK case is compiled to

test_func_3_OK:
mov r4,r1
cmp/eq  r5,r1
mov.l   .L4,r0
bf  .L3
mov r1,r5
mov.l   .L5,r0
bra .L3
nop
.L3:
jmp @r0
nop

and the NG case

test_func_3_NG:
mov r4,r1
cmp/eq  r5,r1
bt  .L2
mov.l   .L4,r0
bra .L3
nop
.L2:
mov.l   .L5,r0
mov r1,r5
.L3:
   

[Bug target/51274] New: Starting with GCC 4.5, powerpc generated different code for x != 0.

2011-11-22 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51274

 Bug #: 51274
   Summary: Starting with GCC 4.5, powerpc generated different
code for x != 0.
Classification: Unclassified
   Product: gcc
   Version: 4.5.0
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: target
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: meiss...@gcc.gnu.org
  Host: powerpc64-linux power-linux
Target: powerpc64-linux
 Build: powerpc64-linux


In doing some investigation for optimizations of comparisons for power7, I
noticed that starting with GCC 4.5, the compiler no longer generates the code
it used to for setting x = (y != 0).  In the rs6000.md file, these
optimizations start with the insn ne0si.

In the 4.4 time frame, for -m32 (and for -m32 -mpowerpc64, which is PR 36557),
gcc would generate:
addic 9,3,-1
subfe 0,9,3

However, it wouldn't generate this code for -m64.  Starting with 4.5, it
generates the code for !(x == 0), or:
cntlzw 3,3
srwi 3,3,5
xori 3,3,1

We should either remove the insns in rs6000.md that no longer are matching, or
fix them so they do match.  I suspect that the longer code sequence is actually
faster on the newer processors, since you don't need to track the carry between
the two insns.


[Bug target/51274] Starting with GCC 4.5, powerpc generated different code for x != 0.

2011-11-22 Thread meissner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51274

--- Comment #1 from Michael Meissner meissner at gcc dot gnu.org 2011-11-22 
23:12:43 UTC ---
Created attachment 25889
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25889
Example test case


[Bug c++/51154] internal compiler error: gimplification failed

2011-11-22 Thread marc.glisse at normalesup dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51154

Marc Glisse marc.glisse at normalesup dot org changed:

   What|Removed |Added

 CC||marc.glisse at normalesup
   ||dot org

--- Comment #3 from Marc Glisse marc.glisse at normalesup dot org 2011-11-22 
23:36:26 UTC ---
This appears to be a 4.7 regression. I got the same create_tmp_var ICE message
with a different code (3.5MB, I won't reduce it since there is already a very
nice testcase attached to the bug :-)


[Bug tree-optimization/51275] New: CLOBBERS can be optimized if they are right before the return (or RESX)

2011-11-22 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51275

 Bug #: 51275
   Summary: CLOBBERS can be optimized if they are right before the
return (or RESX)
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: pins...@gcc.gnu.org


Created attachment 25890
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25890
Patch which optimizes the clobbers

As mentioned in Bug #51264 comment #10, clobbers can be optimized but only
after inlining.  I attached a patch which does the optimization in
fold_all_builtins.  With this patch, most of the reason for adding
-fno-exceptions to compiling GCC is gone (though inlining is still different).


[Bug debug/51276] New: ICE: in force_decl_die, at dwarf2out.c:19261

2011-11-22 Thread marc.glisse at normalesup dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51276

 Bug #: 51276
   Summary: ICE: in force_decl_die, at dwarf2out.c:19261
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: debug
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: marc.gli...@normalesup.org


Created attachment 25891
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=25891
Compressed preprocessed testcase

An uncompressed version (7.4M) is available from:
http://geometrica.saclay.inria.fr/team/Marc.Glisse/tmp/b.ii

$ g++ -std=c++0x -g b.ii
[...]
internal compiler error: in force_decl_die, at dwarf2out.c:19261

The closest bug I could find is about -fenable-icf-debug (Bug 46132) but that
option has been removed.

I usually reduce testcases with delta before submitting them, but g++ got into
an infinite loop apparently. Maybe ulimit would help work around that...


[Bug tree-optimization/50602] ICE in tree_nrv, at tree-nrv.c:155 during large LTO build

2011-11-22 Thread andi-gcc at firstfloor dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50602

--- Comment #10 from Andi Kleen andi-gcc at firstfloor dot org 2011-11-23 
00:22:46 UTC ---
FWIW the problem is still there and prevents any 32bit kernel LTO builds


[Bug c++/51154] internal compiler error: gimplification failed

2011-11-22 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51154

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 CC||rguenth at gcc dot gnu.org

--- Comment #4 from Paolo Carlini paolo.carlini at oracle dot com 2011-11-23 
00:26:23 UTC ---
Richard, can you help triaging this?


[Bug tree-optimization/51275] CLOBBERS can be optimized if they are right before the return (or RESX)

2011-11-22 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51275

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org 2011-11-23 
00:40:40 UTC ---
I think this patch has a bug in it when dealing with DEBUG_STMT's.


[Bug c++/51277] New: Feature request: C++ diagnostic for ambiguous overloads

2011-11-22 Thread zeratul976 at hotmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51277

 Bug #: 51277
   Summary: Feature request: C++ diagnostic for ambiguous
overloads
Classification: Unclassified
   Product: gcc
   Version: 4.7.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassig...@gcc.gnu.org
ReportedBy: zeratul...@hotmail.com


I have a feature request regarding a compiler diagnostic.

When a call of an overloaded function is ambiguous, and some of the candidates
are declared in namespaces other than the namespace of the call site (or one
of its parent namespaces), it would be helpful if the compiler helped us 
figure out why those candidates are visible in the namespace of the call site.

Specifically, it would be helpful if the compiler would say:

 - whether the candidate is visible 1) because it was imported into the 
   namespace of the call site (or one of its parent namespaces) via a
   using-declaration or a using-directive, OR 2) because it was found
   using argument-dependent lookup

 - in the first case, the location of the using-declaration or using-
   directive (if there are several, any one of them should suffice)

 - in the second case, the argument that triggered the argument-
   dependent lookup and why

Examples:

///  EXAMPLE 1  ///

namespace n1
{
void foo(double);
}

using n1::foo;

void foo(float);

int main()
{
   foo(0);   
}

// Current diagnostic
test.cpp: In function 'int main()':
test.cpp:12:9: error: call of overloaded 'foo(int)' is ambiguous
test.cpp:12:9: note: candidates are:
test.cpp:3:10: note: void n1::foo(double)
test.cpp:8:6: note: void foo(float)

// What I would like to see
test.cpp: In function 'int main()':
test.cpp:12:9: error: call of overloaded 'foo(int)' is ambiguous
test.cpp:12:9: note: candidates are:
test.cpp:3:10: note: void n1::foo(double)
test.cpp:6:13: note: visible in global namespace because of using-declaration
located here
test.cpp:8:6: note: void foo(float)


///  EXAMPLE 2  ///

namespace n1
{
struct Bar {};

void foo(double, Bar);
}

void foo(float, n1::Bar);

int main()
{
   foo(n1::Bar());   
}

// Current diagnostic
test.cpp: In function 'int main()':
test.cpp:12:20: error: call of overloaded 'foo(int, n1::Bar)' is ambiguous
test.cpp:12:20: note: candidates are:
test.cpp:8:6: note: void foo(float, n1::Bar)
test.cpp:5:10: note: void n1::foo(double, n1::Bar)

// What I would like to see
test.cpp: In function 'int main()':
test.cpp:12:20: error: call of overloaded 'foo(int, n1::Bar)' is ambiguous
test.cpp:12:20: note: candidates are:
test.cpp:8:6: note: void foo(float, n1::Bar)
test.cpp:5:10: note: void n1::foo(double, n1::Bar)
test.cpp:3:14: note: found by argument-dependent lookup because second argument
is of type n1::Bar

//


Does this sound doable?


[Bug tree-optimization/46309] optimization a==3||a==1

2011-11-22 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46309

--- Comment #9 from Andrew Pinski pinskia at gcc dot gnu.org 2011-11-23 
00:58:23 UTC ---
FAIL: gcc.dg/pr46309.c scan-tree-dump-times reassoc1 Optimizing range tests
a_[0-9]*.D. -.1, 1. and -.2, 2. and -.3, 3. and -.4, 4.[
]* into 2
FAIL: gcc.dg/pr46309.c scan-tree-dump-times reassoc1 Optimizing range tests
a_[0-9]*.D. -.1, 1. and -.3, 3.[
]* into 1
FAIL: gcc.dg/pr46309.c scan-tree-dump-times reassoc1 Optimizing range tests
a_[0-9]*.D. -.1, 1. and -.2, 2.[
]* into 1
FAIL: gcc.dg/pr46309.c scan-tree-dump-times reassoc1 Optimizing range tests
a_[0-9]*.D. -.0, 31. and -.64, 95.[
]* into 2
FAIL: gcc.dg/pr46309.c scan-tree-dump-times reassoc1 Optimizing range tests
a_[0-9]*.D. -.128, 159. and -.192, 223.[
]* into 1
FAIL: gcc.dg/pr46309.c scan-tree-dump-times reassoc2 Optimizing range tests
D.[0-9]*_[0-9]* -.0, 31. and -.128, 159.[
]* into 1


On mips64-linux-gnu


[Bug rtl-optimization/51271] ICE in in maybe_record_trace_start, at dwarf2cfi.c:2244

2011-11-22 Thread vries at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51271

--- Comment #1 from vries at gcc dot gnu.org 2011-11-23 01:18:18 UTC ---
minimal compile line:
...
$ mips64el-linux-gnu-gcc -O2 -g res_hconf.c
...

minimal example res_hconf.c:
...
extern __thread int *__libc_tsd_CTYPE_B;

int *
skip_string (int *str)
{
  while (*str
  __libc_tsd_CTYPE_B[*str]
  *str != ',')
++str;
  return str;
}
...


  1   2   >