diff options
author | Bill Wendling <isanbard@gmail.com> | 2008-12-24 05:25:49 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2008-12-24 05:25:49 +0000 |
commit | d4121bef3cf3af51b80c2d499085a96aca5982ed (patch) | |
tree | f50d50442fc2c00817968e5a884467c44073def5 /lib/CodeGen/AsmPrinter/DwarfWriter.cpp | |
parent | e5b7e0ec083f2e902e8612a95c33335a08da83aa (diff) |
GCC doesn't emit DW_EH_PE_sdata4 for the FDE encoding on Darwin. I'm not sure
about other platforms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61415 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AsmPrinter/DwarfWriter.cpp')
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfWriter.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp index d22bbb2f2c..42ed34879e 100644 --- a/lib/CodeGen/AsmPrinter/DwarfWriter.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfWriter.cpp @@ -3017,13 +3017,25 @@ private: Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4); Asm->EOL("LSDA Encoding (pcrel sdata4)"); - Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4); - Asm->EOL("FDE Encoding (pcrel sdata4)"); + + if (TAI->doesFDEEncodingRequireSData4()) { + Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4); + Asm->EOL("FDE Encoding (pcrel sdata4)"); + } else { + Asm->EmitInt8(DW_EH_PE_pcrel); + Asm->EOL("FDE Encoding (pcrel)"); + } } else { Asm->EmitULEB128Bytes(1); Asm->EOL("Augmentation Size"); - Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4); - Asm->EOL("FDE Encoding (pcrel sdata4)"); + + if (TAI->doesFDEEncodingRequireSData4()) { + Asm->EmitInt8(DW_EH_PE_pcrel | DW_EH_PE_sdata4); + Asm->EOL("FDE Encoding (pcrel sdata4)"); + } else { + Asm->EmitInt8(DW_EH_PE_pcrel); + Asm->EOL("FDE Encoding (pcrel)"); + } } // Indicate locations of general callee saved registers in frame. |