http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51900
Bug #: 51900
Summary: [4.6 Regression] const variable initialization always
zero
Classification: Unclassified
Product: gcc
Version: 4.6.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: [email protected]
ReportedBy: [email protected]
Host: mingw32
Target: mingw32
Build: mingw32
/* a.c */
#include "a.h"
const int myVar[3] = { 5, 6, 7 };
/* a.h */
#ifndef a_h
#define a_h
const int myVar[3];
#endif
/* main.c */
#include <stdio.h>
#include "a.h"
void main() {
int i;
for (i = 0; i < 3; i++) printf("myVar[%i] = %i\n", i, myVar[i]);
fflush(stdout);
}
Result gcc 4.5.2:
myVar[0] = 5
myVar[1] = 6
myVar[2] = 7
Result gcc 4.6.2:
myVar[0] = 0
myVar[1] = 0
myVar[2] = 0
Configurations:
Using built-in specs.
COLLECT_GCC=D:\Programme\msys\mingw452\bin\gcc.exe
COLLECT_LTO_WRAPPER=d:/programme/msys/mingw452/bin/../libexec/gcc/mingw32/4.5.2/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.5.2/configure
--enable-languages=c,ada,c++,fortran,java,objc,obj-c++
--disable-sjlj-exceptions --disable-nls --disable-shared --enable-static
--enable-libgcj --enable-libgomp --enable-lto --with-dwarf2
--disable-win32-registry --enable-version-specific-runtime-libs --prefix=/mingw
--program-suffix= --build=mingw32 --enable-abi=32 --enable-checking=release
Thread model: win32
gcc version 4.5.2 (GCC)
Using built-in specs.
COLLECT_GCC=D:\Programme\msys\mingw462\bin\gcc.exe
COLLECT_LTO_WRAPPER=d:/programme/msys/mingw462/bin/../libexec/gcc/mingw32/4.6.2/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.6.2/configure
--enable-languages=c,ada,c++,fortran,objc,obj-c++ --disable-sjlj-exceptions
--disable-nls --disable-shared --enable-static --enable-libgcj --enable-libgomp
--enable-lto --with-dwarf2 --disable-win32-registry
--enable-version-specific-runtime-libs --build=mingw32 --enable-abi=32
--enable-checking=release --prefix=/mingw
Thread model: win32
gcc version 4.6.2 (GCC)
Compiled with:
CC = gcc
CFLAGS = -static -O2
LDFLAGS = -static
all: main.exe
.PHONY: clean
clean:
rm -f *.o
rm -f *.exe
main.exe: main.o a.o
$(CC) $(LDFLAGS) -o main.exe main.o a.o
main.o: main.c
$(CC) $(CFLAGS) -o main.o -c main.c
a.o: a.c
$(CC) $(CFLAGS) -o a.o -c a.c