Add a bool to indicate if we should set the "indirect encoding" bit in the Dwarf

information for EH.

llvm-svn: 41852
This commit is contained in:
Bill Wendling 2007-09-11 17:20:55 +00:00
parent 69c1b10993
commit 74fb0f1a1c
4 changed files with 13 additions and 1 deletions

View File

@ -116,6 +116,11 @@ namespace llvm {
const char *PersonalityPrefix; // Defaults to ""
const char *PersonalitySuffix; // Defaults to ""
/// NeedsIndirectEncoding - If set, we need to set the indirect encoding bit
/// for EH in Dwarf.
///
bool NeedsIndirectEncoding; // Defaults to false
/// InlineAsmStart/End - If these are nonempty, they contain a directive to
/// emit before and after an inline assembly statement.
const char *InlineAsmStart; // Defaults to "#APP\n"

View File

@ -2789,7 +2789,12 @@ private:
if (Personality) {
Asm->EmitULEB128Bytes(7);
Asm->EOL("Augmentation Size");
if (TAI->getNeedsIndirectEncoding())
Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect);
else
Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4);
Asm->EOL("Personality (pcrel sdata4 indirect)");
PrintRelDirective();

View File

@ -40,6 +40,7 @@ TargetAsmInfo::TargetAsmInfo() :
FunctionAddrSuffix(""),
PersonalityPrefix(""),
PersonalitySuffix(""),
NeedsIndirectEncoding(false),
InlineAsmStart("#APP"),
InlineAsmEnd("#NO_APP"),
AssemblerDialect(0),

View File

@ -70,6 +70,7 @@ X86TargetAsmInfo::X86TargetAsmInfo(const X86TargetMachine &TM) {
}
PersonalityPrefix = "L";
PersonalitySuffix = "$non_lazy_ptr";
NeedsIndirectEncoding = true;
InlineAsmStart = "# InlineAsm Start";
InlineAsmEnd = "# InlineAsm End";
SetDirective = "\t.set";