This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Optimizer bug in gcc-2.95.2 C++
- To: gcc-bugs at gcc dot gnu dot org
- Subject: Optimizer bug in gcc-2.95.2 C++
- From: springl at bfw-online dot de
- Date: Fri, 3 Mar 2000 11:44:20 +0100 (MEZ)
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello,
in the program attached below, the static array f is initialized at
runtime, probably because the initializer t[0] cannot be resolved as
constant. With optimisation, e. g. -O1, the array will be initialized with
wrong values. Without optiomisation, the initailisation is correct.
gcc -v -O1 t.cc gives:
Reading specs from /usr/lib/gcc-lib/i686-pc-linux-gnulibc1/2.95.2/specs
gcc version 2.95.2 19991024 (release)
/usr/lib/gcc-lib/i686-pc-linux-gnulibc1/2.95.2/cpp -lang-c++ -v -D__GNUC__=2 -D__GNUG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -D__EXCEPTIONS -D__OPTIMIZE__ -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -Di686 -Dpentiumpro -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ t.cc /tmp/ccrqSaYK.ii
GNU CPP version 2.95.2 19991024 (release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc-lib/i686-pc-linux-gnulibc1/2.95.2/../../../../include/g++-3
/usr/local/include
/usr/lib/gcc-lib/i686-pc-linux-gnulibc1/2.95.2/../../../../i686-pc-linux-gnulibc1/include
/usr/lib/gcc-lib/i686-pc-linux-gnulibc1/2.95.2/include
/usr/include
End of search list.
The following default directories have been omitted from the search path:
End of omitted list.
/usr/lib/gcc-lib/i686-pc-linux-gnulibc1/2.95.2/cc1plus /tmp/ccrqSaYK.ii -quiet -dumpbase t.cc -O2 -version -o /tmp/cc4T7tJl.s
GNU C++ version 2.95.2 19991024 (release) (i686-pc-linux-gnulibc1) compiled by GNU C version 2.95.2 19991024 (release).
/usr/i686-pc-linux-gnulibc1/bin/as -V -Qy -o /tmp/ccdGExwZ.o /tmp/cc4T7tJl.s
GNU assembler version 2.9.5 (i686-pc-linux-gnulibc1) using BFD version 2.9.5.0.16
/usr/lib/gcc-lib/i686-pc-linux-gnulibc1/2.95.2/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.1 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc-lib/i686-pc-linux-gnulibc1/2.95.2/crtbegin.o -L/usr/lib/gcc-lib/i686-pc-linux-gnulibc1/2.95.2 -L/usr/i686-pc-linux-gnulibc1/lib /tmp/ccdGExwZ.o -lgcc -lc -lgcc /usr/lib/gcc-lib/i686-pc-linux-gnulibc1/2.95.2/crtend.o /usr/lib/crtn.o
Stephan
=======================================================
extern "C" void abort();
struct s
{ int zeile: 8;
int spalte: 16;
const char *name;
};
int
main (void)
{ static const char *const t[] = {"a"};
static const s f[] =
{{2, 12, t[0]},
{2, 18, "c"}
};
if (f[0].zeile != 2) abort ();
return 0;
}
=========================================================
- --
Stephan Springl BFW Werner Völk GmbH
springl@bfw-online.de Büro für Wärmemeßgeräte
+49 89 82917-452 Bäckerstr. 56
81241 München
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.1 (GNU/Linux)
Comment: For info see http://www.gnupg.org
iD8DBQE4v5eGu04e43Fv6SMRAjx1AKCjNWEPzJVByIwUO2W8+GO+QXNxfQCbBJWB
+/yImIf8VPxlgi9eVoxcVus=
=QrUd
-----END PGP SIGNATURE-----