summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2008-12-24 05:25:49 +0000
committerBill Wendling <isanbard@gmail.com>2008-12-24 05:25:49 +0000
commit066b5f67245691daa10a1a7796ab31e630dc6b30 (patch)
treee5f2296a6ddb5a7c37c3c4b7262a4a1cfded3747 /llvm/lib/CodeGen
parentf4e6356d06ee4a066966c22431721e0b50eb1b50 (diff)
downloadbcm5719-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.cpp20
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.
OpenPOWER on IntegriCloud