[Bug c/59801] New: GCC does not warn on unused global variable

2014-01-14 Thread chengniansun at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59801

Bug ID: 59801
   Summary: GCC does not warn on unused global variable
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: chengniansun at gmail dot com

Created attachment 31829
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31829action=edit
the test case to trigger the bug.

I used the following command 

$gcc -Wall -Wextra -pedantic -std=c11 -c unused-var.c

And GCC outputs no warnings.


However in the source file unused-var.c, the last global variable g_1853 is
NOT used. 

//  Start of the source file /
/**
 * compile this program with the following command
 *
 * gcc -c -pedantic -std=c11 -Wall -Wextra unused-var.c
 */


static int g_37 = (-1L);
static int *g_187 = g_37;

/**
 * this variable will NOT be reported although it is NOT used.
 */
static int ** volatile g_1853 = g_187;/* VOLATILE GLOBAL g_1853 */

//  End of the source file /


The Gcc version is 4.9.0, built on 01/09/2014
gcc (GCC) 4.9.0 20140109 (experimental)
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


[Bug ipa/59775] [4.9 Regression] internal compiler error: Segmentation fault

2014-01-14 Thread nheghathivhistha at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59775

--- Comment #10 from David Kredba nheghathivhistha at gmail dot com ---
After your patch applied it not segfaults any more.
Unfortunately it not builds too, link of one module fails:

[build MOD] swext
S=/var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2 
O=$S/solver/unxlngx6.pro  W=$S/workdir/unxlngx6.pro   mkdir -p $W/Module/ 
touch $W/Module/swext
/var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/workdir/unxlngx6.pro/CxxObject/sc/source/filter/oox/workbookhelper.o:
In function `~egmentProgressBar':
/var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/include/oox/helper/progressbar.hxx:110:
undefined reference to `oox::ISegmentProgresBar::~ISegmentProgressBar()'
/var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/include/oox/helper/progressbar.hxx:110:
undefined reference to `oox::ISegmentProgresBar::~ISegmentProgressBar()'
/var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/include/oox/helper/progressbar.hxx:110:
undefined reference to `oox::ISegmentProgresBar::~ISegmentProgressBar()'
/var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/workdir/unxlngx6.pro/CxxObject/sc/source/filter/oox/workbookhelper.o:
In function `ox::SegmentProgressBar::~SegmentProgressBar()':
/var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/include/oox/helper/progressbar.hxx:110:
undefined reference to `oox::ISegmentProgresBar::~ISegmentProgressBar()'
/var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/workdir/unxlngx6.pro/CxxObject/sc/source/filter/oox/workbookhelper.o:
In function `~egmentProgressBar':
/var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/include/oox/helper/progressbar.hxx:110:
undefined reference to `oox::ISegmentProgresBar::~ISegmentProgressBar()'
collect2: error: ld returned 1 exit status

Can this be anyhow related to your patch? Or GCC at all?

Why it names the function as `~egmentProgressBar'
when there is not such?
:
objdump -x
/var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/workdir/unxlngx6.pro/CxxObject/sc/source/filter/oox/workbookheer.o
|grep egment
372 .text.unlikely._ZN3oox18SegmentProgressBarD2Ev    
  d3ca  2**1
373 .text._ZN3oox18SegmentProgressBarD2Ev 0025   
  d3d0  2**4
374 .text.unlikely._ZN3oox18SegmentProgressBarD0Ev    
  d3f6  2**1
375 .text._ZN3oox18SegmentProgressBarD0Ev 002d   
  d400  2**4
 ld  .text.unlikely._ZN3oox18SegmentProgressBarD2Ev
 .text.unlikely._ZN3oox18SegmentProgressBarD2Ev
 ld  .text._ZN3oox18SegmentProgressBarD2Ev 
 .text._ZN3oox18SegmentProgressBarD2Ev
 ld  .text.unlikely._ZN3oox18SegmentProgressBarD0Ev
 .text.unlikely._ZN3oox18SegmentProgressBarD0Ev
 ld  .text._ZN3oox18SegmentProgressBarD0Ev 
 .text._ZN3oox18SegmentProgressBarD0Ev
 l   .group 
_ZN3oox18SegmentProgressBarD5Ev
  wF .text._ZN3oox18SegmentProgressBarD2Ev 
0025 _ZN3oox18SegmentProgressBarD2Ev
 *UND*   _ZTVN3oox18SegmentProgressBarE
 *UND*  
_ZN3oox19ISegmentProgressBarD2Ev
  wF .text._ZN3oox18SegmentProgressBarD2Ev 
0025 _ZN3oox18SegmentProgressBarD1Ev
  wF .text._ZN3oox18SegmentProgressBarD0Ev 
002d _ZN3oox18SegmentProgressBarD0Ev
 *UND*  
_ZN3oox18SegmentProgressBarC1ERKN3com3sun4star3uno9ReferenceINS3_4task16XStatusIndicatorEEERKN3rtl8OUStringE
58c1 R_X86_64_GOTPCREL 
_ZN3oox18SegmentProgressBarD0Ev-0x0004
58ce R_X86_64_GOTPCREL 
_ZTVN3oox18SegmentProgressBarE-0x0004
58e6 R_X86_64_PLT32   
_ZN3oox19ISegmentProgressBarD2Ev-0x0004
69af R_X86_64_PLT32   
_ZN3oox18SegmentProgressBarC1ERKN3com3sun4star3uno9ReferenceINS3_4task16XStatusIndicatorEEERKN3rtl8OUStringE-0x0004
69cc R_X86_64_GOTPCREL 
_ZN3oox18SegmentProgressBarD0Ev-0x0004
69d9 R_X86_64_GOTPCREL 
_ZTVN3oox18SegmentProgressBarE-0x0004
69f2 R_X86_64_PLT32   
_ZN3oox19ISegmentProgressBarD2Ev-0x0004
6ae7 R_X86_64_PLT32   
_ZN3oox18SegmentProgressBarC1ERKN3com3sun4star3uno9ReferenceINS3_4task16XStatusIndicatorEEERKN3rtl8OUStringE-0x0004
6b04 R_X86_64_GOTPCREL 
_ZN3oox18SegmentProgressBarD0Ev-0x0004
6b11 R_X86_64_GOTPCREL 
_ZTVN3oox18SegmentProgressBarE-0x0004
6b2a R_X86_64_PLT32   

[Bug c/59802] New: excessive compile time in loop unswitching

2014-01-14 Thread dcb314 at hotmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59802

Bug ID: 59802
   Summary: excessive compile time in loop unswitching
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: dcb314 at hotmail dot com

Created attachment 31830
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31830action=edit
gzipped C++ source code

I just compiled the attached code with gcc trunk 20140112 on a x86_64
box with flag -O3 and it took over eight minutes.  Using only -O2 took
a more reasonable 2 minutes 38 seconds.

For reference, the redhat version of gcc 482 took 2 minutes 32 seconds
for -O3 and 2 minutes 11 seconds for -O2.

I can see that for -O2, trunk is using about 30 seconds more CPU time,
which is fine, but for -O3 over 5 minutes more.

I tried flag -ftime-report and here are all the times  1%.

Execution times (seconds)
 phase opt and generate  : 465.18 (100%) usr   0.50 (57%) sys 468.04 (100%)
wall  130935 kB (59%) ggc
 loop invariant motion   :  22.50 ( 5%) usr   0.01 ( 1%) sys  22.85 ( 5%) wall 
 2 kB ( 0%) ggc
 loop unswitching: 302.37 (65%) usr   0.01 ( 1%) sys 303.82 (65%) wall 
72 kB ( 0%) ggc
 CPROP   :  85.02 (18%) usr   0.09 (10%) sys  85.52 (18%) wall 
  4445 kB ( 2%) ggc
 TOTAL : 466.12 0.88   469.55
221219 kB

Suggest code rework for trunk for -O3, maybe in the area of loop unswitching.

This bug may be a duplicate of bug 38518


[Bug testsuite/59494] [4.9 Regression] FAIL: gfortran.dg/vect/fast-math-mgrid-resid.f scan-tree-dump-times optimized vect_[^\\n]*\\+ 13

2014-01-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59494

--- Comment #9 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Tue Jan 14 09:00:30 2014
New Revision: 206598

URL: http://gcc.gnu.org/viewcvs?rev=206598root=gccview=rev
Log:
PR testsuite/59494
* gfortran.dg/vect/fast-math-mgrid-resid.f: Change
-fdump-tree-optimized to -fdump-tree-pcom-details in dg-options and
cleanup-tree-dump from optimized to pcom.  Remove scan-tree-dump-times
for vect_\[^\\n\]*\\+, add scan-tree-dump-times for no suitable chains and
Executing predictive commoning without unrolling.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f


[Bug c/59801] GCC does not warn on unused global variable

2014-01-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59801

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
Don't mark the variable volatile then.  Volatile tells the compiler the
variable may be used through means not known to the compiler, so it isn't
unused.


[Bug testsuite/59494] [4.9 Regression] FAIL: gfortran.dg/vect/fast-math-mgrid-resid.f scan-tree-dump-times optimized vect_[^\\n]*\\+ 13

2014-01-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59494

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution|--- |FIXED

--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org ---
Fixed.


[Bug tree-optimization/59006] [4.9 Regression] internal compiler error: in vect_transform_stmt, at tree-vect-stmts.c:5963

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59006

--- Comment #7 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Tue Jan 14 09:04:50 2014
New Revision: 206599

URL: http://gcc.gnu.org/viewcvs?rev=206599root=gccview=rev
Log:
2014-01-14  Richard Biener  rguent...@suse.de

PR tree-optimization/58921
PR tree-optimization/59006
* tree-vect-loop-manip.c (vect_loop_versioning): Remove code
hoisting invariant stmts.
* tree-vect-stmts.c (vectorizable_load): Insert the splat of
invariant loads on the preheader edge if possible.

* gcc.dg/torture/pr58921.c: New testcase.
* gcc.dg/torture/pr59006.c: Likewise.
* gcc.dg/vect/pr58508.c: XFAIL no longer handled cases.

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr58921.c
trunk/gcc/testsuite/gcc.dg/torture/pr59006.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/vect/pr58508.c
trunk/gcc/tree-vect-loop-manip.c
trunk/gcc/tree-vect-stmts.c


[Bug ipa/59775] [4.9 Regression] internal compiler error: Segmentation fault

2014-01-14 Thread trippels at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59775

--- Comment #11 from Markus Trippelsdorf trippels at gcc dot gnu.org ---
(In reply to David Kredba from comment #10)
 After your patch applied it not segfaults any more.
 Unfortunately it not builds too, link of one module fails:
 
 [build MOD] swext
 S=/var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2
  O=$S/solver/unxlngx6.pro  W=$S/workdir/unxlngx6.pro   mkdir -p
 $W/Module/  touch $W/Module/swext
 /var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/
 workdir/unxlngx6.pro/CxxObject/sc/source/filter/oox/workbookhelper.o: In
 function `~egmentProgressBar':
 /var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/
 include/oox/helper/progressbar.hxx:110: undefined reference to
 `oox::ISegmentProgresBar::~ISegmentProgressBar()'
 /var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/
 include/oox/helper/progressbar.hxx:110: undefined reference to
 `oox::ISegmentProgresBar::~ISegmentProgressBar()'
 /var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/
 include/oox/helper/progressbar.hxx:110: undefined reference to
 `oox::ISegmentProgresBar::~ISegmentProgressBar()'
 /var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/
 workdir/unxlngx6.pro/CxxObject/sc/source/filter/oox/workbookhelper.o: In
 function `ox::SegmentProgressBar::~SegmentProgressBar()':
 /var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/
 include/oox/helper/progressbar.hxx:110: undefined reference to
 `oox::ISegmentProgresBar::~ISegmentProgressBar()'
 /var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/
 workdir/unxlngx6.pro/CxxObject/sc/source/filter/oox/workbookhelper.o: In
 function `~egmentProgressBar':
 /var/tmp/portage/app-office/libreoffice-4.1.4.2/work/libreoffice-4.1.4.2/
 include/oox/helper/progressbar.hxx:110: undefined reference to
 `oox::ISegmentProgresBar::~ISegmentProgressBar()'
 collect2: error: ld returned 1 exit status
 
 Can this be anyhow related to your patch? Or GCC at all?

No. I ran into exactly the same issue a while ago. 
$W/CxxObject/oox/source/helper/progressbar.o is missing in the list
of object files when linking. This is a libreoffice bug.


[Bug tree-optimization/58921] [4.9 Regression] ICE with segfault on valid code at -O3 on x86_64-linux-gnu

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58921

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
Fixed.


[Bug tree-optimization/59006] [4.9 Regression] internal compiler error: in vect_transform_stmt, at tree-vect-stmts.c:5963

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59006

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #8 from Richard Biener rguenth at gcc dot gnu.org ---
Fixed.


[Bug tree-optimization/58921] [4.9 Regression] ICE with segfault on valid code at -O3 on x86_64-linux-gnu

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58921

Bug 58921 depends on bug 59006, which changed state.

Bug 59006 Summary: [4.9 Regression] internal compiler error: in 
vect_transform_stmt, at tree-vect-stmts.c:5963
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59006

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED


[Bug tree-optimization/58921] [4.9 Regression] ICE with segfault on valid code at -O3 on x86_64-linux-gnu

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58921

--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
Author: rguenth
Date: Tue Jan 14 09:04:50 2014
New Revision: 206599

URL: http://gcc.gnu.org/viewcvs?rev=206599root=gccview=rev
Log:
2014-01-14  Richard Biener  rguent...@suse.de

PR tree-optimization/58921
PR tree-optimization/59006
* tree-vect-loop-manip.c (vect_loop_versioning): Remove code
hoisting invariant stmts.
* tree-vect-stmts.c (vectorizable_load): Insert the splat of
invariant loads on the preheader edge if possible.

* gcc.dg/torture/pr58921.c: New testcase.
* gcc.dg/torture/pr59006.c: Likewise.
* gcc.dg/vect/pr58508.c: XFAIL no longer handled cases.

Added:
trunk/gcc/testsuite/gcc.dg/torture/pr58921.c
trunk/gcc/testsuite/gcc.dg/torture/pr59006.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/vect/pr58508.c
trunk/gcc/tree-vect-loop-manip.c
trunk/gcc/tree-vect-stmts.c


[Bug ada/57795] Fail Canadian cross building Ada

2014-01-14 Thread yselkowitz at users dot sourceforge.net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57795

Yaakov (Cygwin Ports) yselkowitz at users dot sourceforge.net changed:

   What|Removed |Added

 CC||yselkowitz at users dot 
sourceforg
   ||e.net

--- Comment #1 from Yaakov (Cygwin Ports) yselkowitz at users dot 
sourceforge.net ---
I also ran into this when cross-compiling a native gcc with Ada
(i686-pc-cygwin/x86_64-pc-cygwin/x86_64-pc-cygwin) in the process of porting
GNAT to a new platform.  In fact, I believe this would happen any time $build
!= $host (regardless of $target), but NOT with the typical cross-compiler
($build == $host, $host != $target).

The root of the problem is RTS_DIR override (immediately prior to
gnattools-cross rule) in gnattools/Makefile.in, which calls gnatls (for $build)
where IIUC it should be something like $(GNATMAKE:gnatmake=gnatls) (for $host).

There is another problem in this situation: in
gcc/ada/gcc-interface/Make-lang.in, the xgnatugn rule (part of building
doc/projects.texi and doc/gnat_ugn.texi) calls $(GNATMAKE), resulting in a
xgnatugn which runs on $host instead of $build; this probably needs to be just
gnatmake instead.


[Bug target/58172] ifcvt test failures for armv8-a

2014-01-14 Thread ktkachov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58172

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #2 from ktkachov at gcc dot gnu.org ---
These tests pass with multilib -march=armv8-a flags in current trunk (r206577)

The lslc Ld, Ln, #1 is now being caught I believe.

Closing as fixed, please reopen if you find them failing in some configuration.


[Bug c/52023] [C11] _Alignof (double) yields wrong value on x86

2014-01-14 Thread jbg...@lug-owl.de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023

--- Comment #17 from Jan-Benedict Glaw jbg...@lug-owl.de ---
(In reply to Marek Polacek from comment #16)
  tree field = build_decl (UNKNOWN_LOCATION, FIELD_DECL, NULL_TREE,
   ^
  cc1plus: all warnings being treated as errors
 
 Should be fixed now.

No, not yet. The most recent build for powerpc64-darwin done by my build robot
still faces this warning and thus breaks:

http://toolchain.lug-owl.de/buildbot/show_build_details.php?id=89063

--
http://toolchain.lug-owl.de/buildbot/deliver_artifact.php?mode=viewid=733877

So what shall we do with this? The macro is called with two arguments, of which
one (field) isn't used. Just mark it as unused or (void)-cast it away?


[Bug ada/55946] wrong tools used for build of gnattools [native-cross]

2014-01-14 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55946

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

 CC||alexpux at gmail dot com

--- Comment #7 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
*** Bug 57795 has been marked as a duplicate of this bug. ***


[Bug ada/57795] Fail Canadian cross building Ada

2014-01-14 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57795

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||ebotcazou at gcc dot gnu.org
 Resolution|--- |DUPLICATE

--- Comment #2 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
.

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


[Bug rtl-optimization/59802] excessive compile time in RTL optimizers (loop unswitching, CPROP)

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59802

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||compile-time-hog
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-14
  Component|c   |rtl-optimization
Summary|excessive compile time in   |excessive compile time in
   |loop unswitching|RTL optimizers (loop
   ||unswitching, CPROP)
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
GCC 4.8 shows

 CPROP   :  45.00 (57%) usr   0.02 ( 4%) sys  45.01 (57%) wall 
  4016 kB ( 2%) ggc
 TOTAL :  78.48 0.5779.04
213705 kB

while GCC 4.9 has

 loop invariant motion   :  10.11 (11%) usr   0.01 ( 2%) sys  10.16 (11%) wall 
 2 kB ( 0%) ggc
 loop unswitching:   9.81 (11%) usr   0.00 ( 0%) sys   9.83 (11%) wall 
 1 kB ( 0%) ggc
 CPROP   :  48.16 (54%) usr   0.04 ( 7%) sys  48.20 (54%) wall 
   kB ( 2%) ggc

so I can't really confirm the unswitching slowness (this is r205857 which
is somewhat older than your test).

Generally I think we should probably consider removing RTL unswitching,
there is not a single loop unswitched by RTL for this testcase.


[Bug rtl-optimization/59802] excessive compile time in RTL optimizers (loop unswitching, CPROP)

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59802

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
Oh, did you configure with --enable-checking=release for 4.9?  (I did)


[Bug middle-end/38518] Excessive compile time with -O3

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38518

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
With GCC 4.8 we see

 loop invariant motion   :  16.79 (32%) usr   0.02 ( 3%) sys  16.65 (31%) wall 
   148 kB ( 0%) ggc
 loop unswitching:  10.43 (20%) usr   0.02 ( 3%) sys  10.42 (20%) wall 
 0 kB ( 0%) ggc
 TOTAL :  52.07 0.6753.00
363360 kB

which is RTL loop optimizers.


[Bug c/59749] unused warning not emited for unused static struct unles -save-temps is used

2014-01-14 Thread martin at netbsd dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59749

--- Comment #2 from Martin Husemann martin at netbsd dot org ---
Unfortunately I can not reproduce the issue with the .i file generated with
-save-temps (but still with the original .c file).


[Bug target/59803] New: [4.8 Regression] s390x -march=z10 reload ICE

2014-01-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59803

Bug ID: 59803
   Summary: [4.8 Regression] s390x -march=z10 reload ICE
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jakub at gcc dot gnu.org

extern void baz (void) __attribute__ ((__noreturn__));
struct A { int g, h; };
extern struct A a;
struct B { unsigned char i, j, k, l, m; };
int c, d, e;
static int f;

void
foo (void)
{
  f = 1;
}

void
bar (struct B *x)
{
  x-i = e;
  x-k = c;
  x-l = d;
  x-j = a.h;
  x-m = f;
  if (x-i != e) baz ();
  if (x-k != c) baz ();
  if (x-j != a.h) baz ();
}

ICEs with -O2 -march=z10 on 4.8 branch (verified with x86_64-linux -
s390x-linux cross at r206599).  Works in 4.6 and works on the trunk, though it
is unclear if it just isn't latent.

Before reload we have:
(insn 10 9 11 2 (set (reg:SI 58 [ d ])
(mem/c:SI (symbol_ref:DI (d)  var_decl 0x7f11a63617b8 d) [2 d+0 S4
A32])) rh1052372.ii:19 67 {*movsi_zarch}
 (expr_list:REG_EQUIV (mem/c:SI (symbol_ref:DI (d)  var_decl
0x7f11a63617b8 d) [2 d+0 S4 A32])
(nil)))
(insn 11 10 13 2 (set (mem:QI (plus:DI (reg/v/f:DI 57 [ x ])
(const_int 3 [0x3])) [0 x_4(D)-l+0 S1 A8])
(subreg:QI (reg:SI 58 [ d ]) 3)) rh1052372.ii:19 74 {*movqi}
 (expr_list:REG_DEAD (reg:SI 58 [ d ])
(nil)))
and the ICE is about unrecognized instruction:
(insn 61 10 11 2 (set (reg:DI 12 %r12)
(const:DI (plus:DI (symbol_ref:DI (d) var_decl 0x7fbc425267b8 d)
(const_int 3 [0x3] rh1052372.ii:19 -1
 (nil))
If I look at trunk dumps, it seems the difference there is already at expansion
time, while on the trunk *.expand has separate insns to set (symbol_ref:DI
(d)
to a pseudo and load (mem:SI (that pseudo)), 4.8 branch uses movsi_zarch insn
which is load from (mem:SI (symbol_ref:DI (d))).  Then, at combine time
trunk combines the store with the load (and not symbol_ref larl), while 4.8
fails to combine the store with the load because I suppose lowest bit in larl
loaded value can't be set?


[Bug target/59803] [4.8 Regression] s390x -march=z10 reload ICE

2014-01-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59803

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||krebbel at gcc dot gnu.org
   Target Milestone|--- |4.8.3


[Bug c/52023] [C11] _Alignof (double) yields wrong value on x86

2014-01-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #18 from Jakub Jelinek jakub at gcc dot gnu.org ---
(void) cast it away in the Darwin macro.  But that is tracked already in
PR59496.


[Bug middle-end/28865] Structures with a flexible arrray member have wrong .size

2014-01-14 Thread amodra at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28865

--- Comment #24 from Alan Modra amodra at gmail dot com ---
Nick's latest patch passes bootstrap and regression testing powerpc64-linux.


[Bug c++/59791] [4.9 Regression] ICE: Error reporting routines re-entered. with -fcompare-debug

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59791

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.9.0


[Bug rtl-optimization/59802] excessive compile time in RTL optimizers (loop unswitching, CPROP)

2014-01-14 Thread dcb314 at hotmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59802

--- Comment #3 from David Binderman dcb314 at hotmail dot com ---
(In reply to Richard Biener from comment #2)
 Oh, did you configure with --enable-checking=release for 4.9?  (I did)

No, I used --enable-checking=yes.


[Bug c++/59800] Compilation with g++ fails when -Ofast -flto is used to compile code using some random distribution

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59800

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2014-01-14
 Ever confirmed|0   |1

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
That's not an error but a warning?!  Anyway, it's triggered by
-Wmaybe-uninitialized.

Also happens on trunk.


[Bug target/59803] [4.8 Regression] s390x -march=z10 reload ICE

2014-01-14 Thread krebbel at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59803

Andreas Krebbel krebbel at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2014-01-14
   Assignee|unassigned at gcc dot gnu.org  |krebbel at gcc dot 
gnu.org
 Ever confirmed|0   |1

--- Comment #1 from Andreas Krebbel krebbel at gcc dot gnu.org ---
There is a secondary reload which is supposed to handle that case. I'll try to
figure out what went wrong here.

Due to LRA being enabled by default on S/390 the situation on trunk is probably
not comparable.


[Bug target/59797] GCC doesn't warn AVX-512 ABI change

2014-01-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59797

--- Comment #2 from H.J. Lu hjl.tools at gmail dot com ---
(In reply to Yukhin Kirill from comment #1)
 Sorry, didn't get the problem.
 
 According to output you provided - GCC warns ABI changes
 
 Here is analogue for AVX2:
 $ cat 2.c
 typedef long long __m256i __attribute__ ((__vector_size__ (32),
 __may_alias__));
 
 __m256i
 f1(__m256i x, __m256i y)
 {
   return y;
 }
 $ gcc -S 2.c
 2.c: In function ‘f1’:
 2.c:4:1: note: The ABI for passing parameters with 32-byte alignment has
 changed in GCC 4.6

This isn't a ABI change warning.  It just informs users
that GCC has changed ABI in GCC 4.6.

  f1(__m256i x, __m256i y)
  ^
 2.c:4:1: warning: AVX vector argument without AVX enabled changes the ABI
 [enabled by default]

This is the ABI change warning for __m256i when AVX is disabled.

 Difference is that AVX[2] warns about using data types without enabling
 AVX2. Is that the case

We need a similar warning for __m512i when AVX-512 is disabled.

[Bug c++/59800] Compilation with g++ fails when -Ofast -flto is used to compile code using some random distribution

2014-01-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59800

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek jakub at gcc dot gnu.org ---
And looking at the libstdc++ code, it indeed has _M_saved initially
uninitialized, and all reads of it guarded by _M_saved_available flag. 
Supposedly predicate aware unitialized warning pass isn't able to figure that
out.


[Bug target/59794] [4.7/4.8/4.9 Regression] i386 backend fails to detect MMX/SSE/AVX return value

2014-01-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59794

--- Comment #6 from H.J. Lu hjl.tools at gmail dot com ---
[hjl@gnu-17 tmp]$ cat /tmp/f.i
typedef int __v4si __attribute__ ((__vector_size__ (16)));
typedef long long __m128i __attribute__ ((__vector_size__ (16),
__may_alias__));

__m128i
f1(void)
{
  return __extension__ (__m128i)(__v4si){ 0, 0, 0, 0 };
}
[hjl@gnu-17 tmp]$
/export/gnu/import/git/gcc-regression/gcc-4_0-branch/83189/usr/bin/gcc -S -O
/tmp/f.i -mno-sse -m32
/tmp/f.i: In function `f1':
/tmp/f.i:6: warning: SSE vector return without SSE enabled changes the ABI
[hjl@gnu-17 tmp]$
/export/gnu/import/git/gcc-regression/gcc-4_0-branch/83189/usr/bin/gcc -v
Reading specs from
/export/gnu/import/git/gcc-regression/gcc-4_0-branch/83189/usr/lib/gcc/x86_64-unknown-linux-gnu/3.5.0/specs
Configured with: ../../../gcc/configure
--prefix=/export/gnu/import/git/gcc-regression/gcc-4_0-branch/83189/usr
--enable-clocale=gnu --with-system-zlib --with-demangler-in-ld
--enable-languages=c,c++ --disable-bootstrap
Thread model: posix
gcc version 3.5.0 20040615 (experimental)
[hjl@gnu-17 tmp]$
/export/gnu/import/git/gcc-regression/gcc-4_0-branch/85148/usr/bin/gcc -S -O
/tmp/f.i -mno-sse -m32
[hjl@gnu-17 tmp]$
/export/gnu/import/git/gcc-regression/gcc-4_0-branch/85148/usr/bin/gcc -v
Reading specs from
/export/gnu/import/git/gcc-regression/gcc-4_0-branch/85148/usr/lib/gcc/x86_64-unknown-linux-gnu/3.5.0/specs
Configured with: ../../../gcc/configure
--prefix=/export/gnu/import/git/gcc-regression/gcc-4_0-branch/85148/usr
--enable-clocale=gnu --with-system-zlib --with-demangler-in-ld
--enable-languages=c,c++ --disable-bootstrap
Thread model: posix
gcc version 3.5.0 20040725 (experimental)
[hjl@gnu-17 tmp]$


[Bug rtl-optimization/59802] excessive compile time in RTL optimizers (loop unswitching, CPROP)

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59802

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||steven at gcc dot gnu.org

--- Comment #4 from Richard Biener rguenth at gcc dot gnu.org ---
(In reply to David Binderman from comment #3)
 (In reply to Richard Biener from comment #2)
  Oh, did you configure with --enable-checking=release for 4.9?  (I did)
 
 No, I used --enable-checking=yes.

That makes the comparison to 4.8 invalid (uses --enable-checking=release
by default).

Btw, callgrind shows that compile-time is dominated by
bitmap_intersection_of_preds (and bitmap_ior_and_compl),
called from lcm.c:compute_available.  LCM works with
sbitmaps which can be very expensive for large functions.

tree PRE uses regular bitmaps, but it seems that LCM can
end up using the full bitmap via returning bitmap_ones
from bitmap_intersection_of_preds (for a block with no preds).

It seems compute_available doesn't use optimal iteration order
and that explicitely representing the maximum set instead of
handling unvisited preds makes things more expensive (need to
use sbitmaps).

Iterating in inverted postorder gets me

 CPROP   :   2.13 ( 5%) usr   0.06 (10%) sys   2.20 ( 5%) wall 
   kB ( 2%) ggc

with no changes in generated code ...


[Bug c++/59804] New: C++ front-end checking ends in an infinite loop on erroneous code

2014-01-14 Thread jamborm at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59804

Bug ID: 59804
   Summary: C++ front-end checking ends in an infinite loop on
erroneous code
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jamborm at gcc dot gnu.org

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

I discovered this problem when multidelta-reducing a different PR.
Multidelta produced this invalid source that however causes the c++
front-end of an checking-enabled compiler to end up in an infinite
loop (or just takes incredible time to finish but I doubt that).

Release-checking g++ compains about errors and exits normally.

x86_64-linux, no compiler options necessary.


[Bug target/59787] [ARM] mmx-2.c causes ICE when GCC is configured for cortex-a5/vfpv3-d16-fp16

2014-01-14 Thread renlin.li at arm dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59787

Renlin Li renlin.li at arm dot com changed:

   What|Removed |Added

 CC||renlin.li at arm dot com,
   ||yufeng at gcc dot gnu.org

--- Comment #1 from Renlin Li renlin.li at arm dot com ---
Confirm that, gcc.target/arm/mmx-2.c cause an ICE with the following
configuration.
--target=arm-none-linux-gnueabihf
--with-arch=armv7-a
--with-fpu=vfpv3-d16
--with-float=softfp


(insn 51 50 52 2 (set (reg:DI 534 [orig:139 D.4720 ] [139])
(mem/v/c:DI (plus:SI (reg/f:SI 102 sfp)
(const_int -20 [0xffec])) [0 llsink+0 S8 A64]))
mmx-2.c:4
2 447 {*iwmmxt_arm_movdi}
 (nil))

(insn 573 0 0 (set (reg:DI 139 [ D.4720 ])
(reg:DI 534 [orig:139 D.4720 ] [139])) -1
 (nil))

lra_constraints() keeps reloading reg 139 until Max. number of reload insns
is reached.


[Bug rtl-optimization/59802] excessive compile time in RTL optimizers (loop unswitching, CPROP)

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59802

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
http://gcc.gnu.org/ml/gcc-patches/2014-01/msg00780.html

Even better would be to get rid of the explicit maximum set (just ignore
incoming edges with the maximum set, aka 'unvisited' edges during
bitmap_intersection_of_preds).  Basically follow what tree PRE does
for antic-in compute.  That would make using regular bitmaps possible
(if that is a win - at least computing the changed bit is free).  Also
queuing succs at the end of the worklist messes up iteration order for
everything but the first iteration.  PRE uses a sbitmap that records
whether a BB was changed.

Anyway, the above simple patch dramatically improves the numbers for this
testcase.


[Bug preprocessor/59805] New: invalid preprocessing directive not diagnosed with assembler-with-cpp

2014-01-14 Thread aldot at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59805

Bug ID: 59805
   Summary: invalid preprocessing directive not diagnosed with
assembler-with-cpp
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Keywords: diagnostic
  Severity: normal
  Priority: P3
 Component: preprocessor
  Assignee: unassigned at gcc dot gnu.org
  Reporter: aldot at gcc dot gnu.org
CC: tromey at redhat dot com

-x assembler-with-cpp remains silent instead of emitting some kind of
diagnostics.

$ cat libcpp-bug.c
# INCLUDE ./does-not-exist.HHH
# HUH ./does-not-exist.HHH
$ gcc -x assembler-with-cpp -o xxx.o -c libcpp-bug.c -W -Wall -pedantic -Wextra 

Properly diagnosed with c or c-header:

$ gcc -x c -o xxx.o -c libcpp-bug.c -W -Wall -pedantic -Wextra 
libcpp-bug.c:1:3: error: invalid preprocessing directive #INCLUDE
 # INCLUDE ./does-not-exist.HHH
   ^
libcpp-bug.c:2:3: error: invalid preprocessing directive #HUH
 # HUH ./does-not-exist.HHH
   ^
libcpp-bug.c:2:0: warning: ISO C forbids an empty translation unit [-Wpedantic]
 # HUH ./does-not-exist.HHH
 ^

gcc-4.9-trunk@206144

Since the #INCLUDE was not processed this missing diagnostics resulted in wrong
code generated, but adding that keyword.
Didn't look if this is a driver bug.


[Bug target/59794] [4.7/4.8/4.9 Regression] i386 backend fails to detect MMX/SSE/AVX ABI changes

2014-01-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59794

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

   What|Removed |Added

Summary|[4.7/4.8/4.9 Regression]|[4.7/4.8/4.9 Regression]
   |i386 backend fails to   |i386 backend fails to
   |detect MMX/SSE/AVX return   |detect MMX/SSE/AVX ABI
   |value   |changes

--- Comment #7 from H.J. Lu hjl.tools at gmail dot com ---
[hjl@gnu-17 tmp]$ cat /tmp/f.i
typedef int __v4si __attribute__ ((__vector_size__ (16)));
typedef long long __m128i __attribute__ ((__vector_size__ (16),
__may_alias__));

__m128i
f1(void)
{
  return __extension__ (__m128i)(__v4si){ 0, 0, 0, 0 };
}
[hjl@gnu-17 tmp]$
/export/gnu/import/git/gcc-regression/gcc-4_0-branch/83189/usr/bin/gcc -S -O
/tmp/f.i -mno-sse -m32
/tmp/f.i: In function `f1':
/tmp/f.i:6: warning: SSE vector return without SSE enabled changes the ABI
[hjl@gnu-17 tmp]$
/export/gnu/import/git/gcc-regression/gcc-4_0-branch/83189/usr/bin/gcc -v
Reading specs from
/export/gnu/import/git/gcc-regression/gcc-4_0-branch/83189/usr/lib/gcc/x86_64-unknown-linux-gnu/3.5.0/specs
Configured with: ../../../gcc/configure
--prefix=/export/gnu/import/git/gcc-regression/gcc-4_0-branch/83189/usr
--enable-clocale=gnu --with-system-zlib --with-demangler-in-ld
--enable-languages=c,c++ --disable-bootstrap
Thread model: posix
gcc version 3.5.0 20040615 (experimental)
[hjl@gnu-17 tmp]$
/export/gnu/import/git/gcc-regression/gcc-4_0-branch/85148/usr/bin/gcc -S -O
/tmp/f.i -mno-sse -m32
[hjl@gnu-17 tmp]$
/export/gnu/import/git/gcc-regression/gcc-4_0-branch/85148/usr/bin/gcc -v
Reading specs from
/export/gnu/import/git/gcc-regression/gcc-4_0-branch/85148/usr/lib/gcc/x86_64-unknown-linux-gnu/3.5.0/specs
Configured with: ../../../gcc/configure
--prefix=/export/gnu/import/git/gcc-regression/gcc-4_0-branch/85148/usr
--enable-clocale=gnu --with-system-zlib --with-demangler-in-ld
--enable-languages=c,c++ --disable-bootstrap
Thread model: posix
gcc version 3.5.0 20040725 (experimental)
[hjl@gnu-17 tmp]$


[Bug target/59794] [4.7/4.8/4.9 Regression] i386 backend fails to detect MMX/SSE/AVX ABI changes

2014-01-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59794

--- Comment #8 from H.J. Lu hjl.tools at gmail dot com ---
A patch is posted at

http://gcc.gnu.org/ml/gcc-patches/2014-01/msg00784.html


[Bug fortran/59806] New: ICE with -ggdb AND -finit-real=snan AND namelist variable AND internal procedure

2014-01-14 Thread mrestelli at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59806

Bug ID: 59806
   Summary: ICE with -ggdb AND -finit-real=snan AND namelist
variable AND internal procedure
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: mrestelli at gmail dot com

Hi all,
   the attached code results in an internal compiler error when
compiled with

gfortran -ggdb -finit-real=snan -c ice.f90

Removing -ggdb and/or -finit-real=snan the code compiles correctly.
Also, removing the namelist containing xx the problem disappears.

(Sorry for the long summary, could't find a shorter one).

$ gfortran --version
GNU Fortran (GCC) 4.9.0 20140110 (experimental)


$ gfortran -ggdb -finit-real=snan -c ice.f90 
ice.f90: In function ‘prog’:
ice.f90:5:0: internal compiler error: in force_decl_die, at dwarf2out.c:20111
  real :: xx
 ^
0x704d34 force_decl_die
gcc/dwarf2out.c:20111
0x705207 gen_namelist_decl
gcc/dwarf2out.c:20632
0x700fd3 gen_decl_die
gcc/dwarf2out.c:20435
0x71314f decls_for_scope
gcc/dwarf2out.c:19969
0x6fe0ea gen_subprogram_die
gcc/dwarf2out.c:18354
0x701014 gen_decl_die
gcc/dwarf2out.c:20336
0x701df8 dwarf2out_function_decl
gcc/dwarf2out.c:20776
0x75289c rest_of_handle_final
gcc/final.c:4469
0x75289c execute
gcc/final.c:4513




program prog

 implicit none

 real :: xx
 character(len=100) :: message

 ! removing the following line the problem disappears
 namelist /input/ xx

contains

 subroutine check()
  write(message,'(e8.2)') xx
 end subroutine check

end program prog

[Bug middle-end/34678] Optimization generates incorrect code with -frounding-math option (#pragma STDC FENV_ACCESS not implemented)

2014-01-14 Thread nmm1 at cam dot ac.uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34678

--- Comment #25 from Nick Maclaren nmm1 at cam dot ac.uk ---
On Jan 10 2014, vincent-gcc at vinc17 dot net wrote:

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

--- Comment #24 from Vincent Lefèvre vincent-gcc at vinc17 dot net -

(In reply to Nick Maclaren from comment #23)

 If __STDC_IEC_559__ is unset or does not have the value 1, setting
 STDC FENV_ACCESS to on is undefined behaviour (see 6.10.8.3, 7.6 and
 Annex F), unless the implementation explicitly chooses to extend the
 language to support it.

You're wrong. The C standard doesn't say that.

I am sorry, but it is you that is wrong.

6.10.8.3 says: __STDC_IEC_559__ The integer constant 1, intended to indica
te
conformance to the specifications in annex F (IEC 60559 floating-point
arithmetic). and nothing about STDC FENV_ACCESS.

3.4.3 says:
undefined behavior
behavior, upon use of a nonportable or erroneous program construct
or of erroneous data, for which this International Standard imposes
no requirements

4. Conformance, paragraph 2, says:
...  Undefined behavior is otherwise indicated in this International
Standard by the words undefined behavior or by the omission of any
explicit definition of behavior.  There is no difference in emphasis
among these three; they all describe behavior that is undefined.

What explicit definition of behavior is there for the case when
STDC FENV_ACCESS is set to on but __STDC_IEC_559__ is not set to one?

As there is none, it is undefined behaviour.  gcc can therefore do
whatever it likes.


Regards,
Nick Maclaren.

[Bug rtl-optimization/38518] Excessive compile time with -O3

2014-01-14 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38518

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||stevenb.gcc at gmail dot com

--- Comment #6 from Richard Biener rguenth at gcc dot gnu.org ---
The issue here is the DF machinery, or rather the fact that RTL invariant
motion
calls df_analyze () for each loop, thus

void
move_loop_invariants (void)
{
  struct loop *loop;

  if (flag_ira_loop_pressure)
{
  df_analyze ();
  regstat_init_n_sets_and_refs ();
  ira_set_pseudo_classes (true, dump_file);
  calculate_loop_reg_pressure ();
  regstat_free_n_sets_and_refs ();
}
  df_set_flags (DF_EQ_NOTES + DF_DEFER_INSN_RESCAN);
  /* Process the loops, innermost first.  */
  FOR_EACH_LOOP (loop, LI_FROM_INNERMOST)
{
  curr_loop = loop;
  /* move_single_loop_invariants for very large loops
 is time consuming and might need a lot of memory.  */
  if (loop-num_nodes = (unsigned) LOOP_INVARIANT_MAX_BBS_IN_LOOP)
move_single_loop_invariants (loop);
}

here move_single_loop_invariants - find_invariants - find_defs which
does

static void
find_defs (struct loop *loop, basic_block *body)
{
  unsigned i;
  bitmap blocks = BITMAP_ALLOC (NULL);

  for (i = 0; i  loop-num_nodes; i++)
bitmap_set_bit (blocks, body[i]-index);

  if (dump_file)
{
  fprintf (dump_file,
   *starting processing of loop %d **\n,
   loop-num);
}

  df_remove_problem (df_chain);
  df_process_deferred_rescans ();
  df_chain_add_problem (DF_UD_CHAIN);
  df_set_blocks (blocks);
  df_set_flags (DF_RD_PRUNE_DEAD_DEFS);
  df_analyze ();
...

which is excessive.  It looks like the above DF stuff does not affects the
whole
function but only the BBs in the loop.  Still the fact that we iterate
from inner to outer loops still
makes the DF analysis time quadratic in the loop depth.

The testcase has only loops of depth 1 (but 2164 ones), so it seems that
the DF restriction to a set of BBs does not work as expected?

From the profile I see that the most time spent in df_analyze is
inverted_post_order_compute and post_order_compute (obviosly not
region aware!) and then bitmap_set_bit and df_prune_to_subcfg.

I wonder if it isn't possible to either update the DF during the
transform, deal with partly out-of-date DF info (like process
loop siblings without re-calculating DF, and re-compute whole FN
DF after such iteration).


[Bug c++/59791] [4.9 Regression] ICE: Error reporting routines re-entered. with -fcompare-debug

2014-01-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59791

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
You don't need -fcompare-debug for that, even just
./cc1plus -std=c++11 testcase.C
ICEs (though, not with -quiet).


[Bug target/59787] [ARM] mmx-2.c causes ICE when GCC is configured for cortex-a5/vfpv3-d16-fp16

2014-01-14 Thread ktkachov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59787

ktkachov at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-14
 CC||ktkachov at gcc dot gnu.org,
   ||vmakarov at redhat dot com
 Ever confirmed|0   |1

--- Comment #2 from ktkachov at gcc dot gnu.org ---
Adding Vlad to cc, since this seems to be an LRA ICE.


[Bug middle-end/34678] Optimization generates incorrect code with -frounding-math option (#pragma STDC FENV_ACCESS not implemented)

2014-01-14 Thread vincent-gcc at vinc17 dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34678

--- Comment #26 from Vincent Lefèvre vincent-gcc at vinc17 dot net ---
(In reply to Nick Maclaren from comment #25)
 3.4.3 says:
 undefined behavior
 behavior, upon use of a nonportable or erroneous program construct
 or of erroneous data, for which this International Standard imposes
 no requirements
 
 4. Conformance, paragraph 2, says:
 ...  Undefined behavior is otherwise indicated in this International
 Standard by the words undefined behavior or by the omission of any
 explicit definition of behavior.  There is no difference in emphasis
 among these three; they all describe behavior that is undefined.
 
 What explicit definition of behavior is there for the case when
 STDC FENV_ACCESS is set to on but __STDC_IEC_559__ is not set to one?

The behavior is defined. The standard says, e.g. for C99:


7.6.1 The FENV_ACCESS pragma

The FENV_ACCESS pragma provides a means to inform the implementation when a
program might access the floating-point environment to test floating-point
status flags or run under non-default floating-point control modes.184) [...]

184) The purpose of the FENV_ACCESS pragma is to allow certain optimizations
that could subvert flag tests and mode changes (e.g., global common
ubexpression elimination, code motion, and constant folding). In general, if
the state of FENV_ACCESS is ``off'', the translator can assume that default
modes are in effect and the flags are not tested.


And there is here no relation at all with __STDC_IEC_559__.

 As there is none, it is undefined behaviour.  gcc can therefore do
 whatever it likes.

No.

[Bug middle-end/34678] Optimization generates incorrect code with -frounding-math option (#pragma STDC FENV_ACCESS not implemented)

2014-01-14 Thread nmm1 at cam dot ac.uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34678

--- Comment #27 from Nick Maclaren nmm1 at cam dot ac.uk ---
On Jan 14 2014, vincent-gcc at vinc17 dot net wrote:

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

 What explicit definition of behavior is there for the case when
 STDC FENV_ACCESS is set to on but __STDC_IEC_559__ is not set to one?

The behavior is defined. The standard says, e.g. for C99:

7.6.1 The FENV_ACCESS pragma

The FENV_ACCESS pragma provides a means to inform the implementation when a
program might access the floating-point environment to test floating-point
status flags or run under non-default floating-point control modes.

I suggest looking up the word explicit in a dictionary.

Unless __STDC_IEC_559__ is set to 1, what modes and flags exist (and,
even more importantly) what there semantics are) is at best implicit and
more realistically unspecified - see footnote 204 for a clear statement of
that.

Have you ever implemented a C system for an architecture with non-IEEE
arithmetic but with modes and flags?  Because I have, and I have used
several others.

 As there is none, it is undefined behaviour.  gcc can therefore do
 whatever it likes.

No.

You are quite simply wrong.


Regards,
Nick Maclaren.


[Bug libstdc++/59807] New: mutex misses destructor if non-function call initialization is used

2014-01-14 Thread ahanins at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59807

Bug ID: 59807
   Summary: mutex misses destructor if non-function call
initialization is used
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ahanins at gmail dot com

Hi,
  Follow up to https://sourceforge.net/p/mingw-w64/bugs/376/

  This is related to GTHR interface to pthread.

  C++11 __mutex_base class does not define a destructor if __GTHREAD_MUTEX_INIT
is defined. It means, underlying implementation (pthread for example) has no
any means to do a resource cleanup when std::mutex is destructed. In
particular, it causes semaphore object resource (handle) leak on Windows in
MinGW winpthread implementation where semaphore object is created during first
pthread_mutex_lock invocation.
  Wouldn't it be more robust to always define a destructor for __mutex_base
which calls __gthread_mutex_destroy, or even more flexibly, introduce a
separate macro like __GTHREAD_MUTEX_DESTROY_FUNCTION which controls whether
destructor should be defined at all or not.


[Bug libstdc++/59807] mutex misses destructor if non-function call initialization is used

2014-01-14 Thread ahanins at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59807

--- Comment #1 from Andrey H. ahanins at gmail dot com ---
Simplest code which leaks handles on Windows:

for(;;) {
  std::mutex op_mutex;
  op_mutex.lock();
  op_mutex.unlock();
}


[Bug middle-end/34678] Optimization generates incorrect code with -frounding-math option (#pragma STDC FENV_ACCESS not implemented)

2014-01-14 Thread vincent-gcc at vinc17 dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34678

--- Comment #28 from Vincent Lefèvre vincent-gcc at vinc17 dot net ---
(In reply to Nick Maclaren from comment #27)
 On Jan 14 2014, vincent-gcc at vinc17 dot net wrote:
 The FENV_ACCESS pragma provides a means to inform the implementation when a
 program might access the floating-point environment to test floating-point
 status flags or run under non-default floating-point control modes.
 
 I suggest looking up the word explicit in a dictionary.

The above is an explicit definition. Where do you see an undefined behavior
here?

#include fenv.h
#pragma STDC FENV_ACCESS ON
int main (void)
{
  return 0;
}

The modes and so on are dealt with in other parts of the standard, e.g.


Each of the macros
FE_DOWNWARD
FE_TONEAREST
FE_TOWARDZERO
FE_UPWARD
is defined if and only if the implementation supports getting and setting the
represented rounding direction by means of the fegetround and fesetround
functions.


This doesn't mean that the rounding direction will necessarily be honored even
for the basic operations (just like the C standard doesn't require 1.0+2.0 to
evaluate as 3.0, and a poorly-designed implementation could decide that 1-bit
accuracy is OK), but honoring the rounding direction when the processor does[*]
is a reasonable QoI feature. Basically, this means: disabling some
optimizations when STDC FENV_ACCESS is set to ON. This is what this bug is
about.

[*] a weaker requirement than __STDC_IEC_559__ being set to 1.

Note that the C standard doesn't explicitly say how a source file as a sequence
of bytes is to be interpreted as a sequence of character, so that if you just
restrict to the C standard, everything is undefined. The discussion is going
nowhere.

[Bug target/59808] New: [4.9 Regression] r206596 caused: FAIL: gcc.target/i386/sse-14.c (test for excess errors)

2014-01-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59808

Bug ID: 59808
   Summary: [4.9 Regression] r206596 caused: FAIL:
gcc.target/i386/sse-14.c (test for excess errors)
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: hjl.tools at gmail dot com
CC: kirill.yukhin at intel dot com

On Linux/x86, r206596 caused:

FAIL: gcc.target/i386/sse-14.c (test for excess errors)


[Bug target/59808] [4.9 Regression] r206596 caused: FAIL: gcc.target/i386/sse-14.c (test for excess errors)

2014-01-14 Thread hjl.tools at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59808

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

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-14
   Target Milestone|--- |4.9.0
 Ever confirmed|0   |1


[Bug c++/59809] New: template non-type parameter in nested class-template said not be declared

2014-01-14 Thread jorenheit at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59809

Bug ID: 59809
   Summary: template non-type parameter in nested class-template
said not be declared
   Product: gcc
   Version: 4.7.2
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jorenheit at gmail dot com

The following code results in a compiler error on GCC 4.7.2:

gccbug.cc:8:15: error: ‘V’ was not declared in this scope

Code:

// ---
// gccbug.cc
template typename T
struct S
{
template int V
struct Inner
{
int a{V};
};
};
// ---

Output of gcc -v:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.7.2-5'
--with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs
--enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.7 --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.7
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object
--enable-plugin --enable-objc-gc --with-arch-32=i586 --with-tune=generic
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu
Thread model: posix
gcc version 4.7.2 (Debian 4.7.2-5) 

Command that triggers the error:
g++ --std=c++11 -c gccbug.cc

This might be related to bug 57239.

[Bug target/59810] New: [AArch64] LDn/STn implementations are not ABI-conformant for bigendian.

2014-01-14 Thread belagod at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59810

Bug ID: 59810
   Summary: [AArch64] LDn/STn implementations are not
ABI-conformant for bigendian.
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: belagod at gcc dot gnu.org

Permuted loads/stores implemented in the aarch64 backend do not conform to
AArch64 ABI for bigendian. The ABI states that 

... On a little endian system this means that element 0 will always contain
the lowest addressed element of a short vector; on a big endian system element
0 will contain the highest addressed element of a short vector.

In the implementations of vec_loadlanes and vec_storelanes in aarch64-simd.md,
they are just loaded lane-wise for both endianness. This may be correct for
little endian, but for bigendian, this is the reversed order. Because the
architecture does not offer a way to perform opaque loads/stores(LDR q, STR q)
for permuted loads, the lanes will need to be reversed after permuted loading
and reversed before permuted storing.


[Bug target/59794] [4.7/4.8/4.9 Regression] i386 backend fails to detect MMX/SSE/AVX ABI changes

2014-01-14 Thread hjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59794

--- Comment #9 from hjl at gcc dot gnu.org hjl at gcc dot gnu.org ---
Author: hjl
Date: Tue Jan 14 16:41:10 2014
New Revision: 206603

URL: http://gcc.gnu.org/viewcvs?rev=206603root=gccview=rev
Log:
Consolidate ABI warning into type_natural_mode

gcc/

PR target/59794
* config/i386/i386.c (type_natural_mode): Add a bool parameter
to indicate if type is used for function return value.  Warn
ABI change if the vector mode isn't available for function
return value.
(ix86_function_arg_advance): Pass false to type_natural_mode.
(ix86_function_arg): Likewise.
(ix86_gimplify_va_arg): Likewise.
(function_arg_32): Don't warn ABI change.
(ix86_function_value): Pass true to type_natural_mode.
(ix86_return_in_memory): Likewise.
(ix86_struct_value_rtx): Removed.
(TARGET_STRUCT_VALUE_RTX): Likewise.

gcc/testsuite/

PR target/59794
* g++.dg/ext/vector23.C: Also prune ABI change for Linux/x86.
* gcc.target/i386/pr39162.c (y): New __m256i variable.
(bar): Change return type to void.  Set y to x.
* gcc.target/i386/pr59794-1.c: New testcase.
* gcc.target/i386/pr59794-2.c: Likewise.
* gcc.target/i386/pr59794-3.c: Likewise.
* gcc.target/i386/pr59794-4.c: Likewise.
* gcc.target/i386/pr59794-5.c: Likewise.
* gcc.target/i386/pr59794-6.c: Likewise.
* gcc.target/i386/pr59794-7.c: Likewise.

Added:
trunk/gcc/testsuite/gcc.target/i386/pr59794-1.c
trunk/gcc/testsuite/gcc.target/i386/pr59794-2.c
trunk/gcc/testsuite/gcc.target/i386/pr59794-3.c
trunk/gcc/testsuite/gcc.target/i386/pr59794-4.c
trunk/gcc/testsuite/gcc.target/i386/pr59794-5.c
trunk/gcc/testsuite/gcc.target/i386/pr59794-6.c
trunk/gcc/testsuite/gcc.target/i386/pr59794-7.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/ext/vector23.C
trunk/gcc/testsuite/gcc.target/i386/pr39162.c


[Bug target/59803] [4.8 Regression] s390x -march=z10 reload ICE

2014-01-14 Thread krebbel at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59803

--- Comment #2 from Andreas Krebbel krebbel at gcc dot gnu.org ---
Created attachment 31832
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31832action=edit
Experimental fix

This patch fixes the problem. I'll post/commit it when it passed regtesting.


[Bug libstdc++/59807] mutex misses destructor if non-function call initialization is used

2014-01-14 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59807

--- Comment #2 from Jonathan Wakely redi at gcc dot gnu.org ---
It a target's pthread_mutex requires cleanup then it should not define
__GTHREAD_MUTEX_INIT, it should use the init function, and then it gets a
chance to also run a destroy function.

That can be controlled by defining _GTHREAD_USE_MUTEX_INIT_FUNC in the relevant
libstdc++-v3/config/os/xxx/os_defines.h header.


[Bug middle-end/34678] Optimization generates incorrect code with -frounding-math option (#pragma STDC FENV_ACCESS not implemented)

2014-01-14 Thread nmm1 at cam dot ac.uk
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34678

--- Comment #29 from Nick Maclaren nmm1 at cam dot ac.uk ---
On Jan 14 2014, vincent-gcc at vinc17 dot net wrote:

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

 The FENV_ACCESS pragma provides a means to inform the implementation whe
n a
 program might access the floating-point environment to test floating-poi
nt
 status flags or run under non-default floating-point control modes.

 I suggest looking up the word explicit in a dictionary.

The above is an explicit definition. Where do you see an undefined behavior
here?

It is not an explicit definition of BEHAVIOR (my emphasis), and what
it implies for any nnon-IEEE system is completely unclear.  Of the two
countries active during the standardisation of C99, one voted no on
these grounds (among others).

Note that the C standard doesn't explicitly say how a source file as a sequ
ence
of bytes is to be interpreted as a sequence of character, so that if you ju
st
 restrict to the C standard, everything is undefined.

Yes, it does - it's implementation-defined in 5.1.1.2 Translation phases,
paragraph 1.1:

Physical source file multibyte characters are mapped, in an
implementation-defined manner, to the source character set
(introducing new-line characters for end-of-line indicators) if
necessary.  ...

You imply that you are also relying on some other standards or
specifications.  ISO/IEC Directives Part II is quite clear (in 6.2.2)
that they shall be referenced in the ISO standard.  Which ones are you
referring to and why?

If you are claiming that C99 and beyond support only systems that conform
to IEEE 754, then I can tell you that was not the intention of WG21 at
the time and is not a requirement of the standard.  To repeat, how many
other such systems are you familiar with?

The grounds that the UK voted no to this aspect was that the whole
'IEEE 754' morass (including fenv.h) was neither dependent on
__STD_IEC_559__ nor implementation-dependent nor sufficiently explicit
to be interpreted on any non-IEEE system.

 The discussion is going nowhere.

Now, at least that is true.


Regards,
Nick Maclaren.


[Bug libstdc++/59807] mutex misses destructor if non-function call initialization is used

2014-01-14 Thread redi at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59807

--- Comment #3 from Jonathan Wakely redi at gcc dot gnu.org ---
In other words, we already have all the machinery in place to handle such
cases, it just needs to be used for the target.


[Bug fortran/59811] New: Huge increase in memory usage and compile time with gfortran 4.8

2014-01-14 Thread bastian.feigl at kit dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59811

Bug ID: 59811
   Summary: Huge increase in memory usage and compile time with
gfortran 4.8
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
  Assignee: unassigned at gcc dot gnu.org
  Reporter: bastian.feigl at kit dot edu

Created attachment 31833
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31833action=edit
Example fortran source code file with problems with gfortran 4.8

When switching from gfortran 4.7 to gfortran 4.8 the memory usage and compile
time vastly increases for some files in our project, e.g. for the attached
example file. gfortran 4.8.2 needs 50s to compile, using up to 1.7 GB of RAM,
while gfortran 4.7 compiles it in 7s with a memory usage of 136 MB.

The command line of the gfortran-call for the attached example is
/opt/gcc/4.8.2/bin/gfortran -fno-automatic -ffixed-line-length-none -O2 -c
FermionBoxEventempCoupling_Div.F -o output.o 

The problem seems to be partly linked to the option -fno-automatic, since
omitting it inhibits the memory increase, but the compile time is still 14s
with gfortran 4.8, compared to 6s with gfortran 4.7.

The problem arises with optimizations -O2 and -O1 lead to a similar
discrepancy, with -O0 the problem does not exist.

The gfortran 4.8 which shows the problematic behaviour is built with:
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4.8.2/configure --prefix=/opt/gcc/4.8.2
--enable-languages=c,c++,fortran
gcc version 4.8.2 (GCC) 

The gfortran 4.7 is the built-in from openSUSE 12.2:
Target: x86_64-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info
--mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64
--enable-languages=c,c++,objc,fortran,obj-c++,java,ada
--enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.7
--enable-ssp --disable-libssp --disable-libitm --disable-plugin
--with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux'
--disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib
--enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch
--enable-version-specific-runtime-libs --enable-linker-build-id
--program-suffix=-4.7 --enable-linux-futex --without-system-libunwind
--with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux
gcc version 4.7.1 20120723 [gcc-4_7-branch revision 189773] (SUSE Linux)


[Bug c/59801] GCC does not warn on unused global variable

2014-01-14 Thread chengniansun at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59801

--- Comment #2 from Chengnian Sun chengniansun at gmail dot com ---
Thanks for your reply. One more question regarding this issue. Support I have a
closed program

static volatile int a;
int main() {return 0;}

Even though a is not read anywhere in this program, do you mean that it is
still possible for a to be used somewhere else?

I checked the C standard
draft(http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf). In Page 122,
it says that what constitutes an access to an object that has volatile-qualified
type is implementation-defined. Is this the reason why GCC thinks the variable
is used, but Clang treats it unused? 

Thanks again.

[Bug c/59812] New: Missing aggressive loop optimization warning

2014-01-14 Thread ppluzhnikov at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59812

Bug ID: 59812
   Summary: Missing aggressive loop optimization warning
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: c
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ppluzhnikov at google dot com

Google ref: b/12015772

The following source:

int x[4];
int foo (int a)
{
 int n = a ? 1 : 2;
 int i;
 for(i = 0; i  4 + n; i++ )
   x[i]++;
 return 0;
}


compiles into infinite loop due to aggressive loop optimization,
but produces no warnings with

g++ (GCC) 4.9.0 20140110 (experimental)

g++ -c -O2 -Wall -Wextra t.c  objdump -d t.o

t.o: file format elf64-x86-64


Disassembly of section .text:

 _Z3fooi:
   0:   b8 00 00 00 00  mov$0x0,%eax
   5:   83 00 01addl   $0x1,(%rax)
   8:   48 83 c0 04 add$0x4,%rax
   c:   eb f7   jmp5 _Z3fooi+0x5


It would be much nicer to end-user to emit compile time warning here.


[Bug c/59812] Missing aggressive loop optimization warning

2014-01-14 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59812

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
The warning is documented to warn only about loops with constant number of
iterations.  Generally the number of iterations analysis which computes that
the loop has at most 4 (valid) iterations on the other side doesn't have access
to VRP to see what the values would be here, while for post-VRP it could use
remembered SSA_NAME_RANGE_INFO, during VRP when this is optimized it can't, it
isn't stored there yet.


[Bug target/59787] [ARM] mmx-2.c causes ICE when GCC is configured for cortex-a5/vfpv3-d16-fp16

2014-01-14 Thread vmakarov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59787

--- Comment #3 from Vladimir Makarov vmakarov at gcc dot gnu.org ---
Author: vmakarov
Date: Tue Jan 14 19:07:01 2014
New Revision: 206605

URL: http://gcc.gnu.org/viewcvs?rev=206605root=gccview=rev
Log:
2014-01-14  Vladimir Makarov  vmaka...@redhat.com

PR target/59787
* config/arm/arm.c (arm_coproc_mem_operand): Add lra_in_progress.


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


[Bug testsuite/59808] [4.9 Regression] r206596 caused: FAIL: gcc.target/i386/sse-14.c (test for excess errors)

2014-01-14 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59808

Uroš Bizjak ubizjak at gmail dot com changed:

   What|Removed |Added

  Component|target  |testsuite

--- Comment #1 from Uroš Bizjak ubizjak at gmail dot com ---
Somebody forgot to update gcc.target/i386/sse-14.c, in the same way as sse-22.c
[1].

[1]
http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/testsuite/gcc.target/i386/sse-22.c?limit_changes=0r1=206596r2=206595pathrev=206596

[Bug testsuite/59808] [4.9 Regression] r206596 caused: FAIL: gcc.target/i386/sse-14.c (test for excess errors)

2014-01-14 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59808

--- Comment #2 from Uroš Bizjak ubizjak at gmail dot com ---
Kirill, please update also sse-13.c with new builtins.

[Bug testsuite/59808] [4.9 Regression] r206596 caused: FAIL: gcc.target/i386/sse-14.c (test for excess errors)

2014-01-14 Thread ubizjak at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59808

--- Comment #3 from Uroš Bizjak ubizjak at gmail dot com ---
(In reply to Uroš Bizjak from comment #2)
 Kirill, please update also sse-13.c with new builtins.

And sse-12.c with new options.

[Bug middle-end/28865] Structures with a flexible arrray member have wrong .size

2014-01-14 Thread joseph at codesourcery dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28865

--- Comment #25 from joseph at codesourcery dot com joseph at codesourcery dot 
com ---
On Mon, 13 Jan 2014, jakub at gcc dot gnu.org wrote:

 But the glibc headers case you're mentioning wasn't initializing the flexible
 array members, right?  (Or even initialization with {} initializer is fine I

I don't have details of exactly what uses of flexible array members they 
were making beyond those permitted by ISO C.  I guess the general point is 
to be careful about disallowing such uses because it might break existing 
code (so allowing plenty of time before a release for distribution 
rebuilds to catch any problems with such a change, for example).


[Bug fortran/59806] ICE with -ggdb AND -finit-real=snan AND namelist variable AND internal procedure

2014-01-14 Thread anlauf at gmx dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59806

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 ---
Possibly related to or duplicate of PR 59440.


[Bug rtl-optimization/56742] [4.8/4.9 regression] Optimization bug lead to uncaught throw

2014-01-14 Thread g63marty at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56742

at2010 g63marty at yahoo dot com changed:

   What|Removed |Added

 CC||g63marty at yahoo dot com

--- Comment #12 from at2010 g63marty at yahoo dot com ---
Created attachment 31834
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31834action=edit
save output log and debug window log (at end)


[Bug rtl-optimization/56742] [4.8/4.9 regression] Optimization bug lead to uncaught throw

2014-01-14 Thread g63marty at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56742

--- Comment #13 from at2010 g63marty at yahoo dot com ---
Hello.

I also observed the 64bit compile problem while muxing. And after using the new
build the problem is indeed resolved. However I still see a remnant wxwiget
error in the logs that you may wish to fix as well.
Error is
In file
/home/mosu/prog/video/mingw/cross-git-all/tmp-wxwidgets/wxWidgets-3.0.0/src/msw/window.cpp
at line 576: 'SetFocus' failed with error 0x0057 (the parameter is
incorrect.).

This is the pre-fix log. The post-fix log is below.

mkvmerge v6.7.0 ('Back to the Ground') 64bit built on Jan  8 2014 15:10:52

'notrealfilename.avi': Using the demultiplexer for the format 'AVI'.

'notrealfilename.avi' track 0: Using the output module for the format 'MPEG-4'.

'notrealfilename.avi' track 1: Using the output module for the format 'AC3'.

The file 'notrealfilename (1).mkv' has been opened for writing.

Progress: 0%

[Fails with return code 3]

Output of Debug window:
12:34:22: dpi is 96/96
12:34:22: Querying mkvmerge's capabilities
12:34:23: Capability: VERSION=mkvmerge v6.7.0 ('Back to the Ground') 64bit
built on Jan  8 2014 15:10:52
12:34:23: Capability: 
12:34:23: Capability: FLAC
12:34:23: Capability: 
12:34:23: about to check... btw int? 0
12:34:23: update state changed, now 1
12:34:26: update state changed, now 2
12:34:32: identify 1: command: ``C:\Program Files
(x86)\MKVToolNix\mkvmerge.exe
@C:\Users\notme\AppData\Local\Temp\mmg-mkvmerge-options-3992-1389731672''
12:34:33: identify 1: result: 0
12:34:33: identify 1: output[0]: ``File 'notrealfilename.avi': container: AVI
[is_providing_timecodes:1]''
12:34:33: identify 1: output[1]: ``''
12:34:33: identify 1: output[2]: ``Track ID 0: video (MPEG-4p2)''
12:34:33: identify 1: output[3]: ``''
12:34:33: identify 1: output[4]: ``Track ID 1: audio (AC3/EAC3)''
12:34:33: identify 1: output[5]: ``''
12:36:58: Locale selection logic: select_locale English (English)
uu_locale_lower en translation_c::get_default_ui_locale() en app-m_ui_locale
en
12:37:20: Querying mkvmerge's capabilities
12:37:20: Capability: VERSION=mkvmerge v6.7.0 ('Back to the Ground') 64bit
built on Jan  8 2014 15:10:52
12:37:20: Capability: 
12:37:20: Capability: FLAC
12:37:20: Capability: 
In file
/home/mosu/prog/video/mingw/cross-git-all/tmp-wxwidgets/wxWidgets-3.0.0/src/msw/window.cpp
at line 576: 'SetFocus' failed with error 0x0057 (the parameter is
incorrect.).
In file
/home/mosu/prog/video/mingw/cross-git-all/tmp-wxwidgets/wxWidgets-3.0.0/src/msw/window.cpp
at line 576: 'SetFocus' failed with error 0x0057 (the parameter is
incorrect.).
In file
/home/mosu/prog/video/mingw/cross-git-all/tmp-wxwidgets/wxWidgets-3.0.0/src/msw/window.cpp
at line 576: 'SetFocus' failed with error 0x0057 (the parameter is
incorrect.).
In file
/home/mosu/prog/video/mingw/cross-git-all/tmp-wxwidgets/wxWidgets-3.0.0/src/msw/window.cpp
at line 576: 'SetFocus' failed with error 0x0057 (the parameter is
incorrect.).

12:57:49: dpi is 96/96
12:57:49: Querying mkvmerge's capabilities
12:57:49: Capability: VERSION=mkvmerge v6.7.0 ('Back to the Ground') 64bit
built on Jan  8 2014 15:10:52
12:57:49: Capability: 
12:57:49: Capability: FLAC
12:57:49: Capability: 
12:58:00: identify 1: command: ``C:\Program Files
(x86)\MKVToolNix\mkvmerge.exe
@C:\Users\Marty\AppData\Local\Temp\mmg-mkvmerge-options-4540-1389733080''
12:58:01: identify 1: result: 0
12:58:01: identify 1: output[0]: ``File 'notrealfilename.avi': container: AVI
[is_providing_timecodes:1]''
12:58:01: identify 1: output[1]: ``''
12:58:01: identify 1: output[2]: ``Track ID 0: video (MPEG-4p2)''
12:58:01: identify 1: output[3]: ``''
12:58:01: identify 1: output[4]: ``Track ID 1: audio (AC3/EAC3)''
12:58:01: identify 1: output[5]: ``''
In file
/home/mosu/prog/video/mingw/cross-git-all/tmp-wxwidgets/wxWidgets-3.0.0/src/msw/window.cpp
at line 576: 'SetFocus' failed with error 0x0057 (the parameter is
incorrect.).


mkvmerge v6.7.0 ('Back to the Ground') 64bit built on Jan 11 2014 10:17:39

'notrealfilename.avi': Using the demultiplexer for the format 'AVI'.

'notrealfilename.avi' track 0: Using the output module for the format 'MPEG-4'.

'notrealfilename.avi' track 1: Using the output module for the format 'AC3'.

The file 'notrealfilename (2).mkv' has been opened for writing.


Progress: 0%
[omitted lines]
Progress: 100%

The cue entries (the index) are being written...
Muxing took 53 seconds.


Output of Debug window:
13:01:17: dpi is 96/96
13:01:17: Querying mkvmerge's capabilities
13:01:17: Capability: VERSION=mkvmerge v6.7.0 ('Back to the Ground') 64bit
built on Jan 11 2014 10:17:39
13:01:17: Capability: 
13:01:17: Capability: FLAC
13:01:17: Capability: 
13:01:36: identify 1: command: ``C:\Program Files
(x86)\MKVToolNix\mkvmerge.exe
@C:\Users\notme\AppData\Local\Temp\mmg-mkvmerge-options-4456-1389733296''
13:01:37: identify 1: result: 0
13:01:37: identify 1: output[0]: ``File 'notrealfilename.avi': container: AVI

[Bug c++/59813] New: tail-call elimintation didn't fired with left-shift of char to cout

2014-01-14 Thread virkony at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59813

Bug ID: 59813
   Summary: tail-call elimintation didn't fired with left-shift of
char to cout
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: major
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: virkony at gmail dot com

#include iostream
using namespace std;

void foo()
{
cout  x  endl; // ok
cout  'x'  endl; // kills tail-call elimination in gcc 4.8.2
foo();
}

int main() { foo(); return 0; }

// core-dups by long stack while in 4.7.3 works as expected (infinite loop)


[Bug target/59814] New: powerpc64le ICE with -O2 -mpower8 -ffast-math

2014-01-14 Thread anton at samba dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59814

Bug ID: 59814
   Summary: powerpc64le ICE with -O2 -mpower8 -ffast-math
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
  Assignee: unassigned at gcc dot gnu.org
  Reporter: anton at samba dot org

The following test case:

/* -O2 -mcpu=power8 -ffast-math */

float val;
int verbose;

void bar(float x);

void foo(void)
{
if (val  0.0) {
val = 1.0;
if (!verbose)
zot();
bar(val);
}
}

fails with:

# gcc -c -O2 -mcpu=power8 -ffast-math testcase.c
testcase.c: In function ‘foo’:
testcase.c:16:1: error: unrecognizable insn:
 }
 ^
(insn 52 16 3 3 (parallel [
(set (reg:SF 33 1 [orig:125 D.2152 ] [125])
(unspec:SF [
(reg:SF 9 9 [131])
] UNSPEC_P8V_RELOAD_FROM_GPR))
(clobber (reg:DI 8 8))
]) -1
 (nil))
testcase.c:16:1: internal compiler error: in extract_insn, at recog.c:2154

[Bug c++/59813] tail-call elimintation didn't fired with left-shift of char to cout

2014-01-14 Thread virkony at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59813

--- Comment #1 from Nikolay Orliuk virkony at gmail dot com ---
In 4.7.3 that code works, but changing it to

void foo()
{
cout  x  endl; // ok
cout  'x'  endl; // kills tail-call elimination in gcc 4.8.2
struct {} bar; // kills tail-call elimination in 4.7.3
foo();
}

Removing either bar or 'x' results in normal infinite loop.
In 4.5.4 this works fine as is.


[Bug c++/59815] New: Apparently bogus error: 'Outer' is already declared in this scope

2014-01-14 Thread ppluzhnikov at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59815

Bug ID: 59815
   Summary: Apparently bogus error: 'Outer' is already declared in
this scope
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ppluzhnikov at google dot com

Google ref: b/12471255

/// --- cut ---
namespace foo
{
  template  typename  class A
  {
template  typename  friend class Outer;
  };
  class B:foo::A  int 
  {
  };
  template  typename  class Outer;
}

using foo::Outer;
/// --- cut ---

Using g++ (GCC) 4.9.0 20140110 (experimental):

g++ -c tt.cc

tt.cc:13:12: error: 'Outer' is already declared in this scope
 using foo::Outer;
^

Source is accepted by Clang and is believed to be valid.


[Bug c++/59813] tail-call elimintation didn't fired with left-shift of char to cout

2014-01-14 Thread virkony at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59813

--- Comment #2 from Nikolay Orliuk virkony at gmail dot com ---
My 4.5.4 built without graphite support.
Both 4.7.3 and 4.8.2 built with cloog 0.17.0 and isl 0.11.2


[Bug c++/59815] Apparently bogus error: 'Outer' is already declared in this scope

2014-01-14 Thread ppluzhnikov at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59815

--- Comment #1 from Paul Pluzhnikov ppluzhnikov at google dot com ---
Slightly more reduced test:


namespace foo
{
  template  typename  class A
  {
template  typename  friend class Outer;
  };
  Aint a;  // comment out - bug goes away.

  template  typename  class Outer;
}

using foo::Outer;


[Bug libfortran/48925] Code cleanup in write_float.def

2014-01-14 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48925

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

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-14
 Ever confirmed|0   |1

--- Comment #2 from Dominique d'Humieres dominiq at lps dot ens.fr ---
For having looked at the code for pr59774, I agree that
libgfortran/io/write_float.def badly needs some cleaning in next stage 1.


[Bug libfortran/59774] [Regression] Inconsistent rounding between -m32 and -m64

2014-01-14 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59774

--- Comment #9 from Dominique d'Humieres dominiq at lps dot ens.fr ---
I have understood the problem in comment 8. It is illustrated by the following
code

 print (ru,g45.3), 891.1
 print (rd,g45.3), -891.1
end

which gives the output

   9.
  -9.

with current releases and trunk. The problem comes from the lines

  newf.u.real.d = m == 0.0 ? d - 1 : -(mid - d - 1) ;\

and

  if (w  0  d == 0  p == 0)
nbefore = 1;

in libgfortran/io/write_float.def when mid==d+1.

I have also noticed the sentence the asm volatile is required for 32-bit x86
platforms which seems to answer my question in comment 6. These remarks led me
to the following patch

--- ../_clean/libgfortran/io/write_float.def2014-01-04 15:51:53.0
+0100
+++ libgfortran/io/write_float.def2014-01-14 22:55:24.0 +0100
@@ -112,7 +112,7 @@ determine_precision (st_parameter_dt * d

 static bool
 output_float (st_parameter_dt *dtp, const fnode *f, char *buffer, size_t size,
-  int nprinted, int precision, int sign_bit, bool zero_flag)
+  int nprinted, int precision, int sign_bit, bool zero_flag, int d_o)
 {
   char *out;
   char *digits;
@@ -373,7 +373,7 @@ output_float (st_parameter_dt *dtp, cons
   updown:

   rchar = '0';
-  if (w  0  d == 0  p == 0)
+  if (w  0  d_o == 0  p == 0)
 nbefore = 1;
   /* Scan for trailing zeros to see if we really need to round it.  */
   for(i = nbefore + nafter; i  ndigits; i++)
@@ -1018,13 +1018,14 @@ output_float_FMT_G_ ## x (st_parameter_d
   int d = f-u.real.d;\
   int w = f-u.real.w;\
   fnode newf;\
-  GFC_REAL_ ## x rexp_d, r = 0.5;\
+  GFC_REAL_ ## x rexp_d, r = 0.5, r_sc;\
   int low, high, mid;\
   int ubound, lbound;\
   char *p, pad = ' ';\
   int save_scale_factor, nb = 0;\
   bool result;\
   int nprinted, precision;\
+  volatile GFC_REAL_ ## x temp;\
 \
   save_scale_factor = dtp-u.p.scale_factor;\
 \
@@ -1043,10 +1044,13 @@ output_float_FMT_G_ ## x (st_parameter_d
 break;\
 }\
 \
-  rexp_d = calculate_exp_ ## x (-d);\
-  if ((m  0.0  ((m  0.1 - 0.1 * r * rexp_d) || (rexp_d * (m + r) =
1.0)))\
+  rexp_d = calculate_exp_ ## x (d);\
+  r_sc = (1 - r / rexp_d);\
+  temp = 0.1 * r_sc;\
+  if ((m  0.0  ((m  temp) || (r = (rexp_d - m\
   || ((m == 0.0)  !(compile_options.allow_std\
-   (GFC_STD_F2003 | GFC_STD_F2008\
+   (GFC_STD_F2003 | GFC_STD_F2008)))\
+  ||  d == 0)\
 { \
   newf.format = FMT_E;\
   newf.u.real.w = w;\
@@ -1066,10 +1070,9 @@ output_float_FMT_G_ ## x (st_parameter_d
 \
   while (low = high)\
 { \
-  volatile GFC_REAL_ ## x temp;\
   mid = (low + high) / 2;\
 \
-  temp = (calculate_exp_ ## x (mid - 1) * (1 - r * rexp_d));\
+  temp = (calculate_exp_ ## x (mid - 1) * r_sc);\
 \
   if (m  temp)\
 { \
@@ -1106,7 +1109,7 @@ output_float_FMT_G_ ## x (st_parameter_d
 \
  finish:\
 result = output_float (dtp, newf, buffer, size, nprinted, precision,\
-   sign_bit, zero_flag);\
+   sign_bit, zero_flag, d);\
   dtp-u.p.scale_factor = save_scale_factor;\
 \
 \
@@ -1240,7 +1243,7 @@ determine_en_precision (st_parameter_dt 
 else\
   nprinted = DTOA(y,precision,tmp);\
 output_float (dtp, f, buffer, size, nprinted, precision,\
-  sign_bit, zero_flag);\
+  sign_bit, zero_flag, f-u.real.d);\
   }\
 }\


I agree that the additional dummy argument d_o is a kludge, but I did not find
a better way to distinguish between d==0 in the format and mid==d+1. Comments
and improvements welcomed.

Regtested without regression r206590 plus the patch.


[Bug c++/59815] Apparently bogus error: 'Outer' is already declared in this scope

2014-01-14 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59815

--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org ---
I think this is a duplicate of bug 37804.


[Bug target/58675] ICE in rs6000_secondary_reload_inner:15460, type = store

2014-01-14 Thread bergner at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58675

--- Comment #1 from Peter Bergner bergner at gcc dot gnu.org ---
Pat, this doesn't ICE for me anymore.  Can we close this?


[Bug fortran/28397] Check format mismatches at compile time

2014-01-14 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28397

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


[Bug fortran/56675] I/O: Check edit descriptors with READ/WRITE used in FORMAT statements

2014-01-14 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56675

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

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-14
 Ever confirmed|0   |1

--- Comment #1 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Related to pr28397 if not a duplicate.


[Bug middle-end/34678] Optimization generates incorrect code with -frounding-math option (#pragma STDC FENV_ACCESS not implemented)

2014-01-14 Thread vincent-gcc at vinc17 dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34678

--- Comment #30 from Vincent Lefèvre vincent-gcc at vinc17 dot net ---
(In reply to Nick Maclaren from comment #29)
 It is not an explicit definition of BEHAVIOR (my emphasis),

The pragma is just a directive. It has no additional behavior, so that there is
nothing else to define.

 Note that the C standard doesn't explicitly say how a source file as a 
 sequence
 of bytes is to be interpreted as a sequence of character, so that if you just
  ^
  restrict to the C standard, everything is undefined.
 
 Yes, it does - it's implementation-defined in 5.1.1.2 Translation phases,
 paragraph 1.1:
 
 Physical source file multibyte characters are mapped, in an
   
Read again. I'm talking of a sequence of bytes. What your quoting is about a
sequence of multibyte characters. The interpretation of the sequences of bytes
as a sequence of multibyte characters is not defined.

 You imply that you are also relying on some other standards or
 specifications.

Not other standards, just the implementation.

[Bug libfortran/53962] Tab handling with formatted stream output

2014-01-14 Thread dominiq at lps dot ens.fr
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53962

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

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-14
 Ever confirmed|0   |1
  Known to fail||4.7.4, 4.8.2, 4.9.0

--- Comment #2 from Dominique d'Humieres dominiq at lps dot ens.fr ---
Confirmed at r206590.


[Bug c++/59500] Bogus maybe-unintialized warning due to optimizations

2014-01-14 Thread luto at mit dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59500

--- Comment #1 from Andy Lutomirski luto at mit dot edu ---
This might be a duplicate of PR56574


[Bug target/59814] powerpc64le ICE with -O2 -mpower8 -ffast-math

2014-01-14 Thread amodra at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59814

Alan Modra amodra at gmail dot com changed:

   What|Removed |Added

 CC||amodra at gmail dot com

--- Comment #1 from Alan Modra amodra at gmail dot com ---
Created attachment 31835
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31835action=edit
make rs6000.c match rs6000.md

This patch simply avoids the ICE by ensuring we don't generate these insns in
the first place.  The insns currently have  WORDS_BIG_ENDIAN in their
predicates.


[Bug c++/59813] tail-call elimintation didn't fired with left-shift of char to cout

2014-01-14 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59813

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||missed-optimization
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-15
 Ever confirmed|0   |1
   Severity|major   |normal

--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org ---
The early inliner is inlining a function which contains a variable which maybe
escapes (address taken) which is causing the tail-call elimination not to
happen.  There are a few ways of fixing this:
1)  Changing the the early inlining heuristics so it will not inline functions
where local variables have their address taken.
2) Or have a tail-call optimize pass before early inlining.


[Bug c++/59816] New: [c++11] Incorrect visibility check in template instantiation when the default constructor is a variadic template.

2014-01-14 Thread libremax90 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59816

Bug ID: 59816
   Summary: [c++11] Incorrect visibility check in template
instantiation when the default constructor is a
variadic template.
   Product: gcc
   Version: 4.8.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: libremax90 at gmail dot com

The following C++11 code won't compile on GCC 4.8.2 while clang++ will accept
it without a warning. In the following test case, GCC seems to check Base's
default constructor visibility in the test function's context, where the
templates are instantiated.

class Base {
protected:
  templateclass... TArgs
  Base(TArgs...) {}

  // Uncomment to workaround
  //Base() {}   
};

class Class
  : public Base {
public:
  templateclass... TArgs
  Class(TArgs... args) : Base { args... } {}

  // Another workaround:
  //Class() {}  
};

void test() {
  Class{};
}

Here is `g++ -v`'s output:

Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/4.8.2/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: /build/gcc/src/gcc-4.8-20131219/configure --prefix=/usr
--libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man
--infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/
--enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared
--enable-threads=posix --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch
--disable-libssp --enable-gnu-unique-object --enable-linker-build-id
--enable-cloog-backend=isl --disable-cloog-version-check --enable-lto
--enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu
--disable-multilib --disable-werror --enable-checking=release
Thread model: posix
gcc version 4.8.2 20131219 (prerelease) (GCC)


[Bug target/59725] [4.9 Regression] ARM,AArch64 r206148 (PR tree-optimization/59544) caused regressions in pr52943

2014-01-14 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59725

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ice-on-valid-code, patch
 Status|UNCONFIRMED |NEW
URL||http://gcc.gnu.org/ml/gcc-p
   ||atches/2014-01/msg00805.htm
   ||l
   Last reconfirmed||2014-01-15
 Ever confirmed|0   |1

--- Comment #1 from Andrew Pinski pinskia at gcc dot gnu.org ---
Confirmed.


[Bug tree-optimization/59817] New: ICE in extract_affine_chrec with -O2 -ftree-loop-linear

2014-01-14 Thread anton at samba dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59817

Bug ID: 59817
   Summary: ICE in extract_affine_chrec with -O2
-ftree-loop-linear
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: anton at samba dot org

The following testcase:


c -O2 -ftree-loop-linear 

  SUBROUTINE PREPD(ICAST,ICAS,ICASX,ICAS1,ICAS2,NDET,NM,III,IMP,
 * CASMIN)
  LOGICAL CASMIN
  DIMENSION ICAST(NDET,NM),IMP(NM)
  IF(CASMIN) THEN
 DO K=1,NDET
DO L=1,NM
   IF(L.EQ.K-1) ICAST(K,L) = 1
END DO
 END DO
  END IF


fails on a powerpc64-linux build from today with:


# gfortran -c -O2 -ftree-loop-linear testcase.f
testcase.f: In function ‘prepd’:
testcase.f:3:0: internal compiler error: in extract_affine_chrec, at
graphite-sese-to-poly.c:620
   SUBROUTINE PREPD(ICAST,ICAS,ICASX,ICAS1,ICAS2,NDET,NM,III,IMP,
 ^
0x10cf684f extract_affine_chrec
../../gcc/gcc/graphite-sese-to-poly.c:619
0x10cf684f extract_affine
../../gcc/gcc/graphite-sese-to-poly.c:803
0x10cf62fb extract_affine
../../gcc/gcc/graphite-sese-to-poly.c:842
0x10cf843f pdr_add_memory_accesses
../../gcc/gcc/graphite-sese-to-poly.c:1486
0x10cf843f build_poly_dr
../../gcc/gcc/graphite-sese-to-poly.c:1583
0x10cf843f build_pbb_drs
../../gcc/gcc/graphite-sese-to-poly.c:1846
0x10cf843f build_scop_drs
../../gcc/gcc/graphite-sese-to-poly.c:1929
0x10cfa8d7 build_poly_scop(scop*)
../../gcc/gcc/graphite-sese-to-poly.c:3171
0x10cdcabb graphite_transform_loops()
../../gcc/gcc/graphite.c:300
0x10cdd227 graphite_transforms
../../gcc/gcc/graphite.c:332
0x10cdd227 execute
../../gcc/gcc/graphite.c:416

[Bug target/59780] ICE in aarch64_split_128bit_move

2014-01-14 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59780

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ice-checking,
   ||ice-on-valid-code
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-15
 Ever confirmed|0   |1

--- Comment #2 from Andrew Pinski pinskia at gcc dot gnu.org ---
Confirmed.


[Bug target/59799] aarch64_pass_by_reference never passes arrays by value, contrary to ABI documentation

2014-01-14 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59799

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||wrong-code
 Status|UNCONFIRMED |NEW
   Last reconfirmed||2014-01-15
 Ever confirmed|0   |1

--- Comment #4 from Andrew Pinski pinskia at gcc dot gnu.org ---
Confirmed.


[Bug c++/59742] compilation failed for package ‘RcppEigen’

2014-01-14 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59742

Andrew Pinski pinskia at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2014-01-15
 Ever confirmed|0   |1

--- Comment #3 from Andrew Pinski pinskia at gcc dot gnu.org ---
g++: internt kompilatorfel: Dödad (program cc1plus)

How much memory do you have installed or even how much swap space do you have?
cc1plus is being killed by the kernel due to out of memory.

[Bug c++/59818] New: [4.9 regression] Bogus error: call of overloaded .... is ambiguous

2014-01-14 Thread ppluzhnikov at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59818

Bug ID: 59818
   Summary: [4.9 regression] Bogus error: call of overloaded 
is ambiguous
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ppluzhnikov at google dot com

This is caused by r197790 (fix for PR c++/23055).
Google ref: b/12471166

/// --- cut ---
template class T
struct Identity {
  typedef T type;
};

struct Foo {
  template typename T
  Foo(T*, void (IdentityT::type::*m)(void));

  template typename T
  Foo(const T*, void (IdentityT::type::*m)(void) const);
};

struct Bar {
  void Method(void) const;
};

void Bar::Method(void) const
{
  Foo foo(this, Bar::Method);
}
/// --- cut ---

Using g++ (GCC) 4.9.0 20140110 (experimental)

g++ -c t.cc
t.cc: In member function 'void Bar::Method() const':
t.cc:20:29: error: call of overloaded 'Foo(const Bar*, void (Bar::*)() const)'
is ambiguous
   Foo foo(this, Bar::Method);
 ^
t.cc:20:29: note: candidates are:
t.cc:11:3: note: Foo::Foo(const T*, void (IdentityT::type::*)() const) [with
T = Bar; typename IdentityT::type = Bar]
   Foo(const T*, void (IdentityT::type::*m)(void) const);
   ^
t.cc:8:3: note: Foo::Foo(T*, void (IdentityT::type::*)()) [with T = const
Bar; typename IdentityT::type = const Bar]
   Foo(T*, void (IdentityT::type::*m)(void));
   ^


Replacing 'IdentityT::type' with 'T' makes the problem go away.
Source accepted by gcc-4.8 and Clang.


[Bug preprocessor/59782] libcpp does not avoid bug #48326 when compiled by older GCC

2014-01-14 Thread pinskia at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59782

--- Comment #5 from Andrew Pinski pinskia at gcc dot gnu.org ---
Isn't it better to disable this code when not optimizing so that stage 1 is
never miscompiled?


[Bug c++/23055] overload resolution does not find templated function (zero - pointer)

2014-01-14 Thread ppluzhnikov at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23055

Paul Pluzhnikov ppluzhnikov at google dot com changed:

   What|Removed |Added

 CC||ppluzhnikov at google dot com

--- Comment #12 from Paul Pluzhnikov ppluzhnikov at google dot com ---
The r197790 appears to have caused PR 59818.


[Bug libfortran/59774] [Regression] Inconsistent rounding between -m32 and -m64

2014-01-14 Thread jvdelisle at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59774

--- Comment #10 from Jerry DeLisle jvdelisle at gcc dot gnu.org ---
Very interesting and good sleuthing!

The way this is suppose to work:

For G formatting, we compute the equivalent F or E formatting, as defined in
the standard, and pass this new format to output_float which then uses the
regular existing formatting processes to do the work.

This line: (on or about line 1105 in write_float.def

  newf.u.real.d = m == 0.0 ? d - 1 : -(mid - d - 1) ;\

is suppose to compute the new 'd' from mid and the given d and pass that into
output_float using the newf fnode structure.  In the failing case the new 'd'
is being set to zero and being passed on.

As far as your 'kludge'.  I don't think of it that way, but we should see if
there is a way to correctly compute the d_o value where you are using it in
output_float. There should be a way. Since the standard defines all we do in
terms of F and E formatting, I think we are mishandling something there in
output_float.  You are very close to the solution here. (of course I could be
wrong). Someone on the list once said, if it fixes the bug, its probably good
enough.  The computer has no feelings about correctness of approach.


[Bug c++/59818] [4.9 regression] Bogus error: call of overloaded .... is ambiguous

2014-01-14 Thread ppluzhnikov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59818

--- Comment #1 from ppluzhnikov at gcc dot gnu.org ---
Author: ppluzhnikov
Date: Wed Jan 15 05:35:24 2014
New Revision: 206618

URL: http://gcc.gnu.org/viewcvs?rev=206618root=gccview=rev
Log:
For Google b/12471166 and PR 59818, rollback r206534
(which was a back-port from trunk of r197790).

Modified:
branches/google/gcc-4_8/gcc/cp/pt.c
branches/google/gcc-4_8/gcc/testsuite/g++.dg/template/non-deducible1.C
branches/google/gcc-4_8/gcc/testsuite/g++.dg/template/nontype25.C


[Bug c++/59819] New: -Wunused-value reports incorrect values as unused

2014-01-14 Thread caibbor at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59819

Bug ID: 59819
   Summary: -Wunused-value reports incorrect values as unused
   Product: gcc
   Version: 4.8.1
Status: UNCONFIRMED
  Severity: trivial
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: caibbor at gmail dot com

Created attachment 31836
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=31836action=edit
The program in full to replicate this bug

This is pretty trivial but the warning outputs incorrect information. given the
line:

int foo = static_cast int ( 1, 2, 3 );

G++ reports that value 2 and 3 are not used, when in fact 1 and 2 are not used.

G++ 4.8.1's output (with -Wall):
test.cpp: In function ‘int main()’:
test.cpp:15:35: warning: left operand of comma operator has no effect
[-Wunused-value]
  int foo = static_cast int ( 1, 2, 3 );
   ^
test.cpp:15:38: warning: right operand of comma operator has no effect
[-Wunused-value]
  int foo = static_cast int ( 1, 2, 3 );
  ^


Clang 3.2.7 gets it right, however:

test.cpp:15:32: warning: expression result unused [-Wunused-value]
int foo = static_cast int ( 1, 2, 3 );
  ^
test.cpp:15:35: warning: expression result unused [-Wunused-value]
int foo = static_cast int ( 1, 2, 3 );
 ^
2 warnings generated.

[Bug testsuite/59808] [4.9 Regression] r206596 caused: FAIL: gcc.target/i386/sse-14.c (test for excess errors)

2014-01-14 Thread kirill.yukhin at intel dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59808

--- Comment #4 from Yukhin Kirill kirill.yukhin at intel dot com ---
(In reply to Uroš Bizjak from comment #2)
 Kirill, please update also sse-13.c with new builtins.

Fix is posted as part of:
http://gcc.gnu.org/ml/gcc-patches/2014-01/msg00761.html
I may strip it into separate one...

  1   2   >