Emit .set directives for jump table entries when possible, which reduces

the number of relocations in object files, shrinkifying them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29650 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Nate Begeman
2006-08-12 21:29:52 +00:00
parent f6e190fae0
commit 52a51e38dc
4 changed files with 50 additions and 4 deletions

View File

@@ -185,6 +185,10 @@ namespace llvm {
//===--- Global Variable Emission Directives --------------------------===//
/// SetDirective - This is the name of a directive that can be used to tell
/// the assembler to set the value of a variable to some expression.
const char *SetDirective; // Defaults to null.
/// LCOMMDirective - This is the name of a directive (if supported) that can
/// be used to efficiently declare a local (internal) block of zero
/// initialized data in the .bss/.data section. The syntax expected is:
@@ -193,7 +197,7 @@ namespace llvm {
const char *LCOMMDirective; // Defaults to null.
const char *COMMDirective; // Defaults to "\t.comm\t".
/// COMMDirectiveTakesAlignment - True if COMMDirective take a third
/// argument that specifies the alignment of the declaration.
bool COMMDirectiveTakesAlignment; // Defaults to true.
@@ -322,6 +326,10 @@ namespace llvm {
virtual void printBasicBlockLabel(const MachineBasicBlock *MBB,
bool printColon = false,
bool printComment = true) const;
/// printSetLabel - This method prints a set label for the specified
/// MachineBasicBlock
void printSetLabel(unsigned uid, const MachineBasicBlock *MBB) const;
private:
void EmitXXStructorList(Constant *List);