With "g++ -O2" the following code produces
(0,0)
Segmentation fault
on Itanium only.

I apologise for leaving the includes in, but these are standard and long 
includes, so I thought it should 
be okay.  I am unfortunately unable to test with more recent versions.  The 
original project was 10000, 
and removing nearly any line in this bare-bones version makes the bug go away 
(the original project 
isn't that lucky).



Compiler information:
$ g++ -v -save-temps -O2 Lcommandline.cc 
Reading specs from /usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/specs
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man 
--infodir=/usr/share/info --
enable-shared --enable-threads=posix --disable-checking --with-system-zlib 
--enable-__cxa_atexit 
--host=ia64-redhat-linux
Thread model: posix
gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-42)
 /usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/cpp0 -lang-c++ -D__GNUG__=3 
-D__DEPRECATED 
-D__EXCEPTIONS -v -D__GNUC__=3 -D__GNUC_MINOR__=2 -D__GNUC_PATCHLEVEL__=3 
-D__GXX_ABI_VERSION=102 -D__gnu_linux__ -D__linux -D__linux__ -D_LONGLONG 
-Dlinux -Dunix 
-D__gnu_linux__ -D__linux -D__linux__ -D_LONGLONG -D__linux__ -D__unix__ 
-D__linux -D__unix 
-Asystem=linux -D__OPTIMIZE__ -D__STDC_HOSTED__=1 -D_GNU_SOURCE -Acpu=ia64 
-Amachine=ia64 -D__ia64 -D__ia64__ -D_LP64 -D__LP64__ -D__ELF__ 
-D__LONG_MAX__=9223372036854775807L Lcommandline.cc Lcommandline.ii
GNU CPP version 3.2.3 20030502 (Red Hat Linux 3.2.3-42) (cpplib) (IA-64) Linux
ignoring nonexistent directory "/usr/ia64-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/3.2.3
 /usr/include/c++/3.2.3/ia64-redhat-linux
 /usr/include/c++/3.2.3/backward
 /usr/local/include
 /usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/cc1plus -fpreprocessed 
Lcommandline.ii -quiet -dumpbase 
Lcommandline.cc -O2 -version -o Lcommandline.s
GNU CPP version 3.2.3 20030502 (Red Hat Linux 3.2.3-42) (cpplib) (IA-64) Linux
GNU C++ version 3.2.3 20030502 (Red Hat Linux 3.2.3-42) (ia64-redhat-linux)
        compiled by GNU C version 3.2.3 20030502 (Red Hat Linux 3.2.3-42).
 as -x -o Lcommandline.o Lcommandline.s
 /usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/collect2 -dynamic-linker 
/lib/ld-linux-ia64.so.2 /usr/lib/
gcc-lib/ia64-redhat-linux/3.2.3/../../../crt1.o 
/usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/../../../crti.o /
usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/crtbegin.o 
-L/usr/lib/gcc-lib/ia64-redhat-linux/3.2.3 -L/
usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/../../.. Lcommandline.o -lstdc++ -lm 
-lgcc_s -lgcc -lc -lgcc_s 
-lgcc /usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/crtend.o 
/usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/../
../../crtn.o







#include <complex>
#include <iostream>
using namespace std;

struct LL
{
    complex<double> lambda[2];
    double gamma[2];
};

complex<double> func(complex<double> s, int what_type, int N, double g, 
complex<double> l, 
double Q, int Period, complex<double> delta, char *method) {
        cerr << s << endl;
        cerr << what_type << endl;
        cerr << N << endl;
        cerr << g << endl;
        cerr << l << endl;
        cerr << Q << endl;
        cerr << Period << endl;
        cerr << delta << endl;
        cerr << method << endl;
        return 0.;
}

int main () {
        LL int_L;
        cout << int_L.lambda[1] << endl;
        func(complex<double>(0.5,100.), 0, 0, int_L.gamma[1], int_L.lambda[1], 
0, 0, 0.,"");
return 0;
}

-- 
           Summary: Simple code segfaults on itanium
           Product: gcc
           Version: 3.2.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rfurmani at uwaterloo dot ca
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: ia64-redhat-linux
  GCC host triplet: ia64-redhat-linux
GCC target triplet: ia64-redhat-linux


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

Reply via email to