[coldfire-gnu-discuss] The option -fkeep-static-consts

Mark Mitchell mark at codesourcery.com
Thu Jan 4 20:19:50 UTC 2007


DMS Tech, John wrote:
> I am using the G++ 4.1-32 version. I have some static constants in my
> code and whenever I use a optimization option (-O1, ..) these static
> constants disappear from my compiled output file.

The compiler is behaving as expected:

`-fkeep-static-consts'
     Emit variables declared `static const' when optimization isn't
     turned on, even if the variables aren't referenced.

When optimization is on, the compiler always removes unreferenced static
constants.  Older versions of the compiler may not have been smart
enough to do so.

The option is actually intended to be used in the negative:

  m68k-elf-gcc -g -fno-keep-static-consts a.c

compiles a.c without optimization, but throws away unreferenced static
constants.  Without the option, they would be kept.

To keep the static ocnstants at all optimization levels, use the "used'
attribute:

  static const int i __attribute__((used)) = 7;

-- 
Mark Mitchell
CodeSourcery
mark at codesourcery.com
(650) 331-3385 x713



More information about the coldfire-gnu-discuss mailing list