[Bug c++/60994] New: gcc does not recognize hidden/shadowed enumeration as valid nested-name-specifier

2014-04-29 Thread momchil.velikov at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60994

Bug ID: 60994
   Summary: gcc does not recognize hidden/shadowed enumeration as
valid nested-name-specifier
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: momchil.velikov at gmail dot com

gcc version 4.10.0 20140428 (experimental) (GCC)

Compiling (with c++ -c -std=c++11 b.cc) the following program

enum struct A
{
  n = 3
};

int
foo()
{
  int A;
  return A::n;
}

results in the error:

b.cc: In function 'int foo()':
b.cc:10:10: error: 'A' is not a class, namespace, or enumeration
   return A::n;
  ^
According to the C++11 Standard, [basic.lookup.qual] #1

If a :: scope resolution operator in a nested-name-specifier is not preceded
by a decltype-specifier, lookup of the name preceding that :: considers only
namespaces, types, and templates whose specializations are types.

GCC ought not to resolve A to the local variable, but to the enumeration
type. This is very similar to the example in the standard 

struct A
{
  static int n;
};

int
foo()
{
  int A;
  return A::n;
}


which is compiled correctly by GCC, though.


[Bug c++/60994] gcc does not recognize hidden/shadowed enumeration as valid nested-name-specifier

2014-04-29 Thread trippels at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60994

Markus Trippelsdorf trippels at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #1 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
Implicit enum to int conversion is not provided for a scoped enumeration.


[Bug target/60996] New: Bad code (I.e. needless insns) with option momit-leaf-frame-pointer; side-effect on non-leaf functions

2014-04-29 Thread meisenmann....@fh-salzburg.ac.at
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60996

Bug ID: 60996
   Summary: Bad code (I.e. needless insns) with option
momit-leaf-frame-pointer; side-effect on non-leaf
functions
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: meisenmann@fh-salzburg.ac.at

Using the option '-momit-leaf-frame-pointer' (with -fno-omit-frame-pointer) has
a side-effect on non-leaf functions. The code-snippets afterwards (produced
with an i386-elf cross-compiler for an IA32-target) will show the difference:

A) Without the option momit-leaf-frame-pointer:

Example1:
  pushl %ebp
  movl  %esp, %ebp
  pushl %ebx
  subl  $8, %esp
  movl  (%eax), %ebx
  pushl 12(%ebp)
  pushl 8(%ebp)
  pushl %ecx
  pushl %edx
  pushl %eax
  call  *12(%ebx)
  movl  -4(%ebp), %ebx
  leave
  ret

B) Option '-momit-leaf-frame-pointer' used:

Example1:
  pushl %ebp
  movl  %esp, %ebp
  pushl %ebx
  subl  $8, %esp
  movl  (%eax), %ebx
  pushl 12(%ebp)
  pushl 8(%ebp)
  pushl %ecx
  pushl %edx
  pushl %eax
  call  *12(%ebx)
  addl  $24, %esp
  movl  -4(%ebp), %ebx
  leave
  ret

In this case there'a an additional stack-adjustment (addl $24, %esp) before the
final stack-leave instruction. Some other examples with less forwarded
call-arguments have shown a few pop-insn instead of an 'add'.
These additional instruction(s) directly before reverting the stack-frame has
no functional effect, but will consume a few CPU-cycles.


[Bug c++/60994] gcc does not recognize hidden/shadowed enumeration as valid nested-name-specifier

2014-04-29 Thread trippels at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60994

--- Comment #2 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
(In reply to Markus Trippelsdorf from comment #1)
 Implicit enum to int conversion is not provided for a scoped enumeration.

That said it is strange that gcc also rejects a plain enum:

markus@x4 /tmp % cat foo.cpp
enum A
{
  n = 3
};

int
foo()
{
  int A;
  return A::n;
}

markus@x4 /tmp % g++ -c -std=c++11 -O3 foo.cpp
foo.cpp: In function ‘int foo()’:
foo.cpp:10:10: error: ‘A’ is not a class, namespace, or enumeration
   return A::n;
  ^

[Bug c++/60994] gcc does not recognize hidden/shadowed enumeration as valid nested-name-specifier

2014-04-29 Thread momchil.velikov at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60994

--- Comment #3 from Momchil Velikov momchil.velikov at gmail dot com ---
(In reply to Markus Trippelsdorf from comment #1)
 Implicit enum to int conversion is not provided for a scoped enumeration.

This is not the reported error.

In fact, the correct output of the compiler would be to report the invalid
implicit conversion. It does not.

With explicit conversion to int, the compiler still gives an error, but the
error message is not helpful and obscures the cause of the problem, i.e.,
compiling this:

enum struct A
{
  n = 3
};

int
foo()
{
  int A;
  return int(A::n);
}

results in:


b.cc: In function 'int foo()':
b.cc:10:10: error: expected primary-expression before 'int'
   return int(A::n);
  ^
b.cc:10:10: error: expected ';' before 'int'
b.cc:10:10: error: expected primary-expression before 'int'


[Bug ipa/60990] [4.9/4.10 Regression] ICE: in try_make_edge_direct_virtual_call, at ipa-prop.c:2796 with -O3 -fno-early-inlining -fno-ipa-cp

2014-04-29 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60990

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-04-29
 CC||jakub at gcc dot gnu.org
   Target Milestone|--- |4.9.1
 Ever confirmed|0   |1

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
Started with r205019.


[Bug bootstrap/60984] AIX: gcc-4.9.0 bootstrap fails in stage-2

2014-04-29 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60984

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org ---
Isn't it --enable-checking=yes vs. --enable-checking=release ?
Bet that is the most important change since 4.9.0 branch creation.


[Bug c++/60994] gcc does not recognize hidden/shadowed enumeration as valid nested-name-specifier

2014-04-29 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60994

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||rejects-valid
 Status|RESOLVED|NEW
   Last reconfirmed||2014-04-29
 Resolution|INVALID |---
 Ever confirmed|0   |1

--- Comment #4 from Jonathan Wakely redi at gcc dot gnu.org ---
(In reply to Momchil Velikov from comment #0)

 According to the C++11 Standard, [basic.lookup.qual] #1
 
 If a :: scope resolution operator in a nested-name-specifier is not
 preceded by a decltype-specifier, lookup of the name preceding that ::
 considers only namespaces, types, and templates whose specializations are
 types.

Confirmed. C++03 said During the lookup for a name preceding the :: scope
resolution operator, object, function, and enumerator names are ignored.


[Bug bootstrap/60984] [4.9 Regression] AIX: gcc-4.9.0 bootstrap fails in stage-2

2014-04-29 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60984

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||build
   Priority|P2  |P1
  Known to work||4.10.0, 4.9.0
Version|4.9.0   |4.9.1
Summary|AIX: gcc-4.9.0 bootstrap|[4.9 Regression] AIX:
   |fails in stage-2|gcc-4.9.0 bootstrap fails
   ||in stage-2
  Known to fail||4.9.1


[Bug c++/60976] Compilation with G++ 4.9.0 is 2-3 times slower than with 4.8.2

2014-04-29 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60976

--- Comment #10 from Jonathan Wakely redi at gcc dot gnu.org ---
Most of the libstdc++ changes are for C++11 allocator support, which is
required for conformance. Some changes I made in bits/alloc_traits.h might
have negatively affected compile time though.


[Bug c++/60992] [4.9/4.10 Regression] ICE in tsubst_copy, at cp/pt.c:12637

2014-04-29 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60992

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-04-29
 CC||jakub at gcc dot gnu.org,
   ||jason at gcc dot gnu.org
   Target Milestone|--- |4.9.1
 Ever confirmed|0   |1

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
This first started to be rejected (but no ICE) with r196747, and started to
error out + ICE afterwards with r197811.


[Bug rtl-optimization/60901] [4.8/4.9/4.10 Regression] ICE: SIGSEGV in add_to_deps_list with -fsel-sched-pipelining-outer-loops

2014-04-29 Thread abel at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60901

Andrey Belevantsev abel at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |abel at gcc dot gnu.org

--- Comment #3 from Andrey Belevantsev abel at gcc dot gnu.org ---
The ix86_dependencies_evaluation_hook has the following code:

26230 /* Assume that region is SCC, i.e. all immediate
predecessors
26231of non-head block are in the same region.  */
26232 FOR_EACH_EDGE (e, ei, bb-preds)
26233   {

The comment is wrong for selective scheduling with pipelining of outer loops
enabled, as the regions then are formed started from the innermost loops and
going up to the outer loops.  So there could be a hole in the outer loop
region.

Fixed easily below like this, the comment has also to be adjusted of course.

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 895ebbb..3f572fc 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -26233,7 +26233,8 @@ ix86_dependencies_evaluation_hook (rtx head, rtx tail)
  {
/* Avoid creating of loop-carried dependencies through
   using topological odering in region.  */
-   if (BLOCK_TO_BB (bb-index)  BLOCK_TO_BB (e-src-index))
+   if (rgn == CONTAINING_RGN (e-src-index)
+BLOCK_TO_BB (bb-index)  BLOCK_TO_BB
(e-src-index))
  add_dependee_for_func_arg (first_arg, e-src);
  }
  }


[Bug tree-optimization/60971] [4.9/4.10 Regression] Wrong code when coercing unsigned char to bool

2014-04-29 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60971

--- Comment #4 from Jakub Jelinek jakub at gcc dot gnu.org ---
Created attachment 32702
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32702action=edit
gcc49-pr60971.patch

Agreed, but I'd say the bug is in the tailc pass then, it assumes conversion
from QImode integer type with 8-bit precision to QImode bool type with 1-bit
precision doesn't need any code, when that is not true, during expansion in
those cases we apply REDUCE_BIT_FIELD.


[Bug tree-optimization/60997] New: -fopenmp conflicts with -floop-interchange

2014-04-29 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60997

Bug ID: 60997
   Summary: -fopenmp conflicts with -floop-interchange
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dominiq at lps dot ens.fr
CC: grosser at gcc dot gnu.org, jakub at gcc dot gnu.org,
mircea.namolaru at inria dot fr

Created attachment 32703
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32703action=edit
Test for three variants of the matrix product

Compiling the attached code with -Ofast gives the following timing at run time

[Book15] Fortran/omp_tst% gfc -Ofast omp_tst_4_db_2.f90
[Book15] Fortran/omp_tst% time a.out
   94378416668672.000 
 Elapsed time =   3.73266600  seconds
   94378416668672.000 
 Elapsed time =  0.572250004  seconds
   94378416668672.000 
 Elapsed time =   6.92336698  seconds
   94378416668672.000 
 Elapsed time =  0.477573003  seconds
11.704u 0.030s 0:11.73 100.0%0+0k 0+0io 2pf+0w

Adding -floop-interchange at compile time gives

[Book15] Fortran/omp_tst% gfc -Ofast omp_tst_4_db_2.f90 -floop-interchange
[Book15] Fortran/omp_tst% time a.out
   94378416668672.000 
 Elapsed time =  0.573578995  seconds
   94378416668672.000 
 Elapsed time =  0.568631000  seconds
   94378416668672.000 
 Elapsed time =  0.568514999  seconds
   94378416668672.000 
 Elapsed time =  0.470331997  seconds
2.195u 0.015s 0:02.21 99.5%0+0k 0+0io 0pf+0w

i.e., the three variants of the loop are transformed to the fastest one. Adding
-fopenmp (and -fexternal-blas -framework vecLib) gives

[Book15] Fortran/omp_tst% gfc -Ofast omp_tst_4_db_2.f90 -floop-interchange
-fopenmp -fexternal-blas -framework vecLib
[Book15] Fortran/omp_tst% time a.out
   94378416668672.000 
 Elapsed time =   1.81436701  seconds
   94378416668672.000 
 Elapsed time =  0.128869001  seconds
   94378416668672.000 
 Elapsed time =   2.00254200  seconds
   94378416668672.000 
 Elapsed time =   2.92049998E-002 seconds
31.030u 0.064s 0:04.00 777.2%0+0k 4+4io 2pf+0w

i.e., the loop interchange is prevented by the -fopenmp option. This is
probably due to the fact that the -fopenmp option is processed before the
graphite optimizations.

The last timings are for the MATMUL intrinsic as a reference (using the system
BLAS gives a 15 times speed-up).


[Bug libstdc++/59476] gdb pretty-printer cannot print C++11 _Rb_tree_iterator

2014-04-29 Thread pluto at agmk dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59476

--- Comment #1 from Pawel Sikora pluto at agmk dot net ---
4.9.0 released with unusable pretty printers :/


[Bug c++/60994] gcc does not recognize hidden/shadowed enumeration as valid nested-name-specifier

2014-04-29 Thread momchil.velikov at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60994

--- Comment #5 from Momchil Velikov momchil.velikov at gmail dot com ---
Proposed fix: http://gcc.gnu.org/ml/gcc-patches/2014-04/msg01938.html


[Bug libstdc++/59476] gdb pretty-printer cannot print C++11 _Rb_tree_iterator

2014-04-29 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59476

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-04-29
   Assignee|unassigned at gcc dot gnu.org  |redi at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org ---
Mine.


[Bug tree-optimization/60971] [4.9/4.10 Regression] Wrong code when coercing unsigned char to bool

2014-04-29 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60971

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

  Attachment #32702|0   |1
is obsolete||

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org ---
Created attachment 32704
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32704action=edit
gcc49-pr60971.patch

Updated patch based on IRC discussion.


[Bug tree-optimization/60997] -fopenmp conflicts with -floop-interchange

2014-04-29 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60997

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
IIRC -fopenmp has similar issues for vectorization (it defeats points-to
analysis)


[Bug c/60998] New: [MIPS] -O3 produces infinite while() loop. -O2 produces correct code.

2014-04-29 Thread exmortis at yandex dot ru
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60998

Bug ID: 60998
   Summary: [MIPS] -O3 produces infinite while() loop. -O2
produces correct code.
   Product: gcc
   Version: 4.8.0
Status: UNCONFIRMED
  Severity: critical
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: exmortis at yandex dot ru

1.  The compiler toolchain was downloaded from CodeSourcer site:
  http://sourcery.mentor.com/public/gnu_toolchain/mips-linux-gnu/mips-2013.11
 -36-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2

  2.  Unpacked to the home dir:
 tar jxf mips-2013.11-36-mips-linux-gnu-i686-pc-linux-gnu.tar.bz2

  3.  Version checking:
 chibisov@lazar:~$ ./mips-2013.11/bin/mips-linux-gnu-gcc -v Using built-in
 specs.
 COLLECT_GCC=./mips-2013.11/bin/mips-linux-gnu-gcc
 COLLECT_LTO_WRAPPER=/home/chibisov/mips-2013.11/bin/../libexec/gcc/mips-linu
 x-gnu/4.8.1/lto-wrapper
 Target: mips-linux-gnu
 Configured with:
 /scratch/cmoore/fall2013-linux-final/src/gcc-4.8-2013.11/configure
 --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=mips-linux-gnu
 --enable-threads --disable-libmudflap --disable-libssp
 --disable-libstdcxx-pch --with-arch-32=mips32r2 --with-arch-64=mips64r2
 --with-float=hard --with-mips-plt --enable-extra-sgxxlite-multilibs
 --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm}
 -D__CS_SOURCERYGXX_MAJ__=2013 -D__CS_SOURCERYGXX_MIN__=11
 -D__CS_SOURCERYGXX_REV__=36' --enable-languages=c,c++ --enable-shared
 --enable-lto --enable-symvers=gnu --enable-__cxa_atexit
 --with-pkgversion='Sourcery CodeBench Lite 2013.11-36'
 --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls
 --prefix=/opt/codesourcery
 --with-sysroot=/opt/codesourcery/mips-linux-gnu/libc
 --with-build-sysroot=/scratch/cmoore/fall2013-linux-final/install/opt/codeso
 urcery/mips-linux-gnu/libc
 --with-gmp=/scratch/cmoore/fall2013-linux-final/obj/pkg-2013.11-36-mips-linu
 x-gnu/mips-2013.11-36-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr
 --with-mpfr=/scratch/cmoore/fall2013-linux-final/obj/pkg-2013.11-36-mips-lin
 ux-gnu/mips-2013.11-36-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr
 --with-mpc=/scratch/cmoore/fall2013-linux-final/obj/pkg-2013.11-36-mips-linu
 x-gnu/mips-2013.11-36-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr
 --with-isl=/scratch/cmoore/fall2013-linux-final/obj/pkg-2013.11-36-mips-linu
 x-gnu/mips-2013.11-36-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/usr
 --with-cloog=/scratch/cmoore/fall2013-linux-final/obj/pkg-2013.11-36-mips-li
 nux-gnu/mips-2013.11-36-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/us
 r
 --with-libelf=/scratch/cmoore/fall2013-linux-final/obj/pkg-2013.11-36-mips-l
 inux-gnu/mips-2013.11-36-mips-linux-gnu.extras/host-libs-i686-pc-linux-gnu/u
 sr --enable-libgomp --disable-libitm --disable-libssp
 --enable-poison-system-directories
 --with-build-time-tools=/scratch/cmoore/fall2013-linux-final/install/opt/cod
 esourcery/mips-linux-gnu/bin
 --with-build-time-tools=/scratch/cmoore/fall2013-linux-final/install/opt/cod
 esourcery/mips-linux-gnu/bin SED=sed Thread model: posix gcc version 4.8.1
 (Sourcery CodeBench Lite 2013.11-36) chibisov@lazar:~$

  4. Minimal test file t.c:

 void *memset(void *s, int c, int count)
 {
  if (count) {
  char *d = s;
  do {
  *d++ = c;
  } while (--count);
  }
  return s;
 }

 5. The compiler is run with recommended keys (Reporting Bugs from
 http://gcc.gnu.org/bugs/#detailed)
 chibisov@lazar:~$ ./mips-2013.11/bin/mips-linux-gnu-gcc -Wall -Wextra
 -fno-strict-aliasing -fwrapv -fno-aggressive-loop-optimizations --save-temps
 -O3 -c t.c chibisov@lazar:~$

 No warnings or errors are shown.

 6. The contents of t.i is the following:

 # 1 t.c
 # 1 command-line
 # 1
 /home/chibisov/mips-2013.11/mips-linux-gnu/libc/usr/include/stdc-predef.h
 1 3 4 # 30
 /home/chibisov/mips-2013.11/mips-linux-gnu/libc/usr/include/stdc-predef.h
 3 4 # 1
 /home/chibisov/mips-2013.11/mips-linux-gnu/libc/usr/include/bits/predefs.h
 1 3 4 # 31
 /home/chibisov/mips-2013.11/mips-linux-gnu/libc/usr/include/stdc-predef.h
 2 3 4 # 1 command-line 2 # 1 t.c

 void *memset(void *s, int c, int count)
 {
  if (count) {
  char *d = s;

  do {
  *d++ = c;
  } while (--count);
  }
  return s;
 }

 7. The contents of t.s is the following:

.file  1 t.c
.section .mdebug.abi32
.previous
.nanlegacy
.gnu_attribute 4, 1
.abicalls
.option pic0

  # -G value = 0, Arch = mips32r2, ISA = 33
  # GNU C (Sourcery CodeBench Lite 2013.11-36) version 4.8.1 (mips-linux-gnu)
  #  compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version
 3.1.1-p2, MPC version 1.0.1
  # GGC heuristics: --param ggc-min-expand=100 --param
 ggc-min-heapsize=131072
  # options passed:  -fpreprocessed t.i -meb 

[Bug tree-optimization/14741] graphite with loop blocking and interchanging doesn't optimize a matrix multiplication loop

2014-04-29 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14741

--- Comment #30 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Since at least gcc 4.8.2, -floop-interchange is able to apply it to the test in
comment 25 (see also pr60997):

[Book15] f90/bug% gfortran-fsf-4.8 -Ofast pr14741.f90 -floop-interchange
[Book15] f90/bug% time a.out
  0.48877399910.2399826 
0.492u 0.007s 0:00.50 98.0%0+0k 0+0io 0pf+0w
[Book15] f90/bug% gfortran-fsf-4.8 -Ofast pr14741.f90 
[Book15] f90/bug% time a.out
   3.9007499910.2399826 
3.897u 0.015s 0:03.91 99.7%0+0k 0+0io 1pf+0w

However compiling it with -floop-nest-optimize --param loop-block-tile-size=xx,
gives the following error (see comment 18)

f951: warning: iteration 31 invokes undefined behavior
[-Waggressive-loop-optimizations]
f951: note: containing loop
f951: warning: iteration 31 invokes undefined behavior
[-Waggressive-loop-optimizations]
f951: note: containing loop
pr14741.f90:6:0: warning: iteration 31 invokes undefined behavior
[-Waggressive-loop-optimizations]
 B=0.1D0
 ^
f951: note: containing loop
pr14741.f90:5:0: warning: iteration 31 invokes undefined behavior
[-Waggressive-loop-optimizations]
 A=0.1D0
 ^
f951: note: containing loop

for any values of xx I have tested. If I add
-fno-aggressive-loop-optimizations, the code segfaults (Access to an undefined
portion of a memory object) at run time.


[Bug c++/60999] [4.9 Regression] ICE when static_cast from constexpr in specialization of template-class

2014-04-29 Thread D.Bahadir at GMX dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60999

--- Comment #1 from Deniz Bahadir D.Bahadir at GMX dot de ---
Created attachment 32706
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32706action=edit
preprocessed source generated by GCC with option '-save-temps'


[Bug bootstrap/60984] [4.9 Regression] AIX: gcc-4.9.0 bootstrap fails in stage-2

2014-04-29 Thread dje at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60984

David Edelsohn dje at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
   Last reconfirmed|2014-04-28 00:00:00 |2014-4-29
  Known to work|4.9.0   |
  Known to fail||4.9.0

--- Comment #6 from David Edelsohn dje at gcc dot gnu.org ---
Torbjorn: What release of GCC are you using as the system compiler to
bootstrap?


[Bug tree-optimization/61000] New: No loop interchange for inner loop along the slow index

2014-04-29 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61000

Bug ID: 61000
   Summary: No loop interchange for inner loop along the slow
index
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dominiq at lps dot ens.fr
CC: grosser at gcc dot gnu.org, mircea.namolaru at inria dot fr

Graphite is unable to do the loop interchange when the inner loop is along the
slow index of an array:

[Book15] Fortran/omp_tst% cat loop.f90
module parms
implicit none
private
integer, parameter, public :: num = 1024
integer, parameter, public :: dp = kind(0.0d0)

end module parms

program loops
use parms
implicit none
real(kind=dp), dimension(:, :), 
allocatable :: a, c
integer :: i, j, k, n_iter=100
integer(8) :: start, finish, counts
allocate(a(num,num),c(num,num))

call random_number(a)
c = 0
call system_clock (start, counts)
do k=1,n_iter
  do i=1,num
!c(i,1) = 0.5*(a(i,2) - a(i,num))
!c(i,num) = 0.5*(a(i,1) - a(i,num-1))
do j=2,num-1
  c(i,j) = 0.5*(a(i,j+1) - a(i,j-1))
end do
  end do
end do
call system_clock (finish)
print *, sum(abs(c)) ! To ensure computation
print *, Elapsed time = ,
(finish - start) / real(counts, kind=8), seconds

c = 0
call system_clock (start, counts)
do k=1,n_iter
!  do i=1,num
!c(i,1) = 0.5*(a(i,2) - a(i,num))
!c(i,num) = 0.5*(a(i,1) - a(i,num-1))
!  end do
  do j=2,num-1
do i=1,num
  c(i,j) = 0.5*(a(i,j+1) - a(i,j-1))
end do
  end do
end do
call system_clock (finish)
print *, sum(abs(c)) ! To ensure computation
print *, Elapsed time = ,
(finish - start) / real(counts, kind=8), seconds

end program loops
[Book15] Fortran/omp_tst% gfc -Ofast -floop-interchange loop.f90 
[Book15] Fortran/omp_tst% time a.out
   174350.51293227341 
 Elapsed time =   2.19437698  seconds
   174350.51293227341 
 Elapsed time =  0.140062999  seconds
2.347u 0.011s 0:02.36 99.5%0+0k 0+0io 30pf+0w

This may be a duplicate of pr36011, but the timings are not affected by adding
-fno-tree-pre -fno-tree-loop-im. Note that gcc with -floop-interchange is able
to optimize the matrix product (see pr14741 and pr60997).

This also affects the polyhedron test air.f90. With the following patch

--- air.f902009-08-28 14:22:26.0 +0200
+++ air_va.f902014-04-19 13:10:44.0 +0200
@@ -400,8 +400,8 @@
 !
 ! COMPUTE THE FLUX TERMS
 !
-  DO i = 1 , MXPx
- DO j = 1 , MXPy
+  DO j = 1 , MXPy
+ DO i = 1 , MXPx
 !
 ! compute vanleer fluxes
 !
@@ -657,8 +657,8 @@
   ENDDO
 !
 ! COMPUTE THE FLUX TERMS
-  DO i = 1 , MXPx
- DO j = 1 , MXPy
+  DO j = 1 , MXPy
+ DO i = 1 , MXPx
 !
 ! compute vanleer fluxes
 !

the execution time goes from 3.2s to 2.7s (with -Ofast, with/without
-floop-interchange).


[Bug lto/61001] New: Builtin memcpy and memset cannot be overridden when -flto is used

2014-04-29 Thread eblot.ml at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61001

Bug ID: 61001
   Summary: Builtin memcpy and memset cannot be overridden when
-flto is used
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: lto
  Assignee: unassigned at gcc dot gnu.org
  Reporter: eblot.ml at gmail dot com

On arm-none-eabi target, when -flto mode is enabled, the linker does not allow
to override the builtin definitions for memset and memcpy:

/var/folders/g0/7v4by70d4nd052zj7wj7v3m8gn/T//cc3YmscA.ltrans8.ltrans.o: In
function `memset':
main/src/fastmem.c:94: multiple definition of `memset'
/usr/local/Cellar/arm-eabi-gcc49/4.9.0/lib/gcc/arm-eabi/4.9.0/../../../../arm-eabi/lib/libg.a(lib_a-memset.o):memset.c:(.text+0x0):
first defined here
/var/folders/g0/7v4by70d4nd052zj7wj7v3m8gn/T//cc3YmscA.ltrans8.ltrans.o: In
function `memcpy':
main/src/fastmem.c:15: multiple definition of `memcpy'
/usr/local/Cellar/arm-eabi-gcc49/4.9.0/lib/gcc/arm-eabi/4.9.0/../../../../arm-eabi/lib/libg.a(lib_a-memcpy-stub.o):memcpy-stub.c:(.text+0x0):
first defined here

This issue has already been reported here:
http://permalink.gmane.org/gmane.comp.gcc.help/46588


[Bug lto/61001] Builtin memcpy and memset cannot be overridden when -flto is used

2014-04-29 Thread eblot.ml at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61001

--- Comment #1 from Emmanuel Blot eblot.ml at gmail dot com ---
Note: binutils version: 2.24


[Bug tree-optimization/60971] [4.9/4.10 Regression] Wrong code when coercing unsigned char to bool

2014-04-29 Thread law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60971

--- Comment #6 from Jeffrey A. Law law at redhat dot com ---
Jakub,

That patch is fine -- it's effectively what I was planning to do today, just in
a different location.


[Bug c/46460] warn for shifting more than the bits in the (promoted) type is undefined

2014-04-29 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46460

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||mpolacek at gcc dot gnu.org
 Resolution|--- |FIXED

--- Comment #4 from Marek Polacek mpolacek at gcc dot gnu.org ---
We have -fsanitize=shift for this now.


[Bug c/45123] -pedantic warning about string inside __asm

2014-04-29 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45123

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||mpolacek at gcc dot gnu.org
 Resolution|--- |FIXED

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
Seems to be fixed since 4.7.


[Bug lto/61001] Builtin memcpy and memset cannot be overridden when -flto is used

2014-04-29 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61001

--- Comment #2 from Marc Glisse glisse at gcc dot gnu.org ---
Please copy your testcase here.

-fno-builtin-memcmp is not a hack, it is necessary, even without -flto. Without
it, linking is not the only thing that may fail. gcc may look at your
implementation, recognize that it is doing the same thing as memcmp, and
replace it with a call to memcmp...


[Bug tree-optimization/60997] -fopenmp conflicts with -floop-interchange

2014-04-29 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60997

--- Comment #2 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 IIRC -fopenmp has similar issues for vectorization (it defeats
 points-to analysis)

PR46032?

[Book15] f90/bug% g++ -Ofast pr46032.cpp -fopt-info-vec -fgraphite
-fgraphite-identity -floop-block -floop-flatten -floop-interchange
-floop-strip-mine -ftree-loop-linear -floop-parallelize-all
pr46032.cpp:11:34: note: loop vectorized
[Book15] f90/bug% g++ -Ofast pr46032.cpp -fopt-info-vec -fopenmp -fgraphite
-floop-block -floop-flatten -floop-interchange -floop-strip-mine
-ftree-loop-linear 
pr46032.cpp:11:34: note: loop vectorized
pr46032.cpp:11:34: note: loop versioned for vectorization because of possible
aliasing
pr46032.cpp:11:34: note: loop peeled for vectorization to enhance alignment

but

[Book15] f90/bug% g++ -Ofast pr46032.cpp -fopt-info-vec -fopenmp
-fgraphite-identity
[Book15] f90/bug% g++ -Ofast pr46032.cpp -fopt-info-vec -fopenmp -fgraphite
-floop-block -floop-flatten -floop-interchange -floop-strip-mine
-ftree-loop-linear -floop-parallelize-all
[Book15]


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

2014-04-29 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46032

--- Comment #8 from Dominique d'Humieres dominiq at lps dot ens.fr ---
See also pr60997.


[Bug lto/61001] Builtin memcpy and memset cannot be overridden when -flto is used

2014-04-29 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61001

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2014-04-29
 Ever confirmed|0   |1


[Bug fortran/59577] OpenMP: ICE with type(c_ptr) in private()

2014-04-29 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59577

--- Comment #3 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 +++ This bug was initially created as a clone of Bug #51024 +++

What is the added value of this PR with respect to pr51024? IMO it should be
closed as a duplicate.


[Bug c++/60999] [4.9/4.10 Regression] ICE when static_cast from constexpr in specialization of template-class

2014-04-29 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60999

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-04-29
  Known to work||4.8.2
   Target Milestone|--- |4.9.1
Summary|[4.9 Regression] ICE when   |[4.9/4.10 Regression] ICE
   |static_cast from constexpr  |when static_cast from
   |in specialization of|constexpr in specialization
   |template-class  |of template-class
 Ever confirmed|0   |1
  Known to fail||4.9.0

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
Confirmed.


[Bug c/60998] [MIPS] -O3 produces infinite while() loop. -O2 produces correct code.

2014-04-29 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60998

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
You need to build with -fno-tree-loop-distribute-patterns.  We detect the
loop is doing a memset and replace it with a memset call otherwise.

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


[Bug middle-end/56888] memcpy implementation optimized as a call to memcpy

2014-04-29 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56888

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||exmortis at yandex dot ru

--- Comment #25 from Richard Biener rguenth at gcc dot gnu.org ---
*** Bug 60998 has been marked as a duplicate of this bug. ***


[Bug fortran/61002] New: Can't divide by 0

2014-04-29 Thread fkrogh#gcc at mathalacarte dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61002

Bug ID: 61002
   Summary: Can't divide by 0
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: fkrogh#gcc at mathalacarte dot com

If I have a statement like

real(kind(1.0d0)), parameter :: big=1.0d0/0.0d0

the compile fails with an error even when using the option -ffpe-trap=

The man page for gcc makes this excellent point

   -Wno-div-by-zero
   Do not warn about compile-time integer division by zero.  Floating-
   point division by zero is not warned about, as it can be a
   legitimate way of obtaining infinities and NaNs.

And in fact, all I'm trying to do is obtain infinity.


[Bug middle-end/56888] memcpy implementation optimized as a call to memcpy

2014-04-29 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56888

--- Comment #26 from Richard Biener rguenth at gcc dot gnu.org ---
(In reply to Janosch Rux from comment #24)
 When upgrading our build environment we ran into this. We worked around the
 way mentioned in the comments.
 
 No Problems with: 4.6.3 
 Broken with:  4.8.2

-ftree-loop-distribute-patterns is on by default at -O3 since GCC 4.6, a
change from GCC 4.5 and before which needed explicit enabling of this.

More recent GCC may have become more clever in recognizing them though
(for example non-zero memset support is quite recent).


[Bug fortran/61002] Can't divide by 0

2014-04-29 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61002

--- Comment #1 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Compile with -fno-range-check. Also

f951: warning: command line option '-Wno-div-by-zero' is valid for
C/C++/ObjC/ObjC++ but not for Fortran


[Bug bootstrap/60984] [4.9 Regression] AIX: gcc-4.9.0 bootstrap fails in stage-2

2014-04-29 Thread tgard at opentext dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60984

--- Comment #7 from Torbjörn Gard tgard at opentext dot com ---
I used gcc-4.8.2

[Bug middle-end/56888] memcpy implementation optimized as a call to memcpy

2014-04-29 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56888

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org

--- Comment #27 from Richard Biener rguenth at gcc dot gnu.org ---
Ok, so looking at this again.

We don't have a cgraph node for builtin_decl_(implicit|explicit)
(BUILT_IN_MEMSET).

But it seems that decl has DECL_ASSEMBLER_NAME_SET_P (not sure if set
correctly though).

So we can use symtab_node_for_asm (DECL_ASSEMBLER_NAME ()) and
eventually get to symtab_alias_target of that and check if it
is equal to the current function.

Index: gcc/tree-loop-distribution.c
===
--- gcc/tree-loop-distribution.c(revision 209892)
+++ gcc/tree-loop-distribution.c(working copy)
@@ -71,6 +71,7 @@ along with GCC; see the file COPYING3.
 #include tree-pass.h
 #include gimple-pretty-print.h
 #include tree-vectorizer.h
+#include cgraph.h


 /* A Reduced Dependence Graph (RDG) vertex representing a statement.  */
@@ -1084,6 +1085,15 @@ classify_partition (loop_p loop, struct
  || !dominated_by_p (CDI_DOMINATORS,
  loop-latch, gimple_bb (stmt)))
return;
+  tree fn = builtin_decl_implicit (BUILT_IN_MEMSET);
+  if (DECL_ASSEMBLER_NAME_SET_P (fn))
+   {
+ symtab_node *n1 = symtab_node_for_asm (DECL_ASSEMBLER_NAME (fn));
+ symtab_node *n2 = symtab_get_node (cfun-decl);
+ if (n1 == n2
+ || (n1-alias  symtab_alias_target (n1) == n2))
+   return;
+   }
   partition-kind = PKIND_MEMSET;
   partition-main_dr = single_store;
   partition-niter = nb_iter;


fixes the following testcase:

typedef __SIZE_TYPE__ size_t;
extern void *
memset (void *s, int c, size_t n) __attribute__ ((weak, alias(_memset)));

void *
_memset(void *s, int c, size_t n)
{
  char *q = (char *)s;
  while (n != 0)
{
  *(q++) = c;
  n--;
}
}

it won't fix glibc as that uses

asm(.alias );

for the aliases which we don't parse.

It of course also fixes the very direct recursion.  At least if
the assembler name of the builtin agrees with that of the function.

Honza, is there a more fancy way of doing this?


[Bug libgcc/61003] New: [4.9 Regression] Segfault in __deregister_frame_info_bases when exiting, on i686-mingw32 with dw2 unwinding

2014-04-29 Thread fanael4 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61003

Bug ID: 61003
   Summary: [4.9 Regression] Segfault in
__deregister_frame_info_bases when exiting, on
i686-mingw32 with dw2 unwinding
   Product: gcc
   Version: 4.9.1
Status: UNCONFIRMED
  Severity: critical
  Priority: P3
 Component: libgcc
  Assignee: unassigned at gcc dot gnu.org
  Reporter: fanael4 at gmail dot com
Target: i686-*-mingw32

When targeting i686-mingw32 all programs compiled with GCC with DWARF2
unwinding, including GCC itself, segfault when exiting. The segfaults are null
pointer references in __deregister_frame_info_bases, called from atexit handler
runner.

Tested on 4.9.1 r. 209891. Didn't test the trunk.

Backtrace (from Wine, on real Windows it's very similar):
#0  0x010b7810 in __deregister_frame_info_bases (begin=0x7ed5bb6f
MSVCRT__cexit+127) at ../../../../src/gcc/libgcc/unwind-dw2-fde.c:216
#1  0x05c2fd38 in ?? ()
#2  0x7ed5bb6f in MSVCRT__cexit () from /usr/bin/../lib32/wine/msvcrt.dll.so
#3  0x7ed5be3e in MSVCRT_exit () from /usr/bin/../lib32/wine/msvcrt.dll.so
#4  0x004014c3 in __tmainCRTStartup ()
#5  0x7b86041c in call_process_entry () from
/usr/bin/../lib32/wine/kernel32.dll.so
#6  0x7b861563 in ExitProcess () from /usr/bin/../lib32/wine/kernel32.dll.so
#7  0x7bc80490 in call_thread_func_wrapper () from
/usr/bin/../lib32/wine/ntdll.dll.so
#8  0x7bc834cf in call_thread_func () from /usr/bin/../lib32/wine/ntdll.dll.so
#9  0x7bc8046e in RtlRaiseException () from /usr/bin/../lib32/wine/ntdll.dll.so
#10 0x7bc53931 in call_dll_entry_point () from
/usr/bin/../lib32/wine/ntdll.dll.so
#11 0xf7559b6d in wine_call_on_stack () from /usr/bin/../lib32/libwine.so.1
#12 0xf7559c4e in wine_switch_to_stack () from /usr/bin/../lib32/libwine.so.1


[Bug libgcc/61003] [4.9 Regression] Segfault in __deregister_frame_info_bases when exiting, on i686-mingw32 with dw2 unwinding

2014-04-29 Thread fanael4 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61003

--- Comment #1 from Fanael fanael4 at gmail dot com ---
Note: I was compiling with -O2, so the line number may not be very indicative.
Should I post a backtrace of -O0?


[Bug tree-optimization/60971] [4.9/4.10 Regression] Wrong code when coercing unsigned char to bool

2014-04-29 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60971

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Tue Apr 29 14:44:07 2014
New Revision: 209900

URL: http://gcc.gnu.org/viewcvs?rev=209900root=gccview=rev
Log:
PR tree-optimization/60971
* tree-tailcall.c (process_assignment): Reject conversions which
reduce precision.

* c-c++-common/turtore/pr60971.c: New test.

Added:
trunk/gcc/testsuite/c-c++-common/torture/pr60971.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-tailcall.c


[Bug tree-optimization/60971] [4.9/4.10 Regression] Wrong code when coercing unsigned char to bool

2014-04-29 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60971

--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Tue Apr 29 14:45:24 2014
New Revision: 209901

URL: http://gcc.gnu.org/viewcvs?rev=209901root=gccview=rev
Log:
PR tree-optimization/60971
* tree-tailcall.c (process_assignment): Reject conversions which
reduce precision.

* c-c++-common/turtore/pr60971.c: New test.

Added:
branches/gcc-4_9-branch/gcc/testsuite/c-c++-common/torture/pr60971.c
Modified:
branches/gcc-4_9-branch/gcc/ChangeLog
branches/gcc-4_9-branch/gcc/testsuite/ChangeLog
branches/gcc-4_9-branch/gcc/tree-tailcall.c


[Bug middle-end/56888] memcpy implementation optimized as a call to memcpy

2014-04-29 Thread bugdal at aerifal dot cx
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56888

--- Comment #28 from Rich Felker bugdal at aerifal dot cx ---
On Tue, Apr 29, 2014 at 02:16:38PM +, rguenth at gcc dot gnu.org wrote:
 Honza, is there a more fancy way of doing this?

The only correct way to fix this is to honor -ffreestanding and never
generate references to hosted-C functions (which include memset) when
-ffreestanding is used.


[Bug fortran/61002] Can't divide by 0

2014-04-29 Thread fkrogh#gcc at mathalacarte dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61002

--- Comment #2 from Fred Krogh fkrogh#gcc at mathalacarte dot com ---
Thanks, that did the job.


[Bug c++/61004] New: [4.9/4.10 Regression] Spurious warning: dereferencing type-punned pointer

2014-04-29 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61004

Bug ID: 61004
   Summary: [4.9/4.10 Regression] Spurious warning: dereferencing
type-punned pointer
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: glisse at gcc dot gnu.org

struct A{};
struct B:A{};
void f(A const);
int main(){
  B b;
  f(b);
}

g++ -O2 -Wall x.cc -c
x.cc: In function 'int main()':
x.cc:6:6: warning: dereferencing type-punned pointer will break strict-aliasing
rules [-Wstrict-aliasing]
   f(b);
  ^

I think that's perfectly valid C++...
(I don't have a 4.9 handy, I think I've been seeing this since before the
branch, but please check before confirming the bug)


[Bug c++/61004] [4.10 Regression] Spurious warning: dereferencing type-punned pointer

2014-04-29 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61004

Jonathan Wakely redi at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-04-29
  Known to work||4.8.2, 4.9.0
Summary|[4.9/4.10 Regression]   |[4.10 Regression] Spurious
   |Spurious warning:   |warning: dereferencing
   |dereferencing type-punned   |type-punned pointer
   |pointer |
 Ever confirmed|0   |1

--- Comment #1 from Jonathan Wakely redi at gcc dot gnu.org ---
4.9.0 and 4.9.1 are OK


[Bug tree-optimization/60997] -fopenmp conflicts with -floop-interchange

2014-04-29 Thread mircea.namolaru at inria dot fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60997

--- Comment #3 from Mircea Namolaru mircea.namolaru at inria dot fr ---
It is not that -floop-interchange is disabled, but the code received by
graphite is different if the option -fopenmp is enabled. In this case the check
for data
dependencies required by loop-interchange fails. I wil check more in depth if 
the data dependencies are right in this case or there is a problem with them
(but probably not). 

I guess that the problem is the same for vectorization (but there the data
dependencies for vectorization are not checked by graphite).


[Bug c++/51707] [c++11] constexpr constructor cannot initialize const reference member

2014-04-29 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51707

--- Comment #2 from Paolo Carlini paolo.carlini at oracle dot com ---
This is fixed in 4.9.0. I'm adding the testcase and closing the bug.


[Bug fortran/49630] [OOP] ICE on obsolescent deferred-length type bound character function

2014-04-29 Thread zeccav at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49630

Vittorio Zecca zeccav at gmail dot com changed:

   What|Removed |Added

 CC||zeccav at gmail dot com

--- Comment #5 from Vittorio Zecca zeccav at gmail dot com ---
Running the test case with gfortran 4.9.0 
I get a shift larger than HOST_BITS_PER_WIDE_INT (64 on x86-64)
in double-int.c:675 m = ((unsigned HOST_WIDE_INT) 2  (prec - 1)) - 1;
because prec is 295.
Maybe this is connected to the original bug?


[Bug tree-optimization/61000] No loop interchange for inner loop along the slow index

2014-04-29 Thread mircea.namolaru at inria dot fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61000

--- Comment #1 from Mircea Namolaru mircea.namolaru at inria dot fr ---
The built-in heuristics assess that loop interchange is not profitable. Indeed
there is a problem, I would expected that the second loop to be found
profitable.
Need to look more in depth at this.


[Bug debug/41736] missing DW_TAG_template_*_ in some cases

2014-04-29 Thread tromey at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41736

--- Comment #10 from Tom Tromey tromey at gcc dot gnu.org ---
Today I noticed another case.  If you have a template like:

templatetypename R, const char *NAME, typename A
[...]

... then NAME is not given a value in the instantiation:

 265c5: Abbrev Number: 51 (DW_TAG_template_type_param)
65c6   DW_AT_name: R  
65c8   DW_AT_type: 0x3042   
 265cc: Abbrev Number: 122 (DW_TAG_template_value_param)
65cd   DW_AT_name: (indirect string, offset: 0x6768): NAME
65d1   DW_AT_type: 0x66ac   
 265d5: Abbrev Number: 51 (DW_TAG_template_type_param)
65d6   DW_AT_name: A1 
65d9   DW_AT_type: 0x30aa


[Bug debug/49312] Make DW_AT_name contain only simple name, no template-id

2014-04-29 Thread tromey at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49312

Tom Tromey tromey at gcc dot gnu.org changed:

   What|Removed |Added

 CC||tromey at gcc dot gnu.org

--- Comment #3 from Tom Tromey tromey at gcc dot gnu.org ---
FWIW I am not totally sold on this idea.
It's attractive in an abstract way but I am not
sure what impact it will have on gdb in practice.


[Bug c++/51707] [c++11] constexpr constructor cannot initialize const reference member

2014-04-29 Thread paolo at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51707

--- Comment #3 from paolo at gcc dot gnu.org paolo at gcc dot gnu.org ---
Author: paolo
Date: Tue Apr 29 16:53:27 2014
New Revision: 209905

URL: http://gcc.gnu.org/viewcvs?rev=209905root=gccview=rev
Log:
2014-04-29  Paolo Carlini  paolo.carl...@oracle.com

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

Added:
trunk/gcc/testsuite/g++.dg/cpp0x/constexpr-51707.C
Modified:
trunk/gcc/testsuite/ChangeLog


[Bug c++/51707] [c++11] constexpr constructor cannot initialize const reference member

2014-04-29 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51707

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

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

--- Comment #4 from Paolo Carlini paolo.carlini at oracle dot com ---
Done.


[Bug c++/55004] [meta-bug] constexpr issues

2014-04-29 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55004
Bug 55004 depends on bug 51707, which changed state.

Bug 51707 Summary: [c++11] constexpr constructor cannot initialize const 
reference member
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51707

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED


[Bug bootstrap/60984] [4.9 Regression] AIX: gcc-4.9.0 bootstrap fails in stage-2

2014-04-29 Thread dje at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60984

--- Comment #8 from David Edelsohn dje at gcc dot gnu.org ---
I reproduced the failure starting with both GCC 4.6.3 and GCC 4.8.1.

However, I am seeing some very strange results:

r209278 built in /tmp/20140412 SUCCESS

r209300 (trunk before branch) built in /tmp/209300 SUCCESS

r209304 (branch before DEV-PHASE commit) built in /tmp/209304 SUCCESS

r209304 built in /tmp/G49 FAIL

I am testing again with /tmp/Z49

This is starting to look like either the build directory name or build path
length affects this failure.


[Bug c++/60683] confused by earlier errors, bailing out on incorrect std::initializer_list

2014-04-29 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60683

--- Comment #2 from Paolo Carlini paolo.carlini at oracle dot com ---
c++/59318


[Bug c++/58582] [c++11] ICE defining and instantiating deleted template function

2014-04-29 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58582

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-04-29
   Assignee|unassigned at gcc dot gnu.org  |paolo.carlini at oracle 
dot com
   Target Milestone|--- |4.10.0
 Ever confirmed|0   |1

--- Comment #1 from Paolo Carlini paolo.carlini at oracle dot com ---
Mine.


[Bug java/61005] New: libgcj.spec openned when not needed (-S on command line)

2014-04-29 Thread 00pebuis at bsu dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61005

Bug ID: 61005
   Summary: libgcj.spec openned when not needed (-S on command
line)
   Product: gcc
   Version: 4.8.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: java
  Assignee: unassigned at gcc dot gnu.org
  Reporter: 00pebuis at bsu dot edu

I get a libgcj.spec no such file or directory error message when
cross-compiling on an x86 linux host with an ARM target. I'm using the -S
option to emit assembly code and *not* converting to .o or linking. The
libgcj.spec file describes how to link, so is unnedeed. It would seem to me
that if -S is specified on the command it is just asking for trouble to attempt
to open this .spec file.

Of course, the *real* problem is in my Linux distro which didn't provide the
needed .spec file for cross-compiling.


[Bug bootstrap/60984] [4.9 Regression] AIX: gcc-4.9.0 bootstrap fails in stage-2

2014-04-29 Thread dje at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60984

--- Comment #9 from David Edelsohn dje at gcc dot gnu.org ---
Torbjorn: could you try building in a different directory, e.g.,

/builds/MMDD for the date or some random number?


[Bug java/61005] libgcj.spec openned when not needed (-S on command line)

2014-04-29 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61005

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |WONTFIX

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
No this .spec file is required as it sets options that are passed to jc1
depending on the target:

*jc1: -fhash-synchronization -fno-use-divide-subroutine  -fuse-boehm-gc
-fnon-call-exceptions%{findirect-dispatch:-fPIC} -fkeep-inline-functions


[Bug java/61005] libgcj.spec openned when not needed (-S on command line)

2014-04-29 Thread sch...@linux-m68k.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61005

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

   What|Removed |Added

 Resolution|WONTFIX |INVALID

--- Comment #2 from Andreas Schwab sch...@linux-m68k.org ---
Not a bug after all.


[Bug c++/60999] [4.9/4.10 Regression] ICE when static_cast from constexpr in specialization of template-class

2014-04-29 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60999

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org,
   ||jason at gcc dot gnu.org,
   ||paolo at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org ---
Started with r204818.


[Bug pch/60982] Very long compilation of precompiled headers

2014-04-29 Thread georgthegreat at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60982

--- Comment #5 from Yuriy Chernyshov georgthegreat at gmail dot com ---
I've reconfigured gcc, so it wouldn't build precompiled headers and created a
gcc-build subfolder (as FAQ said).

Now the following command hangs:
libtool: compile:  /gpfs/data/chernyshov/contrib/gcc-4.8.2/gcc-build/./gcc/xgcc
-shared-libgcc -B/gpfs/data/chernyshov/contrib/gcc-4.8.2/gcc-build/./gcc
-nostdinc++
-L/gpfs/data/chernyshov/contrib/gcc-4.8.2/gcc-build/powerpc64-unknown-linux-gnu/libstdc++-v3/src
-L/gpfs/data/chernyshov/contrib/gcc-4.8.2/gcc-build/powerpc64-unknown-linux-gnu/libstdc++-v3/src/.libs
-B/gpfs/data/chernyshov/chroot/powerpc64-unknown-linux-gnu/bin/
-B/gpfs/data/chernyshov/chroot/powerpc64-unknown-linux-gnu/lib/ -isystem
/gpfs/data/chernyshov/chroot/powerpc64-unknown-linux-gnu/include -isystem
/gpfs/data/chernyshov/chroot/powerpc64-unknown-linux-gnu/sys-include
-I/gpfs/data/chernyshov/contrib/gcc-4.8.2/libstdc++-v3/../libgcc
-I/gpfs/data/chernyshov/contrib/gcc-4.8.2/gcc-build/powerpc64-unknown-linux-gnu/libstdc++-v3/include/powerpc64-unknown-linux-gnu
-I/gpfs/data/chernyshov/contrib/gcc-4.8.2/gcc-build/powerpc64-unknown-linux-gnu/libstdc++-v3/include
-I/gpfs/data/chernyshov/contrib/gcc-4.8.2/libstdc++-v3/libsupc++ -std=gnu++11
-D_GLIBCXX_SHARED -fno-implicit-templates -Wall -Wextra -Wwrite-strings
-Wcast-qual -Wabi -fdiagnostics-show-location=once -ffunction-sections
-fdata-sections -frandom-seed=random.lo -g -O2 -D_GNU_SOURCE -c
../../../../../libstdc++-v3/src/c++11/random.cc  -fPIC -DPIC -D_GLIBCXX_SHARED
-o random.o

This is just a compilation command, so I consider something is wrong in my
environment, but I really can't say what.


[Bug c++/61004] [4.10 Regression] Spurious warning: dereferencing type-punned pointer

2014-04-29 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61004

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org
   Target Milestone|--- |4.10.0

--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org ---
Started with r209412.


[Bug fortran/60993] Trouble initializing double precision variable using boz literals

2014-04-29 Thread anlauf at gmx dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60993

Harald Anlauf anlauf at gmx dot de changed:

   What|Removed |Added

 CC||anlauf at gmx dot de

--- Comment #1 from Harald Anlauf anlauf at gmx dot de ---
The ICE is not nice.

However, in the meantime you can try something like the following
as a workaround:

  real(8), parameter :: dinf = real (z'7ff8',8)
  real(8), parameter :: dnan = real (z'7ff0',8)
  write(*,*) dnan, dinf
  write(*,'(z16.16,4x,z16.16)') dnan, dinf
end

which works for me.


[Bug fortran/60993] Trouble initializing double precision variable using boz literals

2014-04-29 Thread fkrogh#gcc at mathalacarte dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60993

--- Comment #2 from Fred Krogh fkrogh#gcc at mathalacarte dot com ---
Thanks for the suggestion.  As a result of another suggestion, I'm using
 -fno-range-check and defining infinity as 1.0d0/0.0d0.


[Bug bootstrap/61006] libcpp/lex.c: must use 'enum' tag to refer to type raw_str_phase

2014-04-29 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61006

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |INVALID

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
This is supposed to be compiled with the C++ compiler and not the C compiler
now.  If clang++ is not being used, that is the issue.


[Bug bootstrap/61006] New: libcpp/lex.c: must use 'enum' tag to refer to type raw_str_phase

2014-04-29 Thread spamcop at tgos dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61006

Bug ID: 61006
   Summary: libcpp/lex.c: must use 'enum' tag to refer to type
raw_str_phase
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: blocker
  Priority: P3
 Component: bootstrap
  Assignee: unassigned at gcc dot gnu.org
  Reporter: spamcop at tgos dot net

gcc-4.9.0/libcpp/lex.c:1394

The original line is:

raw_str_phase phase = RAW_STR_PREFIX;

This is incorrect. It must be:

enum raw_str_phase phase = RAW_STR_PREFIX;

Because raw_str_phase is an enum type, it isn't typedef'ed and lex.c is a C
file (not a C++ file). As a result, when building with clang, it correctly
complains:

must use 'enum' tag to refer to type 'raw_str_phase'


[Bug c++/61007] New: New strict-aliasing warnings in 4.10.0

2014-04-29 Thread larsbj at gullik dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61007

Bug ID: 61007
   Summary: New strict-aliasing warnings in 4.10.0
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: larsbj at gullik dot net

Created attachment 32707
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32707action=edit
gzipped preprossed code showing the problem

In current trunk I get some new strict-aliasing warnings that I did
not get with 4.9.0.

Shown when compiling attached preprocessed code with:
(the operations.ii is from boost release 1.55, boost.filesystem)

g++ -O2 -Wall -Wno-unused -std=gnu++11 -c operations.ii

...
functional/boost/libs/filesystem/src/operations.cpp:343:40: warning:
dereferencing type-punned pointer will break strict-aliasing rules
[-Wstrict-aliasing]
 return fs::directory_iterator(p)== end_dir_itr;
^
...

$ g++ --version
g++ (GCC) 4.10.0 20140424 (experimental)


[Bug bootstrap/61006] libcpp/lex.c: must use 'enum' tag to refer to type raw_str_phase

2014-04-29 Thread spamcop at tgos dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61006

--- Comment #2 from spamcop at tgos dot net ---
Okay, but looking at the rest of the code, this seems to be the only
enum/struct/union that is not correctly typed according to C rules. E.g. all
the other variables of enum type have `enum` in the variable declaration and if
I just fix this one line, the file compiles as standard C without any problem.
So if nothing else than this line is a at least a serve break of style compared
to the rest of the file and as far as I can tell the only reason why this file
is not standard C and would need a C++ compiler.


[Bug bootstrap/61006] libcpp/lex.c: must use 'enum' tag to refer to type raw_str_phase

2014-04-29 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61006

--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org ---
(In reply to spamcop from comment #2)
 Okay, but looking at the rest of the code, this seems to be the only
 enum/struct/union that is not correctly typed according to C rules. E.g.
 all the other variables of enum type have `enum` in the variable declaration
 and if I just fix this one line, the file compiles as standard C without any
 problem. So if nothing else than this line is a at least a serve break of
 style compared to the rest of the file and as far as I can tell the only
 reason why this file is not standard C and would need a C++ compiler.

The code was originally written as C code and then moved over to C++ in 4.8;
except it was not converted, just compiled as C++ code.  Now C++ism are being
placed in the code which is why you see the difference here.


[Bug fortran/60993] Trouble initializing double precision variable using boz literals

2014-04-29 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60993

Dominique d'Humieres dominiq at lps dot ens.fr changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-04-29
 Ever confirmed|0   |1

--- Comment #3 from Dominique d'Humieres dominiq at lps dot ens.fr ---
 The ICE is not nice.

Seems related to pr59910.


[Bug c++/61007] New strict-aliasing warnings in 4.10.0

2014-04-29 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61007

Marc Glisse glisse at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |DUPLICATE

--- Comment #1 from Marc Glisse glisse at gcc dot gnu.org ---
Yes, it happens all over the place in large C++ programs, I am surprised it
doesn't show up in the testsuite at all.

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


[Bug c++/61004] [4.10 Regression] Spurious warning: dereferencing type-punned pointer

2014-04-29 Thread glisse at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61004

Marc Glisse glisse at gcc dot gnu.org changed:

   What|Removed |Added

 CC||larsbj at gullik dot net

--- Comment #3 from Marc Glisse glisse at gcc dot gnu.org ---
*** Bug 61007 has been marked as a duplicate of this bug. ***


[Bug c++/60951] [4.9/4.10 Regression][C++11] ICE with braced-init-list assignment and constexpr constructor

2014-04-29 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60951

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |jason at gcc dot gnu.org


[Bug c++/60980] [4.9/4.10 Regression] ICE in build_special_member_call, at cp/call.c:7447

2014-04-29 Thread jason at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60980

Jason Merrill jason at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
   Assignee|unassigned at gcc dot gnu.org  |jason at gcc dot gnu.org


[Bug c/43245] add option to control discarding qualifiers warnings

2014-04-29 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43245

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC||mpolacek at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |mpolacek at gcc dot 
gnu.org

--- Comment #4 from Marek Polacek mpolacek at gcc dot gnu.org ---
Potential fix: http://gcc.gnu.org/ml/gcc-patches/2014-04/msg02016.html


[Bug c/29467] -ansi -pedantic accepts _Bool without diagnostic

2014-04-29 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29467

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC||mpolacek at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |mpolacek at gcc dot 
gnu.org

--- Comment #6 from Marek Polacek mpolacek at gcc dot gnu.org ---
Potential fix: http://gcc.gnu.org/ml/gcc-patches/2014-04/msg02015.html


[Bug c/43395] Gcc warns label as local variable

2014-04-29 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43395

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC||mpolacek at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |mpolacek at gcc dot 
gnu.org

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
Potential fix: http://gcc.gnu.org/ml/gcc-patches/2014-04/msg02014.html


[Bug c/56989] wrong location in error message

2014-04-29 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56989

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC||mpolacek at gcc dot gnu.org
   Assignee|unassigned at gcc dot gnu.org  |mpolacek at gcc dot 
gnu.org

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
I've sent a patch, but it hasn't shown up on ML yet.


[Bug c++/61008] New: g++ crash in analyze_functions

2014-04-29 Thread fab...@ritter-vogt.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61008

Bug ID: 61008
   Summary: g++ crash in analyze_functions
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: fab...@ritter-vogt.de

Created attachment 32708
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32708action=edit
-save-temps

After I added the implementation of the BillboardRender constructor,
g++ crashes while compiling.

Command line:
/opt/nspire/Ndless/ndless-sdk/toolchain/install/bin/arm-none-eabi-g++
-mcpu=arm926ej-s -I /home/fabian/.ndless/include -I
/opt/nspire/Ndless/ndless-sdk/bin/../include -fPIC -fno-use-cxa-atexit
-fno-exceptions -fno-rtti -mlong-calls -D _TINSPIRE -std=c++11 -O3 -g -Wall -W
-marm -ffast-math -mcpu=arm926ej-s -fno-math-errno -fno-tree-vectorize
-fomit-frame-pointer -flto -c billboardrenderer.cpp -o billboardrenderer.o

arm-none-eabi-g++ -v:
Using built-in specs.
COLLECT_GCC=arm-none-eabi-g++
COLLECT_LTO_WRAPPER=/opt/nspire/Ndless/ndless-sdk/toolchain/install/lib/gcc/arm-none-eabi/4.9.0/lto-wrapper
Target: arm-none-eabi
Configured with: ../gcc-4.9.0/configure --target=arm-none-eabi
--prefix=/opt/nspire/Ndless/ndless-sdk/toolchain/install --enable-interwork
--enable-multilib --enable-languages=c,c++ --with-system-zlib --with-newlib
--with-headers=../newlib-2.0.0/newlib/libc/include --disable-shared
--with-gnu-as --with-gnu-ld --with-float=soft --disable-werror
Thread model: single
gcc version 4.9.0 (GCC)

Constructor:
BillboardRenderer::BillboardRenderer(std::mapuint8_t, std::tupleunsigned int,
unsigned int, const char* map) : map(map)
{
}

I attached the files it generates with -save-temps.


[Bug tree-optimization/61009] New: Incorrect jump threading in dom

2014-04-29 Thread tejohnson at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61009

Bug ID: 61009
   Summary: Incorrect jump threading in dom
   Product: gcc
   Version: 4.10.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: tejohnson at google dot com

Created attachment 32709
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32709action=edit
t.C

We ran into a runtime failure that was tracked down to the jump threading
performed during the dom1 pass. I reproduced it with trunk (updated to
r209902).

I've attached a reduced test case. Build with:

g++ -fno-tree-vrp -O2 -std=c++11 -fno-strict-aliasing t.C -S

Unfortunately it isn't runnable, but the problem is apparent in the resulting
dumps/assembly.

The code initially looks like:

   for (int j = 0; j  NKF ; ++j) {
 int field_idx = idxs[j];
 int cmp = doCmp(row_offset, field_idx);
 fprintf (stderr, cmp=%d\n,cmp);

 if (cmp == 0) {
   continue;
 }
 if (cmp  0) {
   is_different = true;
   break;
 } else {
   fprintf (stderr, Incorrect\n);
   return false;
 }
   }

But after dom1 jump threading it looks something like:

   for (int j = 0; j  NKF ; ++j) {
 int field_idx = idxs[j];
 int cmp = doCmp(row_offset, field_idx);
 fprintf (stderr, cmp=%d\n,cmp);

 if (cmp == 0) {
   goto L1
 }
 if (cmp  0) {
   is_different = true;
   break;
 } else {
ERROR:
   fprintf (stderr, Incorrect\n);
   return false;
 }

L1:
 ++j;
 if (j = NKF)
break;

 field_idx = idxs[j];
 cmp = doCmp(row_offset, field_idx);
 fprintf (stderr, cmp=%d\n,cmp);

 if (cmp == 0) {
   goto L1
 }
 goto ERROR
   }

Notice that after threading, the duplicated code wrongly simplifies away the
check of cmp  0.

I've also attached the dom1 dump. The problematic jump thread is this one:

  Registering jump thread: (14, 12) incoming edge;  (12, 4) joiner;  (4, 5)
nocopy;

Since some of these blocks (12 and 14) were created by the earlier dom
optimizations, I modified tree-ssa-threadupdate.c to dump the cfg when entering
thread_through_all_blocks. The attached dump includes that extra dump.


[Bug c++/61008] g++ crash in analyze_functions

2014-04-29 Thread fab...@ritter-vogt.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61008

--- Comment #1 from Fabian Vogt fab...@ritter-vogt.de ---
Created attachment 32711
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32711action=edit
-save-temps (assembler)


[Bug tree-optimization/61009] Incorrect jump threading in dom

2014-04-29 Thread tejohnson at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61009

--- Comment #1 from Teresa Johnson tejohnson at google dot com ---
Created attachment 32710
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32710action=edit
t.C.078t.dom1


[Bug c++/61008] g++ crash in analyze_functions

2014-04-29 Thread fab...@ritter-vogt.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61008

Fabian Vogt fab...@ritter-vogt.de changed:

   What|Removed |Added

  Attachment #32711|0   |1
is obsolete||

--- Comment #2 from Fabian Vogt fab...@ritter-vogt.de ---
Created attachment 32712
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32712action=edit
Preprocessed source


[Bug tree-optimization/61009] Incorrect jump threading in dom

2014-04-29 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61009

--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org ---
Most likely related to bug 60902.


[Bug tree-optimization/61009] Incorrect jump threading in dom

2014-04-29 Thread ppluzhnikov at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61009

Paul Pluzhnikov ppluzhnikov at google dot com changed:

   What|Removed |Added

 CC||ppluzhnikov at google dot com

--- Comment #3 from Paul Pluzhnikov ppluzhnikov at google dot com ---
Google ref: b/14380607


[Bug c++/61008] g++ crash in analyze_functions

2014-04-29 Thread fab...@ritter-vogt.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61008

--- Comment #3 from Fabian Vogt fab...@ritter-vogt.de ---
Forgot to paste the output:
billboardrenderer.cpp:13:51: warning: unused parameter 'block'
[-Wunused-parameter]
 AABB BillboardRenderer::getAABB(const BLOCK_WDATA block, GLFix x, GLFix y,
GLFix z)
   ^
billboardrenderer.cpp:13:64: warning: unused parameter 'x' [-Wunused-parameter]
 AABB BillboardRenderer::getAABB(const BLOCK_WDATA block, GLFix x, GLFix y,
GLFix z)
^
billboardrenderer.cpp:13:73: warning: unused parameter 'y' [-Wunused-parameter]
 AABB BillboardRenderer::getAABB(const BLOCK_WDATA block, GLFix x, GLFix y,
GLFix z)
 ^
billboardrenderer.cpp:13:82: warning: unused parameter 'z' [-Wunused-parameter]
 AABB BillboardRenderer::getAABB(const BLOCK_WDATA block, GLFix x, GLFix y,
GLFix z)
   
  ^
cc1plus: internal compiler error: Segmentation fault
0x91c79f crash_signal
../../gcc-4.9.0/gcc/toplev.c:337
0x6b5252 analyze_functions
../../gcc-4.9.0/gcc/cgraphunit.c:1043
0x6b6204 finalize_compilation_unit()
../../gcc-4.9.0/gcc/cgraphunit.c:2326
0x56bd78 cp_write_global_declarations()
../../gcc-4.9.0/gcc/cp/decl2.c:4611
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.
make: *** [billboardrenderer.o] Error 1


[Bug c/60809] C99 struct initialiser with embedded self assignment

2014-04-29 Thread joseph at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60809

--- Comment #6 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
I see nothing that says anything about the sequencing of side effects in 
initialization expressions with respect to the actual initialization 
itself, or parts thereof - either to require a particular sequencing, or 
to make it indeterminately sequenced or unsequenced.  That may mean it's 
implicitly unsequenced, but I'd suggest raising this with WG14.


[Bug tree-optimization/61009] Incorrect jump threading in dom

2014-04-29 Thread ppluzhnikov at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61009

--- Comment #4 from Paul Pluzhnikov ppluzhnikov at google dot com ---
(In reply to Andrew Pinski from comment #2)
 Most likely related to bug 60902.

Teresa, could you verify whether r209860 (for PR60902) fixes this one as well?


[Bug tree-optimization/61009] Incorrect jump threading in dom

2014-04-29 Thread law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61009

Jeffrey A. Law law at redhat dot com changed:

   What|Removed |Added

 CC||law at redhat dot com

--- Comment #5 from Jeffrey A. Law law at redhat dot com ---
I really doubt this is related to 60902.


[Bug testsuite/59778] FAIL: gcc.dg/atomic/c11-atomic-exec-5.c

2014-04-29 Thread joseph at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59778

--- Comment #3 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
On Mon, 14 Apr 2014, danglin at gcc dot gnu.org wrote:

 I tend to think the failure of this test on hppa is mainly a
 testsuite issue.  Specifically, the test performs operations that may
 raise exceptions and the result of these operations are tested:

The test expects IEEE semantics for arithmetic results and exceptions (in 
round-to-nearest).

 The PA-RISC 2.0 Architecture states that the destination is undefined
 except in the case when it is one of the source registers for invalid
 and divide by zero.  It also appears based on my testing that the results
 are not as expected by the test for overflow, underflow and inexact
 operations.

An undefined result hardly makes sense for inexact, at least, even if 
the processor isn't claiming IEEE floating point

First, the TARGET_ATOMIC_ASSIGN_EXPAND_FENV hook needs implementing; this 
test is always expected to fail for platforms not defining that hook.  
Without that hook, results not as expected can simply arise from the 
operation not being properly atomic regarding floating-point exceptions.

Then, if you still see failures with that hook defined, if there is an 
option such as -mieee to enable IEEE semantics (e.g. through enabling 
traps to the kernel with kernel emulation for the problem cases), then it 
would be appropriate to use it with dg-additional-options; otherwise, the 
fenv_exceptions effective-target may need adjusting to exclude the problem 
targets.  But the first step is defining the hook.


[Bug other/60843] Documentation: 4.5 Integers/C99 6.3.1.3 (reduce modulo 2^N)

2014-04-29 Thread joseph at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60843

--- Comment #1 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
On Tue, 15 Apr 2014, kdevel at vogtner dot de wrote:

 For conversion to a type of width N, the value is reduced modulo 2^N to be
 within range of the type; no signal is raised.
 
 Reduce A modulo M usually means find the least integer R in the range [0, M -
 1] such that A is congruent R modulo M. But this is not what gcc compiled

I don't see the problem.  It explicitly says reduced modulo 2^N to be 
within range of the type, and that unambiguously defines the result 
value, as there is exactly one result within the range of the type that is 
equal to the input, modulo 2^N.  The qualifier to be within range of the 
type says that [0, M - 1] is irrelevant, because that isn't the range of 
the type in question.

This is the normal form of modulo arithmetic for signed types, as used for 
example by -fwrapv (and defined in detail in the first (1994) edition of 
LIA-1; the second (2012) edition removes the modulo operations, but the 
underlying wrap_I operation is in LIA-2).


[Bug tree-optimization/61009] Incorrect jump threading in dom

2014-04-29 Thread tejohnson at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61009

--- Comment #6 from Teresa Johnson tejohnson at google dot com ---
On Tue, Apr 29, 2014 at 2:46 PM, ppluzhnikov at google dot com
gcc-bugzi...@gcc.gnu.org wrote:
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=61009

 --- Comment #4 from Paul Pluzhnikov ppluzhnikov at google dot com ---
 (In reply to Andrew Pinski from comment #2)
 Most likely related to bug 60902.

 Teresa, could you verify whether r209860 (for PR60902) fixes this one as well?

I thought it might be a dup of that too, but I updated today to
r209902 and the problem remains.
Thanks,
Teresa


 --
 You are receiving this mail because:
 You reported the bug.


[Bug c++/60999] [4.9/4.10 Regression] ICE when static_cast from constexpr in specialization of template-class

2014-04-29 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60999

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 Status|NEW |ASSIGNED
 CC|D.Bahadir at GMX dot de|
   Assignee|unassigned at gcc dot gnu.org  |paolo.carlini at oracle 
dot com

--- Comment #4 from Paolo Carlini paolo.carlini at oracle dot com ---
I'm finishing testing this, appears to work fine so far:

Index: pt.c
===
--- pt.c(revision 209916)
+++ pt.c(working copy)
@@ -463,6 +463,7 @@ maybe_begin_member_template_processing (tree decl)

   if (nsdmi)
 decl = (CLASSTYPE_TEMPLATE_INFO (DECL_CONTEXT (decl))
+ uses_template_parms (DECL_CONTEXT (decl))
 ? CLASSTYPE_TI_TEMPLATE (DECL_CONTEXT (decl))
 : NULL_TREE);


  1   2   >