[LLVMdev] lld deadstrip atoms

Shankar Easwaran shankare at codeaurora.org
Fri Nov 9 07:31:16 PST 2012

Hi Nick,

Dead stripping optimization needs a way to setup the roots which are 
live. The current code in Resolver does it by

1) setting all the global defined atoms to be the live set when building 
shared libraries (_options.allGlobalsAreDeadStripRoots)
2)  Or, uses a list of names that are dead strip roots (other types)

How are the dead strip root names supposed to be set ? Does each Reader 
need to set specific information on what are the dead strip roots ?

There is a flag in the DefinedAtom to determine whether to deadstrip an 

deadStripNormal, deadStripAlways, deadStripNever

Question :-
a) What is the difference between deadStripNormal/deadStripAlways ?

b) Further looking, there is a compiler attribute __attribute(used)__ 
which could be set for each symbol, but this is only a compiler hint. 
The information is not passed
in the symbol table. If this is not passed in the symbol table to the 
linker, why is it in the DefinedAtom ?


Shankar Easwaran

Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by the Linux Foundation

More information about the llvm-dev mailing list