Hi,
This seems to be a bug in the default O0 optimization level. With O1 , -O2 and O3 it works fine. I have seen it many times that it generates perfect code with O1 , -O2 and O3 but if I change to O0 things dont work. The following is the issue. The following function func( ) is being called from another file main.c // file main.c #include test.h // static variable declarations. main( ) { .//variable declarations . . func(); func1(); } //file test.c int func( ) { int var1 = MAX_BIN_SIZE; int var2 = MAX_BIN_SIZE; . . . . } In the file test.c the above is declared. MAX_BIN_SIZE is defined to 256 in the header file test.h The value of var2 , even after the assignment to MAX_BIN_SIZE, still prints 0. But the var1 is properly defined i.e 256. The above function func( ) in test.c , I am making a static library (.a ) and linking with my main to get the executable. There are other static libraries also which I am linking with this main. If I change the optimizer level to O1 or O2 or O3, everything seems to be fine. It only happens with O0. Thanks Soumendu -- Summary: Is this a bug in gcc 2.95.3 ( m/c SunOS 5.7 sun4u sparc SUNW,Ultra-80 ) Product: gcc Version: 2.95.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: soumendus at rediffmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38630