Option -fkeep-static-consts vs. -fno-keep-static-consts

Guillaume Autran gautran@uoguelph.ca
Tue Jan 18 15:53:00 GMT 2005


Hi,

What does the "-fkeep-static-consts" and "-fno-keep-static-consts" 
switch for GCC 3.4.3 do ?


If I write something like:

--------------------------------- x.c ------------------------------------
static const int blah=27;
static const int yunk=93;

int foo(int num)
{
    return blah*num;
}

int bar(int num)
{
    return blah+num+foo(blah+num);
}
--------------------------------- x.c ------------------------------------

and compile it with:
    $> gcc -O2 -fkeep-static-consts -c x.c
    $> nm x.o
    00000010 T bar
    00000000 T foo

Then, GCC removes my static constants and optimizes them.
If I compile like this:
    $> gcc -c x.c
    $> nm x.o
    0000000e T bar
    00000000 r blah
    00000000 T foo
    00000004 r yunk

Then my static constansts are in the output file.
And finally, using the following compilation line:
    $> gcc -fno-keep-static-consts -c x.c
    $> nm x.o
    0000000e T bar
    00000000 r blah
    00000000 T foo
    00000004 r yunk

Give the same reasult than just before.

So, can anyone tell me what that "-fno-keep-static-consts" and 
"-fkeep-static-consts" GCC flag do ???

Best regards,
Guillaume.


ps: Using GCC 3.2.2, those static constants are always kept in the 
output file regardless of optimizations/-fno-keep-static-consts

-- 
=======================================
Guillaume Autran
IMAGO Laboratory - Department of Computing and Information Science
University of Guelph
Tel: (519)824-4120 x56645
E-mail: gautran@uoguelph.ca
Home page: http://draco.cis.uoguelph.ca/~gautran
======================================= 




More information about the Gcc-help mailing list