[Bug rtl-optimization/58365] [4.7/4.8/4.9 Regression] likely wrong code bug

2013-09-10 Thread mkuvyrkov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58365

Maxim Kuvyrkov mkuvyrkov at gcc dot gnu.org changed:

   What|Removed |Added

 CC||rth at gcc dot gnu.org

--- Comment #4 from Maxim Kuvyrkov mkuvyrkov at gcc dot gnu.org ---
The underlying bug appears to be in CSA (combine-stack-adj.c) and I would
appreciate Richard's insight on how to fix it.

Summary: CSA merges stack variable into global one, and then alias analysis
thinks that ex-stack-now-global variable does not overlap with global
variables.

After patch in rev. 162592 code hoisting becomes able to simplify code just a
bit, which causes scheduler to generate a different sequence, exposing a latent
bug.

During expand we have:

  # BLOCK 3 freq:3900
  # PRED: 2 [39.0%]  (true,exec)
1 D.2750 = x6;
  goto bb 5;
  # SUCC: 5 [100.0%]  (fallthru,exec)

  # BLOCK 4 freq:6100
  # PRED: 2 [61.0%]  (false,exec)
  D.2750 = x7;
  # SUCC: 5 [100.0%]  (fallthru,exec)

  # BLOCK 5 freq:1
  # PRED: 4 [100.0%]  (fallthru,exec) 3 [100.0%]  (fallthru,exec)
2 x8 = D.2750;
3 x6.x2 = 1;
  D.2733_1 = x8.x2;
  printf (%d\n, D.2733_1);

CSA combines stack variable D.2750 in insn (1) into global x6, but fails to
update uses of D.2750.  After CSA DECL_RTL of MEM in insn (2) still references
D.2750 even though it now reads directly from x6.  Because D.2750 is on stack
and x6 is global -- alias analysis (nonoverlapping_memrefs_p()) tells scheduler
that it is OK to move insn (3) before insn (2).


[Bug fortran/57697] [OOP] Segfault with defined assignment for components during intrinsic assignment

2013-09-10 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57697

--- Comment #6 from Tobias Burnus burnus at gcc dot gnu.org ---
Submitted patch: http://gcc.gnu.org/ml/fortran/2013-09/msg00016.html

As follow up, one should check whether arrays (lhs unallocated, same shape,
different shape) are correctly handled.


[Bug rtl-optimization/58365] [4.7/4.8/4.9 Regression] likely wrong code bug

2013-09-10 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58365

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org ---
That is actually the crossjumping pass after csa (jump2; though yes, previously
it has been part of csa).  In any case, I don't see anything wrong with the
cross jumping, it turns the two:
(set (mem/c:BLK (reg:DI 5 di [81]) [3 D.1761+0 S20 A32])
(mem/c:BLK (reg:DI 4 si [82]) [3 x6+0 S20 A32]))
and
(set (mem/c:BLK (reg:DI 5 di [84]) [3 D.1761+0 S20 A32])
(mem/u/c:BLK (reg:DI 4 si [85]) [3 x7+0 S20 A128]))
into:
(set (mem/c:BLK (reg:DI 5 di [84]) [3 D.1761+0 S20 A32])
(mem/u/c:BLK (reg:DI 4 si [85]) [3 S20 A32]))
(note, MEM_EXPR cleared), where si is set conditionally to x6 or x7.
And then we have the:
(insn 29 27 31 6 (set (mem/c:SI (const:DI (plus:DI (symbol_ref:DI (x6) 
var_decl 0x7f9ce47572f8 x6)
(const_int 4 [0x4]))) [2 x6.x2+0 S4 A32])
(const_int 1 [0x1])) pr58365.c:31 86 {*movsi_internal}
 (nil))
store that sched2 moves over the above rep_movsi, although there is a
(conditional, may, but doesn't have to) aliasing case.


[Bug rtl-optimization/58365] [4.7/4.8/4.9 Regression] likely wrong code bug

2013-09-10 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58365

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

   Assignee|mkuvyrkov at gcc dot gnu.org   |jakub at gcc dot gnu.org

--- Comment #7 from Jakub Jelinek jakub at gcc dot gnu.org ---
Ah, actually the bug is really in the cross-jumping, in this case that it
hasn't cleared MEM_READONLY_P.  While x7 is read-only, x6 is not, so
merge_memattrs should combine that to !MEM_READONLY_P.


[Bug rtl-optimization/58365] [4.7/4.8/4.9 Regression] likely wrong code bug

2013-09-10 Thread mkuvyrkov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58365

--- Comment #6 from Maxim Kuvyrkov mkuvyrkov at gcc dot gnu.org ---
(In reply to Jakub Jelinek from comment #5)
 That is actually the crossjumping pass after csa (jump2; though yes,
 previously it has been part of csa).  In any case, I don't see anything
 wrong with the cross jumping, it turns the two:
 (set (mem/c:BLK (reg:DI 5 di [81]) [3 D.1761+0 S20 A32])
 (mem/c:BLK (reg:DI 4 si [82]) [3 x6+0 S20 A32]))
 and
 (set (mem/c:BLK (reg:DI 5 di [84]) [3 D.1761+0 S20 A32])
 (mem/u/c:BLK (reg:DI 4 si [85]) [3 x7+0 S20 A128]))
 into:
 (set (mem/c:BLK (reg:DI 5 di [84]) [3 D.1761+0 S20 A32])
 (mem/u/c:BLK (reg:DI 4 si [85]) [3 S20 A32]))
 (note, MEM_EXPR cleared), where si is set conditionally to x6 or x7.
 And then we have the:
 (insn 29 27 31 6 (set (mem/c:SI (const:DI (plus:DI (symbol_ref:DI (x6) 
 var_decl 0x7f9ce47572f8 x6)
 (const_int 4 [0x4]))) [2 x6.x2+0 S4 A32])
 (const_int 1 [0x1])) pr58365.c:31 86 {*movsi_internal}
  (nil))
 store that sched2 moves over the above rep_movsi, although there is a
 (conditional, may, but doesn't have to) aliasing case.

Jacub, I don't quite understand whether you are saying that the bug is /not/ in
csa (at GCC 4.7 age) or whether you are providing additional analysis.

I'm debugging the gcc-4.7-era revision 162592 and here the source MEM in
rep_movsi references stack variable instead of x6, which causes wrong aliasing
decision.


[Bug ipa/58371] [4.9 Regression] internal compiler error: in ipcp_verify_propagated_values, at ipa-cp.c:892

2013-09-10 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58371

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.9.0


[Bug ipa/58371] [4.9 Regression] internal compiler error: in ipcp_verify_propagated_values, at ipa-cp.c:892

2013-09-10 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58371

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2013-09-10
 CC||mpolacek at gcc dot gnu.org
  Known to work||4.8.1
Summary|internal compiler error: in |[4.9 Regression] internal
   |ipcp_verify_propagated_valu |compiler error: in
   |es, at ipa-cp.c:892 |ipcp_verify_propagated_valu
   ||es, at ipa-cp.c:892
 Ever confirmed|0   |1
  Known to fail||4.9.0

--- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org ---
Confirmed.


[Bug ipa/58371] [4.9 Regression] internal compiler error: in ipcp_verify_propagated_values, at ipa-cp.c:892

2013-09-10 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58371

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||hubicka at gcc dot gnu.org

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
Started with r202145.


[Bug rtl-optimization/58365] [4.7/4.8/4.9 Regression] likely wrong code bug

2013-09-10 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58365

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

Untested fix.


[Bug tree-optimization/58373] [4.9 Regression] g++: internal compiler error: Segmentation fault (program cc1plus)

2013-09-10 Thread markus at trippelsdorf dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58373

Markus Trippelsdorf markus at trippelsdorf dot de changed:

   What|Removed |Added

 CC||law at gcc dot gnu.org

--- Comment #1 from Markus Trippelsdorf markus at trippelsdorf dot de ---
Started with rev202296.


[Bug rtl-optimization/51447] [4.7 Regression] global register variable definition incorrectly removed as dead code

2013-09-10 Thread matthijs at stdin dot nl
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51447

Matthijs Kooijman matthijs at stdin dot nl changed:

   What|Removed |Added

 CC||matthijs at stdin dot nl

--- Comment #19 from Matthijs Kooijman matthijs at stdin dot nl ---
In case anyone else comes across here and wonders: This fix made it into 4.8,
but was not backported into 4.7.3.

Regarding the bug description that says 4.7 regression, I have also observed
this bug on avr-gcc 4.3.3, so it's not a regression introduced in 4.7.

I also noticed this bug on the AVR platform, using 4.7.2. Just in case it helps
(perhaps for others to find this bug when Googling for avr-gcc), here's the
testcase and bugreport I was preparing before I found this one.

  //
  // Under some circumstances, writes to a global register variable are
  // optimized away, even though that changes behaviour. The below example
  // illustrates this.
  //
  // When compiled as-is, the writes to the variable global are removed.
  // However, when compiling with -DDO_CALL, which adds a function call to
  // the main function, the writes are preserved. This leads me to believe
  // that the optimizer sees that main() isn't calling any functions, so
  // it must be safe to just remove the writes (even though documentation
  // [1] says Stores into this register are never deleted even if they
  // appear to be dead, but references may be deleted or moved or
  // simplified.)
  //
  // It seems that a second condition (in addition to no functions called)
  // is that the main function does not return. If we add a return path,
  // the writes show up again.
  //
  // However, removing these writes does not seem sane, since there is
  // also an interrupt routine, which can access the variable, but the
  // optimizer is apparently not aware that this is a possibility.
  //
  //
  // Tested using:
  // avr-gcc -mmcu=attiny13 register.c -S -o - -O
  // avr-gcc -mmcu=attiny13 register.c -S -o - -O -DDO_CALL
  // avr-gcc -mmcu=attiny13 register.c -S -o - -O -DDO_RETURN
  //
  // [1]: //
http://gcc.gnu.org/onlinedocs/gcc/Global-Reg-Vars.html#Global-Reg-Vars

  #include avr/io.h
  #include avr/cpufunc.h

  // Define a global variable in a register
  register char global asm(r16);

  // Just a dummy function
  void foo()
  {
  // Add some nops so this function doesn't get inlined
  _NOP(); _NOP(); _NOP();
  }

  // Define an ISR that accesses the global. This doesn't actually seem to
  // make a different, except that if this wasn't here, removing writes to
  // the global would be acceptable
  void ISR(INT0_vect)
  {
  PORTB = global;
  }

  void main()
  {
  global = 1;
  while(1) {
  #ifdef DO_CALL
  foo();
  #endif
  #ifdef DO_RETURN
  return;
  #endif
  }
  }


[Bug c/58346] ICE with SIGFPE at -O1 and above on x86_64-linux-gnu (affecting trunk, 4.8, 4.7, and 4.6)

2013-09-10 Thread rguenther at suse dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58346

--- Comment #6 from rguenther at suse dot de rguenther at suse dot de ---
On Mon, 9 Sep 2013, joseph at codesourcery dot com wrote:

 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58346
 
 --- Comment #5 from joseph at codesourcery dot com joseph at codesourcery 
 dot com ---
 I think some of the uses of the zero-size-objects extension are ones for 
 which making an array of such objects is reasonable, but it makes sense to 
 give an error for trying to subtract pointers to such objects.

A similar (runtime) error can be provoked by subtracting pointers
to array elements of variable size that happen to have zero size
at runtime.

This all seems to be a can of worms which I'd rather shield the
middle-end from.  For example we assume that a[0] and a[1] never
alias.

Can we at least make arrays of zero-sized elements trigger undefined
behavior in our extension documentation?  We probably can paper
over the ICEs as they occur (testing coverage is very weak of course).


[Bug rtl-optimization/51447] [4.7 Regression] global register variable definition incorrectly removed as dead code

2013-09-10 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51447

--- Comment #20 from Jakub Jelinek jakub at gcc dot gnu.org ---
(In reply to Matthijs Kooijman from comment #19)
 Regarding the bug description that says 4.7 regression, I have also
 observed this bug on avr-gcc 4.3.3, so it's not a regression introduced in
 4.7.

That is just because no compilers older than 4.7.0 are supported any longer.
The [... Regression] markers only show list of still affected supported
compiler versions, if it is a regression from any of the older compilers.


[Bug middle-end/57748] [4.7/4.8/4.9 Regression] ICE when expanding assignment to unaligned zero-sized array

2013-09-10 Thread bernd.edlinger at hotmail dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57748

--- Comment #36 from Bernd Edlinger bernd.edlinger at hotmail dot de ---
Created attachment 30782
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30782action=edit
Next try for a fix

OK, I removed the misalign code path completely,
and found a one-line fix for read side too.

So here is my next try to fix this issue.
It seems to boot-strap on x86_64 and all test cases pass.

Additional testing would be welcome.

Any comments?


[Bug rtl-optimization/58369] [4.8/4.9 regression] ICE in subreg_get_info when compiling boost for m68k-linux

2013-09-10 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58369

--- Comment #1 from Mikael Pettersson mikpe at it dot uu.se ---
Created attachment 30783
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30783action=edit
smaller test case, from C-reduce


[Bug libstdc++/58376] New: regex_iterator::operator== and operator!= not const

2013-09-10 Thread kai.un...@l-3com.com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58376

Bug ID: 58376
   Summary: regex_iterator::operator== and operator!= not const
   Product: gcc
   Version: 4.6.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: kai.un...@l-3com.com

Comparison operators implemented as members of regex_iterator need to be const
(required by the C++ standard).


[Bug target/58330] powerpc64 atomic store split in two

2013-09-10 Thread amodra at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58330

--- Comment #4 from Alan Modra amodra at gcc dot gnu.org ---
Author: amodra
Date: Tue Sep 10 08:38:57 2013
New Revision: 202428

URL: http://gcc.gnu.org/viewcvs?rev=202428root=gccview=rev
Log:
PR target/58330
oops, missed from commit


Added:
trunk/gcc/testsuite/gcc.target/powerpc/pr58330.c


[Bug target/58375] internal compiler error: in push_reload, at reload.c:1360

2013-09-10 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58375

Georg-Johann Lay gjl at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ice-on-valid-code
 Target|AVR/ATmega2561  |avr
 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2013-09-10
 CC||gjl at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #2 from Georg-Johann Lay gjl at gcc dot gnu.org ---
(In reply to Peter Stegemann from comment #0)
 The culprit

Would you please add a minimal test case / preprocessed file and avoid zip
files as explained in the bug reporting hints.  Thanks.

http://gcc.gnu.org/bugs/#need
http://gcc.gnu.org/bugs/#detailed


[Bug libstdc++/58376] regex_iterator::operator== and operator!= not const

2013-09-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58376

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

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

--- Comment #1 from Paolo Carlini paolo.carlini at oracle dot com ---
In 4.6.x essentially nothing works as far as regex is concerned, the
implementation work is finally happening for 4.9.0.


[Bug tree-optimization/58373] [4.9 Regression] g++: internal compiler error: Segmentation fault (program cc1plus)

2013-09-10 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58373

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

   Target Milestone|--- |4.9.0

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
Looks like cc1plus being miscompiled - does it reproduce with stage1 cc1plus?


[Bug c++/58372] internal compiler error: ix86_compute_frame_layout

2013-09-10 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58372

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Target||mingw32-sjlj

--- Comment #2 from Richard Biener rguenth at gcc dot gnu.org ---
Please also specify how you configured the compiler(s).


[Bug c++/58377] New: spurious may be unused warning with -Og

2013-09-10 Thread rbd at debian dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58377

Bug ID: 58377
   Summary: spurious may be unused warning with -Og
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
  Assignee: unassigned at gcc dot gnu.org
  Reporter: rbd at debian dot org

The following code generates a spurious  ‘out’ may be used uninitialized in
this function warning when built with -Og; no optimization, -O1, -O2, -O3 and
-Ofast all do not warn.

// gcc -Og -std=c++0x -Wall -Werror -c xx.cpp

struct ordered_tasks
{
int * pop ();
};

struct A
{
ordered_tasks * tasks[];
int * pop ();
};

int pop_first_bucket;

int * A::pop ()
{
int * out;
int cur_bucket = 0;

do {
if (tasks[0]) {
out = tasks[cur_bucket]-pop();
if (out)
return out;
}
} while (pop_first_bucket);

return 0;
}

output / details of my system:

$ gcc -v -Og -std=c++0x -Wall -Werror -c xx.cpp
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
4.8.1-10ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs
--enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.8 --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls
--with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin
--with-system-zlib --disable-browser-plugin --enable-java-awt=gtk
--enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre
--enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686
--with-abi=m64 --with-multilib-list=m32,m64,mx32 --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.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu1) 
COLLECT_GCC_OPTIONS='-v' '-Og' '-std=c++11' '-Wall' '-Werror' '-c' '-E'
'-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/4.8/cc1plus -E -quiet -v -imultiarch
x86_64-linux-gnu -D_GNU_SOURCE xx.cpp -mtune=generic -march=x86-64 -std=c++11
-Wall -Werror -Og -fstack-protector -Wformat -Wformat-security
ignoring duplicate directory /usr/include/x86_64-linux-gnu/c++/4.8
ignoring nonexistent directory /usr/local/include/x86_64-linux-gnu
ignoring nonexistent directory
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/include
#include ... search starts here:
#include ... search starts here:
 /usr/include/c++/4.8
 /usr/include/x86_64-linux-gnu/c++/4.8
 /usr/include/c++/4.8/backward
 /usr/lib/gcc/x86_64-linux-gnu/4.8/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-Og' '-std=c++11' '-Wall' '-Werror' '-c' '-E'
'-mtune=generic' '-march=x86-64'
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
4.8.1-10ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs
--enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.8 --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls
--with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin
--with-system-zlib --disable-browser-plugin --enable-java-awt=gtk
--enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre
--enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686
--with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic

[Bug tree-optimization/58373] [4.9 Regression] g++: internal compiler error: Segmentation fault (program cc1plus)

2013-09-10 Thread markus at trippelsdorf dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58373

--- Comment #3 from Markus Trippelsdorf markus at trippelsdorf dot de ---
(In reply to Richard Biener from comment #2)
 Looks like cc1plus being miscompiled - does it reproduce with stage1 cc1plus?

Yes. It reproduces with --disable-bootstrap builds using 4.7.3 or 4.8.1.


[Bug libstdc++/54314] [4.8 Regression] undefined references to 'construction vtable for std::ostream-in-std::basic_ostringstreamchar, std::char_traitschar, std::allocatorchar '

2013-09-10 Thread pluto at agmk dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54314

Pawel Sikora pluto at agmk dot net changed:

   What|Removed |Added

 CC||pluto at agmk dot net

--- Comment #39 from Pawel Sikora pluto at agmk dot net ---
Hi,

i see mentioned linker error on the current gcc-4.8.2 for i686-gnu-linux target
and somehow it works for x86_64-gnu-linux target.


../../../lib/libUnitTest++.a(Test.cpp.o):Test.cpp:function construction vtable
for std::__7::basic_ostreamchar, std::__7::char_traitschar
-in-UnitTest::MemoryOutStream: error: undefined reference to 'virtual thunk to
std::__7::basic_ostreamchar, std::__7::char_traitschar ::~basic_ostream()'
../../../lib/libUnitTest++.a(Test.cpp.o):Test.cpp:function construction vtable
for std::__7::basic_ostreamchar, std::__7::char_traitschar
-in-UnitTest::MemoryOutStream: error: undefined reference to 'virtual thunk to
std::__7::basic_ostreamchar, std::__7::char_traitschar ::~basic_ostream()'
../../../lib/libUnitTest++.a(Test.cpp.o):Test.cpp:function construction vtable
for std::__7::basic_ostringstreamchar, std::__7::char_traitschar,
std::__7::allocatorchar -in-UnitTest::MemoryOutStream: error: undefined
reference to 'virtual thunk to std::__7::basic_ostringstreamchar,
std::__7::char_traitschar, std::__7::allocatorchar
::~basic_ostringstream()'
../../../lib/libUnitTest++.a(Test.cpp.o):Test.cpp:function construction vtable
for std::__7::basic_ostringstreamchar, std::__7::char_traitschar,
std::__7::allocatorchar -in-UnitTest::MemoryOutStream: error: undefined
reference to 'virtual thunk to std::__7::basic_ostringstreamchar,
std::__7::char_traitschar, std::__7::allocatorchar
::~basic_ostringstream()'


MemoryOutStream is declared in the UnitTest++ as:

#include sstream

namespace UnitTest
{

class MemoryOutStream : public std::ostringstream
{
public:
MemoryOutStream() {}
char const* GetText() const;

private:
MemoryOutStream(MemoryOutStream const);
void operator =(MemoryOutStream const);

mutable std::string m_text;
};

}


[Bug libgomp/58378] New: Protect libgomp against child process hanging after a Unix fork()

2013-09-10 Thread olivier.grisel at ensta dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58378

Bug ID: 58378
   Summary: Protect libgomp against child process hanging after a
Unix fork()
   Product: gcc
   Version: 4.8.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libgomp
  Assignee: unassigned at gcc dot gnu.org
  Reporter: olivier.grisel at ensta dot org
CC: jakub at gcc dot gnu.org

Created attachment 30784
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30784action=edit
Patch to protect libgomp thread pool against fork()

The problem is discussed in [1]. To summarize if a process uses OpenMP
features and then calls fork, the threads from the OpenMP thread pool
of the parent process are not copied to the child process (which is
expected). Then later if the child process uses some OpenMP feature
again it will hang, waiting for threads that don't exist in its own
process.

In practice this can often happen in Python programs that import
modules that use OpenMP internally while also using the
`multiprocessing` module. This module is in the Python standard
library and uses Unix fork for handling multi-core concurrency
efficiently at the Python level.

I attach the patch to this report and a test that checks that the fix actually
works. The patch can also be visualized on this github branch [2].

When running the example snippet from [1] saved in a file called
`openmp_fork.c` I get the expected output:

$ gcc-head -fopenmp -o openmp_fork openmp_fork.c  ./openmp_fork
para_a
para_a
a ended
para_b
para_b
b ended

instead of a hanging process.


[1] http://bisqwit.iki.fi/story/howto/openmp/#OpenmpAndFork
[2] https://github.com/ogrisel/gcc/compare/forksafe-omp-pthread_atfork

Note that the OpenMP implementation of ICC does not hang either when using
fork.

Note 2: this problem is related to (a duplicate of)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52303 which was deemed
invalid as the POSIX standard states that it's unsafe to use threading after a
fork and prior to calling exec. However as the `pthread_atfork` protection from
this patch is rather non-invasive and should not impact any process not
initializing the libgomp runtime prior to a fork. Interpreted language
implementations such as CPython that (ab)use Unix fork for efficient
concurrency would really benefit from such a protection against libraries using
OpenMP internally with the caller not necessarily being aware of it.


[Bug libgomp/58378] Protect libgomp against child process hanging after a Unix fork()

2013-09-10 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58378

--- Comment #1 from Jakub Jelinek jakub at gcc dot gnu.org ---
The PR52303 comment about what you are trying to do being invalid of course
applies here too, and the patch isn't anything close to non-invasive, it is
just wrong, because it will break valid OpenMP programs.


[Bug c++/58377] spurious may be unused warning with -Og

2013-09-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58377

--- Comment #1 from Paolo Carlini paolo.carlini at oracle dot com ---
I can't reproduce this issue with stock FSF GCCs. In any case, it doesn't look
like a C++ front-end issue, I would recommend preparing an equivalent pure C
program for the convenience of middle-end people (changing pop to be free
standing functions and little more should be enough). Often I do that kind of
work but I can't reproduce the issue in the first place in this case.


[Bug preprocessor/58370] pre compiled headers failure on NetBSD/sparc64

2013-09-10 Thread martin at netbsd dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58370

--- Comment #4 from Martin Husemann martin at netbsd dot org ---
To avoid confusion, I'm splitting this into two separate reports - will dig
further into the crash myself, since it is probably not easy to reproduce on
other host platforms.


[Bug target/56412] [4.8] libtool: cygpath: command not found for mingw32 host

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56412

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2013-09-10
 CC||ktietz at gcc dot gnu.org
 Ever confirmed|0   |1

--- Comment #6 from Kai Tietz ktietz at gcc dot gnu.org ---
Yes, this is a libtool bug.  If thing is solved on libtool, then we can
continue on that.  So long I set bug in status waiting


[Bug libgomp/58378] Protect libgomp against child process hanging after a Unix fork()

2013-09-10 Thread olivier.grisel at ensta dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58378

--- Comment #2 from Olivier Grisel olivier.grisel at ensta dot org ---
What kind of breakage does this introduce? It's a real question, I am not an
experienced OpenMP developer.

Do you see any solution that would prevent libgomp-based programs such as
mentioned in [1] to not hang after a fork().

Is it worth for me to spend time trying to work a better and safer solution
(maybe with some guidance)?


[Bug preprocessor/58379] New: default mmap based implementation (mmap_gt_pch_get_address/mmap_gt_pch_use_address) is useless

2013-09-10 Thread martin at netbsd dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58379

Bug ID: 58379
   Summary: default mmap based implementation
(mmap_gt_pch_get_address/mmap_gt_pch_use_address) is
useless
   Product: gcc
   Version: 4.8.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: preprocessor
  Assignee: unassigned at gcc dot gnu.org
  Reporter: martin at netbsd dot org

I may be misunderstanding the interface - but it looks to me like it lets the
kernel chose an arbitrary mapping address for different compiler invocations
but relies on the assumption that the returned address will be the same. If
not, the compiler fails with a fatal_error when trying to read a precompiled
header file (had to relocate PCH).

I can not imagine a host system where this would work reliably (or even
typically twice in a row).

Please tell me I misunderstood, or consider disabling PCH support for host
platforms without host_hooks overriding this function.


[Bug c++/58380] New: ice in fold_comparison

2013-09-10 Thread dcb314 at hotmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58380

Bug ID: 58380
   Summary: ice in fold_comparison
   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 30785
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30785action=edit
gzipped C++ source code

I just tried to compile package k3d-0.8.0.2-19 with gcc 4.9 trunk
dated 20130909. It said

/home/dcb/rpmbuild/BUILD/k3d-source-0.8.0.2/k3dsdk/document_plugin_factory.h:48:9:
internal compiler error: Segmentation fault
  inode* create_plugin(iplugin_factory Factory, idocument Document)
 ^
0xacdd4f crash_signal
../../src/trunk/gcc/toplev.c:335
0x8b7709 fold_comparison
../../src/trunk/gcc/fold-const.c:9052
0x8c0b9b fold_binary_loc(unsigned int, tree_code, tree_node*, tree_node*,
tree_node*)
../../src/trunk/gcc/fold-const.c:12780
0xaff5d2 cleanup_control_expr_graph
../../src/trunk/gcc/tree-cfgcleanup.c:96
0xaff5d2 cleanup_control_flow_bb
../../src/trunk/gcc/tree-cfgcleanup.c:171
0xaff5d2 cleanup_tree_cfg_bb
../../src/trunk/gcc/tree-cfgcleanup.c:589
0xb01018 cleanup_tree_cfg_1
../../src/trunk/gcc/tree-cfgcleanup.c:634
0xb01018 cleanup_tree_cfg_noloop
../../src/trunk/gcc/tree-cfgcleanup.c:690
0xb01018 cleanup_tree_cfg()
../../src/trunk/gcc/tree-cfgcleanup.c:745
0xa27a84 execute_function_todo
../../src/trunk/gcc/passes.c:1791
0xa28167 execute_todo
../../src/trunk/gcc/passes.c:1866
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.

Here is valgrind helping out with a stack backtrace

==23967== Invalid read of size 2
==23967==at 0x8B7709: fold_comparison(unsigned int, tree_code, tree_node*,
tree_node*, tree_node*) (fold-const.c:9052)
==23967==by 0x8C0B9B: fold_binary_loc(unsigned int, tree_code, tree_node*,
tree_node*, tree_node*) (fold-const.c:12780)
==23967==by 0xAFF5D2: cleanup_tree_cfg_bb(basic_block_def*)
(tree-cfgcleanup.c:96)
==23967==by 0xB01018: cleanup_tree_cfg() (tree-cfgcleanup.c:634)

Preprocessed source code attached. Flag -O2 required.


[Bug target/57848] internal compiler error on builtin and '#pragma GCC target()' option

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57848

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 CC||whitequill at abstractions dot 
me

--- Comment #11 from Kai Tietz ktietz at gcc dot gnu.org ---
*** Bug 58061 has been marked as a duplicate of this bug. ***


[Bug libgcc/58061] internal compiler error

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58061

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #4 from Kai Tietz ktietz at gcc dot gnu.org ---
Duplicate of PR/57848

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


[Bug c++/57897] Target x86_64-w64-mingw32 failed with '-mno-fentry isn't compatible with SEH'

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57897

--- Comment #3 from Kai Tietz ktietz at gcc dot gnu.org ---
Hmm, what I don't get is why there is a warning about -mno-fentry.  So I would
assume there is something else broken.
Nevertheless this reminds me about  pr/57848.  This issue seems to be in
general no mingw specific problem, but more an inconsistency about sse and
builtins.


[Bug libgomp/58378] Protect libgomp against child process hanging after a Unix fork()

2013-09-10 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58378

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #3 from Jakub Jelinek jakub at gcc dot gnu.org ---
Please read OpenMP 4.0, section 2.14.2 (threadprivate directive), or
corresponding sections in older standards.
The implementation must preserve values of threadprivate variables in certain
cases, which your hack violates.  If somebody (validly) does:
int v;
#pragma omp threadprivate (v)
...
omp_set_dynamic (0);
#pragma omp parallel num_threads (4)
{
  v = omp_get_thread_num () * 16;
}
...
pid = fork ();
if (pid == 0)
  {
/* Valid fork child, only calling functions POSIX allows it to.  */
execve (...);
  }

#pragma omp parallel num_threads (4)
{
  if (v != omp_get_thread_num () * 16)
abort ();
}

then the implementation must preserve the threadprivate values, but with your
patch all the threads but the initial one will be lost during fork and thus v
will be 0 instead of the desired value later on.

There is no point trying to hack around bugs in your code inside of libgomp,
simply follow the requirements how you can use fork in multithreaded apps.


[Bug target/54412] Request for 32-byte stack alignment with -mavx on Windows

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 CC||ktietz at gcc dot gnu.org

--- Comment #1 from Kai Tietz ktietz at gcc dot gnu.org ---
MS' abi doesn't allow this.  So I doubt we will be able to implement that for
this target.  If we want to re-align stack on function-base we will run into
troubles with SEH-information.
Doesn't it work to align explicit the variable itself?


[Bug c++/58377] spurious may be unused warning with -Og

2013-09-10 Thread rbd at debian dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58377

--- Comment #2 from Roland Dreier rbd at debian dot org ---
arg, I really apologize.  I copied and pasted from the wrong window and ended
up with a test case that does NOT reproduce the issue, even on my system.  Here
is one I triple checked does fail (and everything is copied from one window, so
the code is definitely what I built):

$ cat x.cpp
// gcc -Og -Wall -Werror -c x.cpp

int * pop ();

struct A
{
void * tasks[0];
};

int pop_first_bucket;

int * my_pop (struct A * t)
{
int * out;

do {
if (t-tasks[0]  (out = pop()))
return out;
} while (pop_first_bucket);
return 0;
}

$ gcc -v -Og -Wall -Werror -c x.cpp

Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
4.8.1-10ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs
--enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.8 --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls
--with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin
--with-system-zlib --disable-browser-plugin --enable-java-awt=gtk
--enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre
--enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686
--with-abi=m64 --with-multilib-list=m32,m64,mx32 --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.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu1) 
COLLECT_GCC_OPTIONS='-v' '-Og' '-Wall' '-Werror' '-c' '-E' '-mtune=generic'
'-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/4.8/cc1plus -E -quiet -v -imultiarch
x86_64-linux-gnu -D_GNU_SOURCE x.cpp -mtune=generic -march=x86-64 -Wall -Werror
-Og -fstack-protector -Wformat -Wformat-security
ignoring duplicate directory /usr/include/x86_64-linux-gnu/c++/4.8
ignoring nonexistent directory /usr/local/include/x86_64-linux-gnu
ignoring nonexistent directory
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../x86_64-linux-gnu/include
#include ... search starts here:
#include ... search starts here:
 /usr/include/c++/4.8
 /usr/include/x86_64-linux-gnu/c++/4.8
 /usr/include/c++/4.8/backward
 /usr/lib/gcc/x86_64-linux-gnu/4.8/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.8/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/4.8/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-Og' '-Wall' '-Werror' '-c' '-E' '-mtune=generic'
'-march=x86-64'
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
4.8.1-10ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs
--enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.8 --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls
--with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin
--with-system-zlib --disable-browser-plugin --enable-java-awt=gtk
--enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre
--enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686
--with-abi=m64 --with-multilib-list=m32,m64,mx32 --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.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu1) 
COLLECT_GCC_OPTIONS='-v' '-Og' '-Wall' '-Werror' '-c' '-o'
'/home/roland/.ccache/0/5/a073b86e9bd44947a6de1615bfe6ad-3402.o.tmp.roland-t410s.19701'
'-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/4.8/cc1plus -fpreprocessed

[Bug rtl-optimization/38614] ICE at simplify-rtx.c:4956

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38614

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 CC||ktietz at gcc dot gnu.org
 Resolution|--- |WONTFIX

--- Comment #4 from Kai Tietz ktietz at gcc dot gnu.org ---
If this issue occurs with more recent gcc-version, please open an new bug.  gcc
4.4 is no longer maintained (same as gcc 4.5).
So closing this bug


[Bug target/52061] compiler internal error in extract_insn

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52061

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||ktietz at gcc dot gnu.org
 Resolution|--- |WONTFIX

--- Comment #3 from Kai Tietz ktietz at gcc dot gnu.org ---
Due this issue is in 4.6 tree, which isn't any longer under maintenance by
gcc's team, I close this bug as won't fix.


[Bug lto/49922] I try to build libgmp using PGO and lto, but the test will result in internal compiler error

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49922

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 Status|WAITING |RESOLVED
 CC||ktietz at gcc dot gnu.org
 Resolution|--- |WONTFIX

--- Comment #4 from Kai Tietz ktietz at gcc dot gnu.org ---
Due issue is solved for gcc 4.7 (and upward), and gcc 4.6 isn't under
maintenance by gcc team any more, I close this bug as won't fix.


[Bug c++/58380] ice in fold_comparison

2013-09-10 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58380

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
   Last reconfirmed||2013-09-10
 CC||mpolacek at gcc dot gnu.org
  Known to work||4.8.1
   Target Milestone|--- |4.9.0
 Ever confirmed|0   |1
  Known to fail||4.9.0

--- Comment #1 from Marek Polacek mpolacek at gcc dot gnu.org ---
Confirmed, needs -O2.  Bisecting...


[Bug c++/58377] spurious may be unused warning with -Og

2013-09-10 Thread rbd at debian dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58377

--- Comment #3 from Roland Dreier rbd at debian dot org ---
Even simpler test case for me:

$ cat x.cpp 
// gcc -Og -Wall -Werror -c x.cpp

int pop ();
int pop_first_bucket;

int my_pop ()
{
int out;

while (pop_first_bucket)
if (pop_first_bucket  (out = pop()))
return out;

return 0;
}

$ for o in Og O0 O1 O2 O3 Ofast; do echo === $o ===; gcc -$o -Wall -Werror -c
x.cpp; done
=== Og ===
x.cpp: In function ‘int my_pop()’:
x.cpp:8:9: error: ‘out’ may be used uninitialized in this function
[-Werror=maybe-uninitialized]
 int out;
 ^
cc1plus: all warnings being treated as errors
=== O0 ===
=== O1 ===
=== O2 ===
=== O3 ===
=== Ofast ===

Does not error when built as x.c:

$ cp x.cpp x.c; for o in Og O0 O1 O2 O3 Ofast; do echo === $o ===; gcc -$o
-Wall -Werror -c x.c; done
=== Og ===
=== O0 ===
=== O1 ===
=== O2 ===
=== O3 ===
=== Ofast ===

[Bug target/53485] gcc -O -mavx generates illegal instruction on win64

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53485

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 CC||ktietz at gcc dot gnu.org

--- Comment #2 from Kai Tietz ktietz at gcc dot gnu.org ---
yes, it is an alignment issue.  Try to set explicit alignment for this global.
That it doesn't fail for 32-bit is just by chance.
This seems to me an OP issue.


[Bug target/47596] internal compiler error: in print_reg, at config/i386/i386.c:10894

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47596

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution|--- |WONTFIX

--- Comment #9 from Kai Tietz ktietz at gcc dot gnu.org ---
Gcc 4.4 isn't anymore maintained by gcc team.  As it works for newer
gcc-versions, I close this bug as won't fix.


[Bug libgomp/58378] Protect libgomp against child process hanging after a Unix fork()

2013-09-10 Thread olivier.grisel at ensta dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58378

--- Comment #4 from Olivier Grisel olivier.grisel at ensta dot org ---
Thanks for the explanation. Would you consider a solution that would preserve
the state of the parent process and would just reset the thread pool data on
the child?

Otherwise we will have to consider that the way fork() is used in Python's
multiprocessing module is really an abuse and that there is no way to safely
use both openmp-libraries and Python multiprocessing in the same program
safely.


[Bug preprocessor/58381] New: crash in diagnostic_report_current_module when a fatal_error happens during PCH processing on NetBSD/spa64rc

2013-09-10 Thread martin at netbsd dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58381

Bug ID: 58381
   Summary: crash in diagnostic_report_current_module when a
fatal_error happens during PCH processing on
NetBSD/spa64rc
   Product: gcc
   Version: 4.8.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: preprocessor
  Assignee: unassigned at gcc dot gnu.org
  Reporter: martin at netbsd dot org

In toplev_main variable line_table is initialized and becomes 0x417dc000,
however, when invoking diagnostic_report_current_module with this backtrace it
is different:

#0  diagnostic_report_current_module (context=0x17b28d0, where=19) at
../../gcc-4.8.1/gcc/diagnostic.c:468
#1  0x003a6368 in cp_diagnostic_starter (context=0x17b28d0,
diagnostic=0xa3e8)
at ../../gcc-4.8.1/gcc/cp/error.c:2907
#2  0x012d5e44 in diagnostic_report_diagnostic (context=0x17b28d0,
diagnostic=0xa3e8)
at ../../gcc-4.8.1/gcc/diagnostic.c:756
#3  0x012d6b90 in fatal_error (gmsgid=0x13e1230 had to relocate PCH)
at ../../gcc-4.8.1/gcc/diagnostic.c:1076
#4  0x008e83dc in gt_pch_restore (f=0x424a0738) at
../../gcc-4.8.1/gcc/ggc-common.c:704
#5  0x005c575c in c_common_read_pch (pfile=0x42765800, name=0x4275dbc0
conftest.h.gch, fd=4, 
orig_name=0x4275dbb0 conftest.h) at
../../gcc-4.8.1/gcc/c-family/c-pch.c:370
#6  0x012f05f8 in should_stack_file (pfile=0x42765800, file=0x42788130,
import=false)
at ../../gcc-4.8.1/libcpp/files.c:787
#7  0x012f097c in _cpp_stack_file (pfile=0x42765800, file=0x42788130,
import=false)
at ../../gcc-4.8.1/libcpp/files.c:872
#8  0x012f0fe4 in _cpp_stack_include (pfile=0x42765800,
fname=0x4275db90 conftest.h, angle_brackets=0, 
type=IT_INCLUDE) at ../../gcc-4.8.1/libcpp/files.c:1008
#9  0x012e1fc4 in do_include_common (pfile=0x42765800, type=IT_INCLUDE)
at ../../gcc-4.8.1/libcpp/directives.c:793
#10 0x012e2024 in do_include (pfile=0x42765800) at
../../gcc-4.8.1/libcpp/directives.c:804
#11 0x012e13dc in _cpp_handle_directive (pfile=0x42765800, indented=0)
at ../../gcc-4.8.1/libcpp/directives.c:492
#12 0x012f9dc4 in _cpp_lex_token (pfile=0x42765800) at
../../gcc-4.8.1/libcpp/lex.c:1990
#13 0x01306cec in cpp_get_token_1 (pfile=0x42765800,
location=0xb0b8)
at ../../gcc-4.8.1/libcpp/macro.c:2355
#14 0x01307330 in cpp_get_token_with_location (pfile=0x42765800,
loc=0xb0b8)
at ../../gcc-4.8.1/libcpp/macro.c:2537
#15 0x005b9484 in c_lex_with_flags (value=0xb0c0,
loc=0xb0b8, 
cpp_flags=0xb0b2 , lex_flags=0) at
../../gcc-4.8.1/gcc/c-family/c-lex.c:300
#16 0x003b225c in cp_lexer_get_preprocessor_token (lexer=0x0,
token=0xb0b0)
at ../../gcc-4.8.1/gcc/cp/parser.c:715
#17 0x003f64e8 in cp_parser_initial_pragma
(first_token=0xb0b0)
at ../../gcc-4.8.1/gcc/cp/parser.c:28139
#18 0x003b1d98 in cp_lexer_new_main () at
../../gcc-4.8.1/gcc/cp/parser.c:585
#19 0x003b6604 in cp_parser_new () at
../../gcc-4.8.1/gcc/cp/parser.c:3253
#20 0x003f6b78 in c_parse_file () at
../../gcc-4.8.1/gcc/cp/parser.c:28335
#21 0x005c30a0 in c_common_parse_file () at
../../gcc-4.8.1/gcc/c-family/c-opts.c:1046
#22 0x00c5f230 in compile_file () at ../../gcc-4.8.1/gcc/toplev.c:543
#23 0x00c62540 in do_compile () at ../../gcc-4.8.1/gcc/toplev.c:1864
#24 0x00c62788 in toplev_main (argc=24, argv=0xb718) at
../../gcc-4.8.1/gcc/toplev.c:1940
#25 0x012bc2c0 in main (argc=24, argv=0xb718) at
../../gcc-4.8.1/gcc/main.c:36

(gdb) print line_table
$6 = (line_maps *) 0x42e7

(gdb) print *line_table
$16 = {info_ordinary = {maps = 0x11400, allocated = 1, used = 1115871712,
cache = 0}, info_macro = {
maps = 0x10500, allocated = 0, used = 1117049688, cache = 0}, depth =
1, trace_includes = 55, 
  highest_location = 3, highest_line = 1117048808, max_column_hint = 0,
reallocator = 0x11500, 
  round_alloc_size = 0, location_adhoc_data_map = {htab = 0x0, curr_loc = 1,
allocated = 335544320, data = 0x24282d9e0}}

The used fields look strange. Later in the same call it crashes:

Program received signal SIGSEGV, Segmentation fault.
0x012fff88 in linemap_location_from_macro_expansion_p (set=0x42e7,
location=19)
at ../../gcc-4.8.1/libcpp/line-map.c:948
948   linemap_assert (location = MAX_SOURCE_LOCATION
(gdb) bt
#0  0x012fff88 in linemap_location_from_macro_expansion_p
(set=0x42e7, location=19)
at ../../gcc-4.8.1/libcpp/line-map.c:948
#1  0x012ff31c in linemap_lookup (set=0x42e7, line=19) at
../../gcc-4.8.1/libcpp/line-map.c:642
#2  0x0130065c in linemap_macro_loc_to_def_point (set=0x42e7,
location=19, 

[Bug libgomp/58378] Protect libgomp against child process hanging after a Unix fork()

2013-09-10 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58378

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org ---
Having a pthread_atfork child hook that would do freeing of memory, or
pthread_mutex_init etc. would only make invalid any OpenMP program using fork,
even those that use it correctly.


[Bug boehm-gc/52217] [boehm-gc] revision 184100 causes segmentation fault in mingw32

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52217

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |WAITING
   Last reconfirmed||2013-09-10
 Ever confirmed|0   |1

--- Comment #2 from Kai Tietz ktietz at gcc dot gnu.org ---
Wait for OP check.  Still assume it is an issue of static vs. shared.
Set bug as waiting.


[Bug libgomp/58378] Protect libgomp against child process hanging after a Unix fork()

2013-09-10 Thread olivier.grisel at ensta dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58378

--- Comment #6 from Olivier Grisel olivier.grisel at ensta dot org ---
Alright thanks again. For reference I just discovered that the issue has
recently been fixed in Python 3.4 by adding a new `forkserver` option to
multiprocessing.

  http://bugs.python.org/issue8713


[Bug target/55543] diamond shaped inheritance involving strings leads to crashing executables (MinGW, 32 bit)

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55543

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 Status|NEW |WAITING

--- Comment #6 from Kai Tietz ktietz at gcc dot gnu.org ---
I tested 4.8 and here this issue seems to be solved.
Does the issue still exists for more recent 4.7 version?


[Bug target/57495] Compiling mingw targets with -mcmodel=large causes assert

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57495

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

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

--- Comment #2 from Kai Tietz ktietz at gcc dot gnu.org ---
Code-models large and medium will be supported beginning with gcc 4.9 version. 
The feature is already present there.  A back-merge of this feature isn't
planned.
So I close this bug as won't fix.


[Bug target/55491] Segmentation fault

2013-09-10 Thread ktietz at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55491

Kai Tietz ktietz at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |WORKSFORME

--- Comment #8 from Kai Tietz ktietz at gcc dot gnu.org ---
hmm, can't reproduce this for i686-w64-mingw32 for gcc 4.7, or gcc 4.8 series. 
I was using here cygwin-cross, and native compiler.  So I assume it might be
related to the release of this compiler.

So I close this bug as not reproduce-able for me.


[Bug preprocessor/58379] default mmap based implementation (mmap_gt_pch_get_address/mmap_gt_pch_use_address) is useless

2013-09-10 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58379

--- Comment #1 from Richard Biener rguenth at gcc dot gnu.org ---
Well, it doesn't _rely_ on it - it basically makes systems where that is the
case work out of the box (every system pre address-space-randomization area).

If you have a system that randomizes then you have to re-define the hook.


[Bug c++/58377] spurious may be unused warning with -Og

2013-09-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58377

--- Comment #4 from Paolo Carlini paolo.carlini at oracle dot com ---
This one works for me but only with 4.8.x, not with mainline, and -Og didn't
exist in 4.7.x, thus it would not qualify as a regression, I'm afraid.


[Bug rtl-optimization/58365] [4.7/4.8/4.9 Regression] likely wrong code bug

2013-09-10 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58365

--- Comment #9 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Tue Sep 10 11:47:19 2013
New Revision: 202434

URL: http://gcc.gnu.org/viewcvs?rev=202434root=gccview=rev
Log:
PR rtl-optimization/58365
* cfgcleanup.c (merge_memattrs): Also clear MEM_READONLY_P
resp. MEM_NOTRAP_P if they differ, or set MEM_VOLATILE_P if
it differs.

* gcc.c-torture/execute/pr58365.c: New test.

Added:
trunk/gcc/testsuite/gcc.c-torture/execute/pr58365.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/cfgcleanup.c
trunk/gcc/testsuite/ChangeLog


[Bug rtl-optimization/58365] [4.7/4.8/4.9 Regression] likely wrong code bug

2013-09-10 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58365

--- Comment #10 from Jakub Jelinek jakub at gcc dot gnu.org ---
Author: jakub
Date: Tue Sep 10 11:48:30 2013
New Revision: 202435

URL: http://gcc.gnu.org/viewcvs?rev=202435root=gccview=rev
Log:
PR rtl-optimization/58365
* cfgcleanup.c (merge_memattrs): Also clear MEM_READONLY_P
resp. MEM_NOTRAP_P if they differ, or set MEM_VOLATILE_P if
it differs.

* gcc.c-torture/execute/pr58365.c: New test.

Added:
branches/gcc-4_8-branch/gcc/testsuite/gcc.c-torture/execute/pr58365.c
Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/cfgcleanup.c
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog


[Bug rtl-optimization/58365] [4.7 Regression] likely wrong code bug

2013-09-10 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58365

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

Summary|[4.7/4.8/4.9 Regression]|[4.7 Regression] likely
   |likely wrong code bug   |wrong code bug

--- Comment #11 from Jakub Jelinek jakub at gcc dot gnu.org ---
Fixed for 4.8.2+ so far.


[Bug c++/58377] spurious may be unused warning with -Og

2013-09-10 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58377

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
  Known to work||4.9.0
Version|unknown |4.8.1
   Last reconfirmed||2013-09-10
  Component|middle-end  |c++
 CC||xinliangli at gmail dot com
 Ever confirmed|0   |1
Summary|spurious may be used   |spurious may be unused
   |uninitialized warning with |warning with -Og
   |-Og |

--- Comment #5 from Richard Biener rguenth at gcc dot gnu.org ---
Confirmed with the C++ FE, works with the C FE.  Does not warn on trunk (for
no good reason I think, the reason seems to be presence of loop structure
and thus some extra BBs).

Difference:

trunk:

[WORKLIST]: add to initial list: out_2 = PHI out_8(D)(2), out_1(8)
[CHECK]: examining phi: out_2 = PHI out_8(D)(2), out_1(8)

Use in stmt out_1 = PHI out_12(4), out_12(5), out_2(3)
is guarded by :
if (pop_first_bucket.2_10 != 0)

[CHECK] Found def edge 0 in out_1 = PHI out_12(4), out_12(5), out_2(3)

[CHECK] Found def edge 1 in out_1 = PHI out_12(4), out_12(5), out_2(3)
Operand defs of phi out_2 = PHI out_8(D)(2), out_1(8)
is guarded by :
if (out_12 != 0)
[CHECK]: Found unguarded use: out_1 = PHI out_12(4), out_12(5), out_2(3)
[WORKLIST]: Update worklist with phi: out_1 = PHI out_12(4), out_12(5),
out_2(3)
[CHECK]: examining phi: out_1 = PHI out_12(4), out_12(5), out_2(3)

Use in stmt out_2 = PHI out_8(D)(2), out_1(8)
is guarded by :
 (.NOT.) if (iftmp.1_3 != 0)

[CHECK] Found def edge 0 in out_1 = PHI out_12(4), out_12(5), out_2(3)

[CHECK] Found def edge 1 in out_1 = PHI out_12(4), out_12(5), out_2(3)
Operand defs of phi out_1 = PHI out_12(4), out_12(5), out_2(3)
is guarded by :
if (pop_first_bucket.2_10 != 0)
(.AND.)
if (out_12 != 0)
(.OR.)
if (pop_first_bucket.2_10 != 0)
(.AND.)
 (.NOT.) if (out_12 != 0)

Normalized to
Operand defs of phi out_1 = PHI out_12(4), out_12(5), out_2(3)
is guarded by :
if (pop_first_bucket.2_10 != 0)
...

vs. 4.8 branch:

[WORKLIST]: add to initial list: out_2 = PHI out_8(D)(2), out_1(6)
[CHECK]: examining phi: out_2 = PHI out_8(D)(2), out_1(6)

Use in stmt out_1 = PHI out_12(4), out_12(5), out_2(3)
is guarded by :
if (pop_first_bucket.2_10 != 0)

[CHECK] Found def edge 0 in out_1 = PHI out_12(4), out_12(5), out_2(3)

[CHECK] Found def edge 1 in out_1 = PHI out_12(4), out_12(5), out_2(3)
Operand defs of phi out_2 = PHI out_8(D)(2), out_1(6)
is guarded by :
if (out_12 != 0)
[CHECK]: Found unguarded use: out_1 = PHI out_12(4), out_12(5), out_2(3)
[WORKLIST]: Update worklist with phi: out_1 = PHI out_12(4), out_12(5),
out_2(3)
[CHECK]: examining phi: out_1 = PHI out_12(4), out_12(5), out_2(3)
[CHECK]: Found unguarded use: out_2 = PHI out_8(D)(2), out_1(6)
[CHECK]: Found unguarded use: _4 = PHI out_1(6), 0(7)
[WORKLIST]: Update worklist with phi: _4 = PHI out_1(6), 0(7)
[CHECK]: examining phi: _4 = PHI out_1(6), 0(7)
[CHECK]: Found unguarded use: return _4;

The IL difference is that we have

  bb 6:
  # out_1 = PHI out_12(4), out_12(5), out_2(3)
  # iftmp.1_3 = PHI 1(4), 0(5), 0(3)
  if (iftmp.1_3 != 0)
goto bb 7;
  else
goto bb 8;

  bb 7:
  out_13 = out_1;
  goto bb 10;
...
  bb 10:
  # _4 = PHI out_13(7), 0(9)
  return _4;

which doesn't warn vs.

  bb 6:
  # out_1 = PHI out_12(4), out_12(5), out_2(3)
  # iftmp.1_3 = PHI 1(4), 0(5), 0(3)
  if (iftmp.1_3 != 0)
goto bb 8;
  else
goto bb 7;
...
  bb 8:
  # _4 = PHI out_1(6), 0(7)
  return _4;

which does.  The issue seems to be that the analysis doesn't consider
the PHI uses in

  if (iftmp.1_3 != 0)
goto bb 8;
  else
goto bb 7;

  bb 7:
  # out_2 = PHI out_8(D)(2), out_1(6)

guarded by anything (the out_1 use is guarded by iftmp.1_3 == 0).

David - the code does

  if (gimple_code (use_stmt) == GIMPLE_PHI)
use_bb = gimple_phi_arg_edge (use_stmt,
  PHI_ARG_INDEX_FROM_USE (use_p))-src;
  else
use_bb = gimple_bb (use_stmt);

  if (is_use_properly_guarded (use_stmt,
   use_bb,
...

so it chooses the source block (as approximation?).

Splitting all edges results in us no longer warning here and:

Use in stmt out_2 = PHI out_8(D)(15), out_1(16)
is guarded by :
 (.NOT.) if (iftmp.1_3 != 0)

Can you see to fix that please?  Thanks.


[Bug middle-end/58382] New: [4.9 Regression] unwind.inc:136:1: ICE: in trunc_int_for_mode, at explow.c:55

2013-09-10 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58382

Bug ID: 58382
   Summary: [4.9 Regression] unwind.inc:136:1: ICE: in
trunc_int_for_mode, at explow.c:55
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
  Assignee: unassigned at gcc dot gnu.org
  Reporter: danglin at gcc dot gnu.org
  Host: hppa64-hp-hpux11.11
Target: hppa64-hp-hpux11.11
 Build: hppa64-hp-hpux11.11

Created attachment 30786
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30786action=edit
Preprocessed source

/test/gnu/gcc/objdir/./gcc/xgcc -B/test/gnu/gcc/objdir/./gcc/
-B/opt/gnu64/gcc/g
cc-4.9/hppa64-hp-hpux11.11/bin/
-B/opt/gnu64/gcc/gcc-4.9/hppa64-hp-hpux11.11/lib
/ -isystem /opt/gnu64/gcc/gcc-4.9/hppa64-hp-hpux11.11/include -isystem
/opt/gnu6
4/gcc/gcc-4.9/hppa64-hp-hpux11.11/sys-include-g -O2 -O2  -g -O2 -DIN_GCC  
-
W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes
-Wmissing
-prototypes -Wold-style-definition  -isystem ./include  
-frandom-seed=fixed-see
d -Dpa64=1 -DELF=1 -mlong-calls  -g -DIN_LIBGCC2 -fbuilding-libgcc
-fno-stack-pr
otector   -frandom-seed=fixed-seed -Dpa64=1 -DELF=1 -mlong-calls  -I. -I.
-I../.
././gcc -I../../../gcc/libgcc -I../../../gcc/libgcc/.
-I../../../gcc/libgcc/../g
cc -I../../../gcc/libgcc/../include  -DHAVE_CC_TLS -DUSE_EMUTLS -o unwind-dw2.o 
-MT unwind-dw2.o -MD -MP -MF unwind-dw2.dep -fexceptions -c
../../../gcc/libgcc/
unwind-dw2.c -fvisibility=hidden -DHIDE_EXPORTS
In file included from ../../../gcc/libgcc/unwind-dw2.c:1698:0:
../../../gcc/libgcc/unwind.inc: In function '_Unwind_RaiseException':
../../../gcc/libgcc/unwind.inc:136:1: internal compiler error: in
trunc_int_for_mode, at explow.c:55
 }
 ^

 /test/gnu/gcc/objdir/./gcc/cc1 -fpreprocessed unwind-dw2.i -quiet -dumpbase
unw
ind-dw2.c -mlong-calls -auxbase-strip unwind-dw2.o -g -g -g -O2 -O2 -O2 -Wextra 
-Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes
-Wmissing-p
rototypes -Wold-style-definition -version -frandom-seed=fixed-seed
-fbuilding-li
bgcc -fno-stack-protector -frandom-seed=fixed-seed -fexceptions
-fvisibility=hidden -o unwind-dw2.s
GNU C (GCC) version 4.9.0 20130909 (experimental) [trunk revision 202391]
(hppa64-hp-hpux11.11)
compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.2,
MPC version 1.0
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
GNU C (GCC) version 4.9.0 20130909 (experimental) [trunk revision 202391]
(hppa64-hp-hpux11.11)
compiled by GNU C version 4.7.2, GMP version 5.0.5, MPFR version 3.1.2,
MPC version 1.0
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 1887fdfaba237bed4d949cbaeffd7a9b
In file included from ../../../gcc/libgcc/unwind-dw2.c:1698:0:
../../../gcc/libgcc/unwind.inc: In function '_Unwind_RaiseException':
../../../gcc/libgcc/unwind.inc:136:1: internal compiler error: in
trunc_int_for_mode, at explow.c:55
 }
 ^

Introduced in r202391:

2013-09-09  Richard Sandiford  rdsandif...@googlemail.com

* alias.c (addr_side_effect_eval): Use gen_int_mode with the mode
of the associated gen_rtx_* call.
* caller-save.c (init_caller_save): Likewise.
* combine.c (find_split_point, make_extraction): Likewise.
(make_compound_operation): Likewise.
* dwarf2out.c (mem_loc_descriptor): Likewise.
* explow.c (plus_constant, probe_stack_range): Likewise.
* expmed.c (expand_mult_const): Likewise.
* expr.c (emit_single_push_insn_1, do_tablejump): Likewise.
* reload1.c (init_reload): Likewise.
* valtrack.c (cleanup_auto_inc_dec): Likewise.
* var-tracking.c (adjust_mems): Likewise.
* modulo-sched.c (sms_schedule): Likewise, but use gen_rtx_GT
rather than gen_rtx_fmt_ee.


[Bug tree-optimization/58343] [4.9 Regression] ICE in dfs_enumerate_from, at cfganal.c:1036

2013-09-10 Thread law at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58343

--- Comment #4 from Jeffrey A. Law law at gcc dot gnu.org ---
Author: law
Date: Tue Sep 10 12:29:58 2013
New Revision: 202441

URL: http://gcc.gnu.org/viewcvs?rev=202441root=gccview=rev
Log:
PR tree-optimization/58343
* tree-ssa-threadupdate.c (thread_block): Identify and disable
jump threading requests through loop headers buried in the middle
of a jump threading path.

* tree-ssa-threadedge.c (thread_around_empty_blocks): Fix thinko
in return value/type.

* gcc.c-torture/compile/pr58343.c: New test.

Added:
trunk/gcc/testsuite/gcc.c-torture/compile/pr58343.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-ssa-threadedge.c
trunk/gcc/tree-ssa-threadupdate.c


[Bug tree-optimization/58343] [4.9 Regression] ICE in dfs_enumerate_from, at cfganal.c:1036

2013-09-10 Thread law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58343

Jeffrey A. Law law at redhat dot com changed:

   What|Removed |Added

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

--- Comment #5 from Jeffrey A. Law law at redhat dot com ---
Fixed on trunk.


[Bug libstdc++/58358] [4.7/4.8/4.9 Regression] search_n has a Complexity violation for random access iterator

2013-09-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58358

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

 CC||paolo.carlini at oracle dot com

--- Comment #18 from Paolo Carlini paolo.carlini at oracle dot com ---
Chris, I'm going to slightly tweak / test again locally / post to the mailing
list your patch in order to apply it. Please have a look to Comment #15, in the
meanwhile, thanks!


[Bug c++/58380] [4.9 Regression] ice in fold_comparison

2013-09-10 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58380

Marek Polacek mpolacek at gcc dot gnu.org changed:

   What|Removed |Added

 CC||law at gcc dot gnu.org

--- Comment #2 from Marek Polacek mpolacek at gcc dot gnu.org ---
Seems to have started with r202296.  I'll try to reduce it.


[Bug tree-optimization/58343] [4.9 Regression] ICE in dfs_enumerate_from, at cfganal.c:1036

2013-09-10 Thread markus at trippelsdorf dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58343

Markus Trippelsdorf markus at trippelsdorf dot de changed:

   What|Removed |Added

 CC||markus at trippelsdorf dot de

--- Comment #6 from Markus Trippelsdorf markus at trippelsdorf dot de ---
*** Bug 58373 has been marked as a duplicate of this bug. ***


[Bug tree-optimization/58373] [4.9 Regression] g++: internal compiler error: Segmentation fault (program cc1plus)

2013-09-10 Thread markus at trippelsdorf dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58373

Markus Trippelsdorf markus at trippelsdorf dot de changed:

   What|Removed |Added

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

--- Comment #4 from Markus Trippelsdorf markus at trippelsdorf dot de ---
dup of PR58373, fixed by rev202441 .

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


[Bug tree-optimization/58373] [4.9 Regression] g++: internal compiler error: Segmentation fault (program cc1plus)

2013-09-10 Thread law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58373

Jeffrey A. Law law at redhat dot com changed:

   What|Removed |Added

 CC||law at redhat dot com

--- Comment #5 from Jeffrey A. Law law at redhat dot com ---
Thanks Markus -- I was going to look at this once I figure out this IA64
mis-compilation issue.  One less thing to worry about now ;-)


[Bug rtl-optimization/58369] [4.8/4.9 regression] ICE in subreg_get_info when compiling boost for m68k-linux

2013-09-10 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58369

--- Comment #2 from Mikael Pettersson mikpe at it dot uu.se ---
Created attachment 30787
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30787action=edit
hand-reduced test case

This is as small as I can get it without losing the ICE.


[Bug rtl-optimization/58383] New: ICE when RTL folds vector operations using constants after gne_int_mode changes

2013-09-10 Thread jgreenhalgh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58383

Bug ID: 58383
   Summary: ICE when RTL folds vector operations using constants
after gne_int_mode changes
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: jgreenhalgh at gcc dot gnu.org

The patch set around [1/4] Using gen_int_mode instead of GEN_INT causes a
number of similair regressions when building for AArch64.

To pick one example, when building gcc.target/aarch64/vect-fcm-eq-d.c we can
get in to the situation where simplify_unary_expression_1 is trying to simplify
(V2DI: NOT (NEG X)) and will thus try to generate (V2DI: PLUS (X - 1)).

Now we will call plus_constant, and from there gen_int_mode (-1, v2di). From
here we call trunc_int_for_mode (-1, v2di) and trigger the assert:

   /* You want to truncate to a _what_?  */
   gcc_assert (SCALAR_INT_MODE_P (mode));

The failures eventually look like:

In file included from
../src/gcc/gcc/testsuite/gcc.target/aarch64/vect-fcm-eq-d.c:9:0:
../src/gcc/gcc/testsuite/gcc.target/aarch64/vect-fcm.x: In function 'foo':
../src/gcc/gcc/testsuite/gcc.target/aarch64/vect-fcm.x:25:1: internal compiler
error: in trunc_int_for_mode, at explow.c:55
 }
 ^
0x6abc8e trunc_int_for_mode(long, machine_mode)
/work/gcc-dev/src/gcc/gcc/explow.c:55
0x69bb28 gen_int_mode(long, machine_mode)
/work/gcc-dev/src/gcc/gcc/emit-rtl.c:420
0x6abcf2 plus_constant
/work/gcc-dev/src/gcc/gcc/explow.c:189
0x6abcf2 plus_constant
/work/gcc-dev/src/gcc/gcc/explow.c:79
0x8f107f simplify_gen_unary(rtx_code, machine_mode, rtx_def*, machine_mode)
/work/gcc-dev/src/gcc/gcc/simplify-rtx.c:369
0xc55e09 propagate_rtx_1
/work/gcc-dev/src/gcc/gcc/fwprop.c:490
0xc55e6f propagate_rtx_1
/work/gcc-dev/src/gcc/gcc/fwprop.c:497
0xc55e86 propagate_rtx_1
/work/gcc-dev/src/gcc/gcc/fwprop.c:498
0xc56409 propagate_rtx
/work/gcc-dev/src/gcc/gcc/fwprop.c:675
0xc57dff forward_propagate_and_simplify
/work/gcc-dev/src/gcc/gcc/fwprop.c:1337
0xc57dff forward_propagate_into
/work/gcc-dev/src/gcc/gcc/fwprop.c:1394
0xc58593 forward_propagate_into
/work/gcc-dev/src/gcc/gcc/fwprop.c:1359
0xc58593 fwprop
/work/gcc-dev/src/gcc/gcc/fwprop.c:1479
0xc58593 execute
/work/gcc-dev/src/gcc/gcc/fwprop.c:1515
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See http://gcc.gnu.org/bugs.html for instructions.


[Bug preprocessor/58379] default mmap based implementation (mmap_gt_pch_get_address/mmap_gt_pch_use_address) is useless

2013-09-10 Thread martin at netbsd dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58379

--- Comment #2 from Martin Husemann martin at netbsd dot org ---
(In reply to Richard Biener from comment #1)
 If you have a system that randomizes then you have to re-define the hook.

Besides ASLR there are various things out of control of the compiler that do
result in varying mapping adresses (like malloc using mmap instead of brk), so
chances are low in any modern system.

I'm not opposed to create a hook for NetBSD, but I have a hard time seeing a
possible sensible implementation. Look at the #ifdef cascade in
config/host-openbsd.c for a disgusting example of code that should not be in a
compiler (IMHO).

How hard is making the externalized format address neutral?


[Bug rtl-optimization/58383] ICE when RTL folds vector operations using constants after gne_int_mode changes

2013-09-10 Thread jgreenhalgh at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58383

jgreenhalgh at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jgreenhalgh at gcc dot gnu.org

--- Comment #1 from jgreenhalgh at gcc dot gnu.org ---
Created attachment 30788
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30788action=edit
Proposed fix

A patch along these lines works for me, covering the case where gen_int_mode is
called to generate a vector integer.


[Bug libstdc++/58358] [4.7/4.8/4.9 Regression] search_n has a Complexity violation for random access iterator

2013-09-10 Thread chris at bubblescope dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58358

--- Comment #19 from Chris Jefferson chris at bubblescope dot net ---
(In reply to Mitsuru Kariya from comment #15)
 Created attachment 30775 [details]
 Patch
 
 For your convenience, I attached a patch for this problem.
 
 This algorithm is always scanned to reverse order.
 If a scan fails in less than enough, a re-scan is performed from the point
 that advanced necessary elements from the original starting point.
 
 For example, if __count is 20 and a scan fails after 18 elements succeeded,
 a re-scan is performed from the point that advanced 2 elements.

This patch is good, but takes a different route., trying to always skip as far
forwards as possible. On a small test (compiling the 'search_n/iterator.cc'
test, disabling forward checking and bidirection tests, increasing TEST_DEPTH
to 23, compiling -O3):

Both implementations pass correctness and number of comparison tests.

Mitsuru's code is about 1K smaller.

My code is slightly faster (3.74sec vs 4.12sec)

I think I might choose Mitsuru's code, as his code is smaller in terms of both
source and binary, and the performance difference is not that big, but either
would be fine.


[Bug tree-optimization/58364] [4.8/4.9 Regression] likely wrong code bug

2013-09-10 Thread ebotcazou at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58364

Eric Botcazou ebotcazou at gcc dot gnu.org changed:

   What|Removed |Added

 CC||ebotcazou at gcc dot gnu.org

--- Comment #7 from Eric Botcazou ebotcazou at gcc dot gnu.org ---
r195642 is an equivalent fix in the folder (make_range_step).


[Bug libstdc++/58358] [4.7/4.8/4.9 Regression] search_n has a Complexity violation for random access iterator

2013-09-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58358

Paolo Carlini paolo.carlini at oracle dot com changed:

   What|Removed |Added

   Severity|minor   |normal

--- Comment #20 from Paolo Carlini paolo.carlini at oracle dot com ---
I see, thanks Chris. Don't you have the performance numbers for the baseline,
naive code, do you? To put in better perspective 3.74secs vs 4.12secs. Like,
if the baseline is 1 or 3.5 isn't the same!

In fact, I also like Mitsuru' patch, it's simplicity in particular. But again,
I would not choose it if the baseline is 3.5secs.


[Bug libstdc++/58358] [4.7/4.8/4.9 Regression] search_n has a Complexity violation for random access iterator

2013-09-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58358

--- Comment #21 from Paolo Carlini paolo.carlini at oracle dot com ---
Sorry. Take my 1sec and 3.5secs, as, say, 4.5secs and 20secs. You see may
point.


[Bug tree-optimization/58380] [4.9 Regression] ice in fold_comparison

2013-09-10 Thread law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58380

Jeffrey A. Law law at redhat dot com changed:

   What|Removed |Added

 CC||law at redhat dot com

--- Comment #3 from Jeffrey A. Law law at redhat dot com ---
Just a note, I'm currently looking at a mis-compilation due to those changes;
it may not be worth your time to try and reduce this test until I've sorted out
this other issue.


[Bug middle-end/58382] [4.9 Regression] unwind.inc:136:1: ICE: in trunc_int_for_mode, at explow.c:55

2013-09-10 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58382

Richard Biener rguenth at gcc dot gnu.org changed:

   What|Removed |Added

 CC||rsandifo at gcc dot gnu.org
   Target Milestone|--- |4.9.0


[Bug tree-optimization/58380] [4.9 Regression] ice in fold_comparison

2013-09-10 Thread mpolacek at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58380

--- Comment #4 from Marek Polacek mpolacek at gcc dot gnu.org ---
Thanks, the .ii file is huge and after an ~hour of reducing the creduce is
still at original file...


[Bug tree-optimization/58380] [4.9 Regression] ice in fold_comparison

2013-09-10 Thread markus at trippelsdorf dot de
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58380

Markus Trippelsdorf markus at trippelsdorf dot de changed:

   What|Removed |Added

 CC||markus at trippelsdorf dot de

--- Comment #5 from Markus Trippelsdorf markus at trippelsdorf dot de ---
Created attachment 30789
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30789action=edit
reduced testcase

This is what creduce came up with.


[Bug target/44107] gcc emits frame (epilogue) info incompatible with the darwin {8,9}-unwinder,10-compacter

2013-09-10 Thread howarth at nitro dot med.uc.edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44107

--- Comment #24 from Jack Howarth howarth at nitro dot med.uc.edu ---
(In reply to David Fang from comment #22)
 Do one of these apple libunwind sources (0.30, 0.35.1) correspond to what's
 bundled in libgcc_s in darwin8,9,10?
 
 http://opensource.apple.com/tarballs/libunwind/

No. The libunwind sources are the replacement compact and compatibility
unwinders that Apple introduced in 10.7. You will see that the 0.30 release
first appears at http://www.opensource.apple.com/release/mac-os-x-107/. Note
that if you look at
http://www.opensource.apple.com/source/libgcc/libgcc-13/stub.c from 10.6.8, you
will see that the unwinder calls resided in libgcc_s up to 10.5 after which
they were subsumed into libSystem. I am unclear if the subsumed unwinder calls
in 10.6.x were based on the code from libgcc but these certainly aren't based
on libunwind. Since Apple never released the source code for theses files, it
is difficult to know their heritage in 10.6.x. Also see...

http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-September/025894.html
http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-September/025898.html


[Bug tree-optimization/58380] [4.9 Regression] ice in fold_comparison

2013-09-10 Thread rguenth at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58380

--- Comment #6 from Richard Biener rguenth at gcc dot gnu.org ---
The symptom hints at a released SSA name being looked at.  That happens
if cfgcleanup looks at a dead code region (we especially run
TODO_cleanup_cfg before TODO_update_ssa to allow passes to be forgiving
with not removing dead blocks).  Eventually we guarded these foldings
but seem to have removed the guarding again.


[Bug libstdc++/58358] [4.7/4.8/4.9 Regression] search_n has a Complexity violation for random access iterator

2013-09-10 Thread chris at bubblescope dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58358

--- Comment #22 from Chris Jefferson chris at bubblescope dot net ---
Her are some comparisons. Just to compare, I also checked doing away with
skipping optimisations altogether. Binary sizes (-O3, stripped)


current head: 11928
my code:  12248
Mitsuru:  11384
No skip:  10904

Timing:

current head: 3.70
my code:  3.70
Mitsuru:  4.04
No skip: 15.37

So we clearly want to do skipping. The tradeoff is between same speed and
bigger executables (my code) or ~10% slower but saving 1K or so binary and some
source (Mitsuru's code). I don't know what gcc/libstdc++'s general direction in
that area is.

I actually would expect Mitsuru's code to be faster (as it tries harder to skip
forwards), but it is hard to predict how these things interact with
optimisers/caches/branch predictors at a low level.


[Bug tree-optimization/58380] [4.9 Regression] ice in fold_comparison

2013-09-10 Thread law at redhat dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58380

--- Comment #7 from Jeffrey A. Law law at redhat dot com ---
202296 doesn't change anything WRT sequencing of operations; it merely allows
the threader to dive a bit deeper into the CFG to determine a final target for
a jump threading opportunity.

Presumably David bootstrapped the trunk, then built k3d?  If so, then it might
be a mis-compilation of GCC itself.  As I mentioned in c#3 I'm looking at one
of those right now.

If this failure occurs in a stage1 cc1plus, then, well, that's totally
different (and much easier to track down).

Either way, it's mine.


[Bug preprocessor/58381] crash in diagnostic_report_current_module when a fatal_error happens during PCH processing on NetBSD/spa64rc

2013-09-10 Thread martin at netbsd dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58381

--- Comment #2 from Martin Husemann martin at netbsd dot org ---
Created attachment 30790
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30790action=edit
Restore line_table and input_location before calling fatal_error when failing a
pch load

With this patch, the fatal_error is properly reported:

 $BUILDDIR/stage1-gcc/xg++ -B $BUILDDIR/stage1-gcc -Werror -Winvalid-pch 
 -Wno-deprecated -c conftest.cc
conftest.cc:1:0: fatal error: had to relocate PCH
 #include conftest.h
 ^
compilation terminated.


[Bug libstdc++/54314] [4.8 Regression] undefined references to 'construction vtable for std::ostream-in-std::basic_ostringstreamchar, std::char_traitschar, std::allocatorchar '

2013-09-10 Thread pluto at agmk dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54314

--- Comment #40 from Pawel Sikora pluto at agmk dot net ---
$ grep ZTv0 *
gnu.ver:_ZTv0_n12_NS*;
gnu.ver:_ZTv0_n24_NS*;
gnu-versioned-namespace.ver:_ZTv0_n24_NS*;

versioned namespace doesn't provide *n12* for i686.


[Bug middle-end/58335] S/390: reload vs lra regression - testcase builtin-in-setjmp

2013-09-10 Thread vmakarov at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58335

Vladimir Makarov vmakarov at gcc dot gnu.org changed:

   What|Removed |Added

 CC||vmakarov at gcc dot gnu.org

--- Comment #1 from Vladimir Makarov vmakarov at gcc dot gnu.org ---
LRA does not update elimination offset on subsequent passes as insns for
previous elimination offset updates are more complicated on s390 than usual.

I guess we need a different elimination approach (without parsing already
generated offset elimination insn) independent on insns generated.  It is
necessary not only for s390 but for better LRA portability in whole.

I hope to finish this until end of the week.


gcc cc1 seg fault on large file with many function calls

2013-09-10 Thread rpalermo
I have a generated C code file that contains a very large number of function
calls, all with similar function names (ie ff1, ff2, ff3, ..., ff50). It
compiles using gcc versions 3.4.6 and 4.1.2.

But using version 4.4.7, it gets  gcc: Internal error: Segmentation
fault (program cc1)

The code file is 786Mb, so it's large, but not that large. But there are a
lot of static functions declared, and a lot of calls to these functions.

Any ideas?




--
View this message in context: 
http://gcc.1065356.n5.nabble.com/gcc-cc1-seg-fault-on-large-file-with-many-function-calls-tp967294.html
Sent from the gcc - bugs mailing list archive at Nabble.com.


[Bug preprocessor/58381] crash in diagnostic_report_current_module when a fatal_error happens during PCH processing on NetBSD/spa64rc

2013-09-10 Thread martin at netbsd dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58381

--- Comment #1 from Martin Husemann martin at netbsd dot org ---
The global pointer line_table is changed to the contents of the precompiled
header file in gt_pch_restore in this loop:

  /* Read in all the global pointers, in 6 easy loops.  */
  for (rt = gt_ggc_rtab; *rt; rt++)
for (rti = *rt; rti-base != NULL; rti++)
  for (i = 0; i  rti-nelt; i++)
if (fread ((char *)rti-base + rti-stride * i,
   sizeof (void *), 1, f) != 1)
  fatal_error (can%'t read PCH file: %m);

but not reset to the previous values when the compiler decides to not use the
pch contents (for example because the address of the mmap differs).

We probably need to save at least line_table (and maybe input_location) at the
start of this function and restore it before invoking fatal_error.


[Bug middle-end/58382] [4.9 Regression] unwind.inc:136:1: ICE: in trunc_int_for_mode, at explow.c:55

2013-09-10 Thread danglin at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58382

--- Comment #1 from John David Anglin danglin at gcc dot gnu.org ---
Breakpoint 1, trunc_int_for_mode (c=8, mode=DFmode)
at ../../gcc/gcc/explow.c:55
55gcc_assert (SCALAR_INT_MODE_P (mode));
(gdb) bt
#0  trunc_int_for_mode (c=8, mode=DFmode) at ../../gcc/gcc/explow.c:55
#1  0x406bb254 in gen_int_mode (c=8, mode=DFmode)
at ../../gcc/gcc/emit-rtl.c:420
#2  0x4110e470 in adjust_mems (loc=0x83fffd533100, old_rtx=0x0,
data=0x83fffdff14b8) at ../../gcc/gcc/var-tracking.c:1058
#3  0x40c36a20 in simplify_replace_fn_rtx (x=0x83fffd533100,
old_rtx=0x0, fn=0x402ec440, data=0x83fffdff14b8)
at ../../gcc/gcc/simplify-rtx.c:426
#4  0x4110e168 in adjust_mems (loc=0x83fffd5cc558, old_rtx=0x0,
data=0x83fffdff14b8) at ../../gcc/gcc/var-tracking.c:1035
#5  0x40c36a20 in simplify_replace_fn_rtx (x=0x83fffd5cc558,
old_rtx=0x0, fn=0x402ec440, data=0x83fffdff14b8)
at ../../gcc/gcc/simplify-rtx.c:426
#6  0x4110eb78 in adjust_mem_stores (loc=0x83fffd5cc558,
expr=0x83fffd5cc570, data=0x83fffdff14b8)
at ../../gcc/gcc/var-tracking.c:1157
#7  0x40bc7e98 in note_stores (x=0x83fffd5cc570,
fun=0x402ec450, data=0x83fffdff14b8)
at ../../gcc/gcc/rtlanal.c:1518
#8  0x4110ec64 in adjust_insn (bb=0x83fffda7eb60,
insn=0x83fffdae8798) at ../../gcc/gcc/var-tracking.c:1207
#9  0x41139de8 in vt_initialize ()
at ../../gcc/gcc/var-tracking.c:9973
---Type return to continue, or q return to quit---
#10 0x4113ad54 in variable_tracking_main_1 ()
at ../../gcc/gcc/var-tracking.c:10171
#11 0x4113b074 in variable_tracking_main ()
at ../../gcc/gcc/var-tracking.c:10224
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb) frame 8
#8  0x4110ec64 in adjust_insn (bb=0x83fffda7eb60,
insn=0x83fffdae8798) at ../../gcc/gcc/var-tracking.c:1207
1207  note_stores (PATTERN (insn), adjust_mem_stores, amd);
(gdb) p debug_rtx(insn)
(insn/f:TI 248 240 249 2 (set (mem:DF (post_inc:DF (reg:DI 1 %r1)) [0 S8 A64])
(reg:DF 49 %fr21)) ../../../gcc/libgcc/unwind.inc:83 119 {*pa.md:4025}
 (expr_list:REG_DEAD (reg:DF 49 %fr21)
(expr_list:REG_FRAME_RELATED_EXPR (set (mem:DF (plus:DI (reg/f:DI 30
%r30)
(const_int -200 [0xff38])) [0 S8 A64])
(reg:DF 49 %fr21))
(nil
$1 = void


[Bug libstdc++/58358] [4.7/4.8/4.9 Regression] search_n has a Complexity violation for random access iterator

2013-09-10 Thread paolo.carlini at oracle dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58358

--- Comment #23 from Paolo Carlini paolo.carlini at oracle dot com ---
Thanks a lot Chris. Sorry if I bother you for a few minutes more: when you say
doing away with skipping optimizations altogether, you mean, essentially,
using the algorithm we have got now for forward iterators? Which is also, if I
remember correctly, what we had earlier for random access iterators too? 

In that case, I'm really unsure: I'm tempted by what Mitsuru is proposing, but
I'm not 100% sure, not because of the 10% difference, but more importantly
because we know well what we have got, nobody complained for so many years, and
your change would be only a small tweak of it. Also, I know you are around to
maintain it, which isn't a minor detail! In case, would you be willing to
maintain Mitsuru's code too? Eventually, I think I will send both patches to
the mailing list with my personal opinion, and I will ask.


[Bug rtl-optimization/58384] New: [4.9 regression] Runfail on spec2000/253.perlbmk if lto and pre-reload scheduler is used on x86 after r200133.

2013-09-10 Thread ysrumyan at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58384

Bug ID: 58384
   Summary: [4.9 regression] Runfail on spec2000/253.perlbmk if
lto and pre-reload scheduler is used on x86 after
r200133.
   Product: gcc
   Version: 4.9.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: ysrumyan at gmail dot com

We also assume that arm can have the same problem at given benchmark if -flto
is used to compile since pre-reload scheduler is used by default on it.

The issue can be reproduced at attached test-case extracted from 253.perlbmk
sources (function Perl_pp_entersub, file pp_hot.c).

Before r200133 forward propagation (fwprop1 for rtl) performs substitution of
stored value to subsequent load with the same base, but after this fix does
not.
Looking at assembly files for test-case we can see that
  -- before fix --

callrealloc
movq(%rbx), %r8
movq%rax, %r9
movq%rax, %rcx
movq8(%rsp), %rdx
movq%rax, 24(%r8)
movq%rax, (%r8)
jmp.L4
 i.e. return value of 'realloc' is copied to %r9 and %rcx which correspondent
to pre temporaries.

  -- after fix -- (without pre-reload scheduler)

callrealloc
movq(%rbx), %rcx
movq(%rbx), %r8
movq8(%rsp), %rdx
movq%rax, 24(%rcx)
movq%rax, (%rcx)
movq(%r8), %rcx  --- redundant load
movq%rcx, %rax
jmp.L4

i.w. we can see redundant load from %r8.

But if we turn on pre-reload scheduler, this load will be unlegal hoisted cross
interleaved store (we got RT error on 253.perlbmk) and we can see it in
assembly:

callrealloc
movq(%rbx), %r8
movq8(%rsp), %rdx
movq(%r8), %rcx  --- non-legal code motion
movq%rax, 24(%r8)
movq%rax, (%r8)
movq%rcx, %rax
jmp.L4
To reproduce compile attached test-case with options
-Ofast -march=corei7 -fschedule-insns --param sched-pressure-algorithm=1
-fsched-pressure


[Bug target/58361] Wrong floating point code generated for ARM target

2013-09-10 Thread rearnsha at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58361

--- Comment #2 from Richard Earnshaw rearnsha at gcc dot gnu.org ---
Author: rearnsha
Date: Tue Sep 10 16:46:55 2013
New Revision: 202475

URL: http://gcc.gnu.org/viewcvs?rev=202475root=gccview=rev
Log:
PR target/58361
* arm/vfp.md (combine_vcvt_f32_FCVTI32typename): Fix pattern to
support conditional execution.
(combine_vcvt_f64_FCVTI32typename): Likewise.

Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/arm/vfp.md


[Bug rtl-optimization/58384] [4.9 regression] Runfail on spec2000/253.perlbmk if lto and pre-reload scheduler is used on x86 after r200133.

2013-09-10 Thread ysrumyan at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58384

--- Comment #1 from Yuri Rumyantsev ysrumyan at gmail dot com ---
Created attachment 30791
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30791action=edit
test-case to reproduce

This is compile only test which must be compiled with pre-reload scheduler,
i.e.
with '-Ofast -march=corei7 -fschedule-insns --param sched-pressure-algorithm=1
-fsched-pressure' options.


[Bug c++/58377] spurious may be used uninitialized warning with -Og

2013-09-10 Thread davidxl at google dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58377

davidxl at google dot com changed:

   What|Removed |Added

 CC||davidxl at google dot com

--- Comment #6 from davidxl at google dot com ---
There are some spurious PHIs (for out) with -g.

Bad dot file (-g):

digraph t.cc.153t.uninit2 {
overlap=false;
subgraph int my_pop() {
color=black;
label=int my_pop();
fn_0_basic_block_1
[shape=Mdiamond,style=filled,fillcolor=white,label=EXIT];

fn_0_basic_block_2 [shape=record,style=filled,fillcolor=lightgrey,label={
FREQ:880 |\bb\ 2\:\l\
goto\ \bb\ 7\;\l\
}];

fn_0_basic_block_7 [shape=record,style=filled,fillcolor=lightgrey,label={
FREQ:1 |\bb\ 7\:\l\
|#\ out_2\ =\ PHI\ \out_8(D)(2),\ out_1(6)\\l\
|pop_first_bucket.2_10\ =\ pop_first_bucket;\l\
|if\ (pop_first_bucket.2_10\ !=\ 0)\l\
\ \ goto\ \bb\ 3\;\l\
else\l\
\ \ goto\ \bb\ 8\;\l\
}];

fn_0_basic_block_3 [shape=record,style=filled,fillcolor=lightgrey,label={
FREQ:9550 |\bb\ 3\:\l\
|if\ (pop_first_bucket.2_10\ !=\ 0)\l\
\ \ goto\ \bb\ 4\;\l\
else\l\
\ \ goto\ \bb\ 6\;\l\
}];

fn_0_basic_block_4 [shape=record,style=filled,fillcolor=lightgrey,label={
FREQ:2769 |\bb\ 4\:\l\
|out_12\ =\ pop\ ();\l\
|if\ (out_12\ !=\ 0)\l\
\ \ goto\ \bb\ 6\;\l\
else\l\
\ \ goto\ \bb\ 5\;\l\
}];

fn_0_basic_block_5 [shape=record,style=filled,fillcolor=lightgrey,label={
FREQ:2520 |\bb\ 5\:\l\
}];

fn_0_basic_block_6 [shape=record,style=filled,fillcolor=lightgrey,label={
FREQ:9550 |\bb\ 6\:\l\
|#\ out_1\ =\ PHI\ \out_12(4),\ out_12(5),\ out_2(3)\\l\
|#\ iftmp.1_3\ =\ PHI\ \1(4),\ 0(5),\ 0(3)\\l\
|if\ (iftmp.1_3\ !=\ 0)\l\
\ \ goto\ \bb\ 8\;\l\
else\l\
\ \ goto\ \bb\ 7\;\l\
}];

fn_0_basic_block_8 [shape=record,style=filled,fillcolor=lightgrey,label={
FREQ:880 |\bb\ 8\:\l\
|#\ _4\ =\ PHI\ \out_1(6),\ 0(7)\\l\
|return\ _4;\l\
}];

fn_0_basic_block_0
[shape=Mdiamond,style=filled,fillcolor=white,label=ENTRY];

fn_0_basic_block_0:s - fn_0_basic_block_2:n
[style=solid,bold,color=blue,weight=100,constraint=true, label=[100%]];
fn_0_basic_block_2:s - fn_0_basic_block_7:n
[style=solid,bold,color=blue,weight=100,constraint=true, label=[100%]];
fn_0_basic_block_3:s - fn_0_basic_block_4:n
[style=solid,bold,color=black,weight=10,constraint=true, label=[29%]];
fn_0_basic_block_3:s - fn_0_basic_block_6:n
[style=solid,bold,color=black,weight=10,constraint=true, label=[71%]];
fn_0_basic_block_4:s - fn_0_basic_block_6:n
[style=solid,bold,color=black,weight=10,constraint=true, label=[9%]];
fn_0_basic_block_4:s - fn_0_basic_block_5:n
[style=solid,bold,color=black,weight=10,constraint=true, label=[91%]];
fn_0_basic_block_5:s - fn_0_basic_block_6:n
[style=solid,bold,color=blue,weight=100,constraint=true, label=[100%]];
fn_0_basic_block_6:s - fn_0_basic_block_8:n
[style=solid,bold,color=black,weight=10,constraint=true, label=[4%]];
fn_0_basic_block_6:s - fn_0_basic_block_7:n
[style=dotted,bold,color=blue,weight=10,constraint=false, label=[95%]];
fn_0_basic_block_7:s - fn_0_basic_block_3:n
[style=solid,bold,color=black,weight=10,constraint=true, label=[95%]];
fn_0_basic_block_7:s - fn_0_basic_block_8:n
[style=solid,bold,color=black,weight=10,constraint=true, label=[4%]];
fn_0_basic_block_8:s - fn_0_basic_block_1:n
[style=solid,bold,color=black,weight=10,constraint=true, label=[100%]];
fn_0_basic_block_0:s - fn_0_basic_block_1:n
[style=invis,constraint=true];
}
}


GCC reports unguarded use of out at return statement. return value is defined
by

 _4 = PHI (out_1(6), 0(7))

where

out_1 = PHI (out_12 (4), out_12 (5), out_2 (3))

where

out_2 = PHI (out_8(D)(2), out_1 (6))

This phi introduces uninitialized variable use.


To compare, the good dot file is :

digraph t.cc.133t.uninit1 {
overlap=false;
subgraph int my_pop() {
color=black;
label=int my_pop();
subgraph cluster_0_1 {
style=filled;
color=darkgreen;
fillcolor=grey88;
label=loop 1;
labeljust=l;
penwidth=2;
fn_0_basic_block_5 [shape=record,style=filled,fillcolor=lightgrey,label={
FREQ:1 |\bb\ 5\:\l\
|pop_first_bucket.2_10\ =\ pop_first_bucket;\l\
|if\ (pop_first_bucket.2_10\ !=\ 0)\l\
\ \ goto\ \bb\ 3\;\l\
else\l\
\ \ goto\ \bb\ 6\;\l\
}];

fn_0_basic_block_3 [shape=record,style=filled,fillcolor=lightgrey,label={
FREQ:2769 |\bb\ 3\:\l\
|out_12\ =\ pop\ ();\l\
|if\ (out_12\ !=\ 0)\l\
\ \ goto\ \bb\ 6\;\l\
else\l\
\ \ goto\ \bb\ 4\;\l\
}];

fn_0_basic_block_4 [shape=record,style=filled,fillcolor=lightgrey,label={
FREQ:2520 |\bb\ 4\:\l\
}];

}
fn_0_basic_block_0
[shape=Mdiamond,style=filled,fillcolor=white,label=ENTRY];

fn_0_basic_block_1
[shape=Mdiamond,style=filled,fillcolor=white,label=EXIT];

fn_0_basic_block_2 [shape=record,style=filled,fillcolor=lightgrey,label={
FREQ:880 |\bb\ 2\:\l\
goto\ \bb\ 5\;\l\
}];

fn_0_basic_block_6 

[Bug target/58361] Wrong floating point code generated for ARM target

2013-09-10 Thread rearnsha at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58361

--- Comment #4 from Richard Earnshaw rearnsha at gcc dot gnu.org ---
Author: rearnsha
Date: Tue Sep 10 16:55:44 2013
New Revision: 202477

URL: http://gcc.gnu.org/viewcvs?rev=202477root=gccview=rev
Log:
PR target/58361
* arm/vfp.md (combine_vcvt_f32_FCVTI32typename): Fix pattern to
support conditional execution.
(combine_vcvt_f64_FCVTI32typename): Likewise.

Modified:
branches/gcc-4_7-branch/gcc/ChangeLog
branches/gcc-4_7-branch/gcc/config/arm/vfp.md


[Bug rtl-optimization/58369] [4.8/4.9 regression] ICE in subreg_get_info when compiling boost for m68k-linux

2013-09-10 Thread mikpe at it dot uu.se
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58369

--- Comment #3 from Mikael Pettersson mikpe at it dot uu.se ---
The ICE occurs because reload is asking for a DFmode (8-byte) subreg of an
XFmode (12-byte) hardreg, but 12 % 8 != 0 so the gcc_assert fails.


[Bug tree-optimization/58380] [4.9 Regression] ice in fold_comparison

2013-09-10 Thread dcb314 at hotmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58380

--- Comment #9 from David Binderman dcb314 at hotmail dot com ---
(In reply to Jeffrey A. Law from comment #7)
 Presumably David bootstrapped the trunk, then built k3d?  

Yes, the bootstrap ran fine with the usual -g -O2 on BOOT_CFLAGS.

 If this failure occurs in a stage1 cc1plus, then, well, that's totally
 different (and much easier to track down).

Yes, exactly the same Segmentation fault does occur in a stage1 cc1plus.

Command line was

$ ../results/bin/gcc -c -O2 -B/home/dcb/gcc/working/stage1-gcc/ -v bug118.cc
...
 /home/dcb/gcc/working/stage1-gcc/cc1plus -quiet ...


[Bug target/58375] internal compiler error: in push_reload, at reload.c:1360

2013-09-10 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58375

--- Comment #3 from Georg-Johann Lay gjl at gcc dot gnu.org ---
Created attachment 30792
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30792action=edit
Channel.cpp C++ source

Confirmed with this source, looks like a register allocator issue.

$ avr-g++ Channel.cpp -mmcu=atmega2561 -Os  -c -v

Target: avr
Configured with: ../../gcc.gnu.org/trunk/configure --target=avr
--prefix=/local/gnu/install/gcc-4.8-mingw32 --host=i386-mingw32
--build=i686-linux-gnu --enable-languages=c,c++ --disable-nls --disable-shared
--with-dwarf2
Thread model: single
gcc version 4.8.0 20130306 (experimental) (GCC) 

GNU C++ (GCC) version 4.8.0 20130306 (experimental) (avr)
compiled by GNU C version 3.4.5 (mingw-vista special r2), GMP version
4.3.2, MPFR version 2.4.2, MPC version 0.8.2

Channel.cpp: In member function 'virtual void Screen_Setup_Channel::display()':
Channel.cpp:101:1: internal compiler error: in push_reload, at reload.c:1360
 }
 ^

Channel.cpp:101:1: internal compiler error: Segmentation fault


[Bug target/54412] Request for 32-byte stack alignment with -mavx on Windows

2013-09-10 Thread rcopley at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412

--- Comment #2 from R Copley rcopley at gmail dot com ---
Created attachment 30793
  -- http://gcc.gnu.org/bugzilla/attachment.cgi?id=30793action=edit
As before, but with explicitly 32-byte aligned variables


[Bug other/58375] [4.8 Regression] internal compiler error: in push_reload, at reload.c:1360

2013-09-10 Thread gjl at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58375

Georg-Johann Lay gjl at gcc dot gnu.org changed:

   What|Removed |Added

   Keywords||ra
 Status|WAITING |NEW
  Component|target  |other
  Known to work||4.7.2
   Host|MacOS 10.8 (Darwin  |
   |linus.fritz.box 12.4.0  |
   |Darwin Kernel Version   |
   |12.4.0: Wed May  1 17:57:12 |
   |PDT 2013;   |
   |root:xnu-2050.24.15~1/RELEA |
   |SE_X86_64 x86_64)   |
 Blocks||56183
Summary|internal compiler error: in |[4.8 Regression] internal
   |push_reload, at |compiler error: in
   |reload.c:1360   |push_reload, at
   ||reload.c:1360


  1   2   >