[llvm-dev] Removing pointers from MCInstrDesc for less relocations
Nicolai Hähnle via llvm-dev
llvm-dev at lists.llvm.org
Sun May 8 20:35:13 PDT 2016
I noticed today that my libLLVM-3.9svn.so has a ~1.7MB .data.rel.ro
segment - i.e. data that needs to be touched by the dynamic linker even
though it's ultimately read-only, and data that cannot be shared between
multiple processes using LLVM.
It turns out that a solid ~1.3MB of that data is in the tablegen'd
MCInstrDesc tables - there a pointers for ImplicitUses, ImplicitDefs,
and OpInfo that need to be relocated.
This can be fixed of course by having target-global arrays for those
structures referenced by MCInstrInfo (and hence TargetInstrInfo), and
only storing offsets into those global arrays in MCInstrDesc.
The downside is that several relevant accessors need to be augmented
with MCInstrInfo parameters, but in the long run it seems worth it to me.
Any objections or suggestions? Is this something that people can agree
on, i.e. do patches going in this direction have a good chance of being
More information about the llvm-dev