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 | 066b5f67245691daa10a1a7796ab31e630dc6b30 (patch) | |
| tree | e5f2296a6ddb5a7c37c3c4b7262a4a1cfded3747 /llvm/lib/CodeGen | |
| parent | f4e6356d06ee4a066966c22431721e0b50eb1b50 (diff) | |
| download | bcm5719-llvm-066b5f67245691daa10a1a7796ab31e630dc6b30.tar.gz bcm5719-llvm-066b5f67245691daa10a1a7796ab31e630dc6b30.zip | |
GCC doesn't emit DW_EH_PE_sdata4 for the FDE encoding on Darwin. I'm not sure
about other platforms.
llvm-svn: 61415
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp index d22bbb2f2c2..42ed34879e3 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp +++ b/llvm/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. |

