Hello,
I'm compiling for arm with and without optimization and get different sections for the initialized static variable myvar. Unexpected section (wrong): clang -std=c99 --target=thumbv7em-unknown-none-eabihf -g3 -O1 -gdwarf-2 -gstrict-dwarf -fdebug-macro -c main.c llvm-objdump.exe .\main.o -t - shows that the static initialized variable myvar is in section .bss instead of section .data.myvar as expected: - 00000004 l O .bss 00000001 myvar Correct (expected) section without optimization (level 0): clang -std=c99 --target=thumbv7em-unknown-none-eabihf -g3 -O0 -gdwarf-2 -gstrict-dwarf -fdebug-macro -c main.c llvm-objdump.exe .\main.o -t - shows that the static initialized variable myvar is in section .data.myvar instead of section .data as expected: - 00000000 l O .data_myvar 00000004 myvar My example code: Main.c typedef enum { myinit = 0x1, myidle = 0x2, mybusy = 0x3 } myenumvar; int startcond; // -> .bss # pragma clang section data=".data_myvar" static myenumvar myvar = myinit; # pragma clang section data="" int main(void) { startcond = 1; if(1 == startcond) { if(myinit == myvar) { myvar = mybusy; } startcond = 0; } while(1); return 0; } I wonder if this is a bug or am I missing some other option flags? Best regards, Helmut
_______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users