When compiled with GCC 3.4.3, at -O2, the ident string above will _not_ appear in the executable. This is apparently expected behavior.
See the docs for __attribute__ ((used)). Contrary to the docs, it works for more than functions.
However, interestingly, gcc -fkeep-static-consts -O2 t.c did not retain the ident string, rcsid, defined above. Shouldn't -fkepp-static-consts have ensured that this static constant would appear in the executable?
Try re-reading the docs. -fkeep-static-consts is the default. The purpose of this is that we don't perform this optimization at -O0 normally, but if you use -fno-keep-static-consts, then we do. So this option can let you remove static consts in extra cases, but will never prevent the compiler from removing them.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com