[Bug target/55339] C++ code compiled with -O2 on Linux ppc hangs in runtime

2012-11-16 Thread anton.katilin at gmail dot com


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



--- Comment #4 from anton.katilin at gmail dot com 2012-11-16 17:44:16 UTC ---

 Why did you do that?



We copied the configuration of gcc 4.1.2 available on the system (Yellow Dog

Linux) out of the box. It had been configured with

--disable-libunwind-exceptions



By the way, the problem is not reproducible with that gcc 4.1.2.


[Bug c++/55339] New: Generated code hangs with -O2 on Linux ppc

2012-11-15 Thread anton.katilin at gmail dot com


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



 Bug #: 55339

   Summary: Generated code hangs with -O2 on Linux ppc

Classification: Unclassified

   Product: gcc

   Version: 4.7.2

Status: UNCONFIRMED

  Severity: critical

  Priority: P3

 Component: c++

AssignedTo: unassig...@gcc.gnu.org

ReportedBy: anton.kati...@gmail.com





Please find attached a test program and _compile.sh to compile it.



_compile.sh produces 2 output files: test-O2.bin and test-O1.bin, compiled with

-O2 and -O1 respectively.



test-O1.bin works just fine:



$ ./test-O1.bin

entering...

exception caught, as expected

OK

$



test-O1.bin hangs:



$ ./test-O2.bin



entering...

hangs forever at this point...



$ g++ -v

Using built-in specs.

COLLECT_GCC=g++

COLLECT_LTO_WRAPPER=/opt/gcc-4.7.2/libexec/gcc/powerpc64-unknown-linux-gnu/4.7.2/lto-wrapper

Target: powerpc64-unknown-linux-gnu

Configured with: ../gcc-4.7.2/configure --prefix=/opt/gcc-4.7.2

--enable-threads=posix --disable-libunwind-exceptions --with-system-zlib

--enable-__cxa_atexit --enable-languages=c,c++ --enable-multilib

Thread model: posix

gcc version 4.7.2 (GCC)



$ uname -a

Linux localhost.localdomain 2.6.29-3.ydl61.3 #1 SMP Thu Jun 25 12:22:41 EDT

2009 ppc64 ppc64 ppc64 GNU/Linux


[Bug c++/55339] Generated code hangs with -O2 on Linux ppc

2012-11-15 Thread anton.katilin at gmail dot com


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



--- Comment #1 from anton.katilin at gmail dot com 2012-11-15 11:28:32 UTC ---

Compile with:

-



export PATH=/opt/gcc-4.7.2/bin:$PATH



g++ -m32 -fPIC -O2 *.cpp -o test-O2.bin

g++ -m32 -fPIC -O1 *.cpp -o test-O1.bin







Please find the source code of the test below.



-

Test.cpp

-



#include stdio.h



#include Foo.h



int main() {

  try {

printf(entering...\n);

fflush(stdout);



YS(-1); // will throw exception



printf(must never reach\n);

  }

  catch (int) {

printf(exception caught, as expected\n);

  }



  printf(OK\n);



  return 0;

}





-

Foo.h

-



#pragma once



void foo();



void checkPositive(int);



class YS {

public:

  YS(int capacity) {

checkPositive(capacity);

  }



  ~YS() {

foo();

  }

};



void throwException(const YS);





-

Foo.cpp

-



#include Foo.h



void foo() {

}



void checkPositive(int v) {

  if (v = 0) {

throwException(10);

  }

}



void throwException(const YS) {

  throw int(1);

}


[Bug c++/55339] C++ code compiled with -O2 on Linux ppc hangs in runtime

2012-11-15 Thread anton.katilin at gmail dot com


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



--- Comment #2 from anton.katilin at gmail dot com 2012-11-15 14:35:12 UTC ---

An update:



There is no problem when linking statically, i.e. if we do



g++ -m32 -fPIC -O2 *.cpp -static-libstdc++ -static-libgcc -o test-O2.bin



instead of



g++ -m32 -fPIC -O2 *.cpp -o test-O2.bin