[llvm-commits] [llvm] r61415 - in /llvm/trunk: include/llvm/Target/TargetAsmInfo.h lib/CodeGen/AsmPrinter/DwarfWriter.cpp lib/Target/TargetAsmInfo.cpp lib/Target/X86/X86TargetAsmInfo.cpp
Bill Wendling
isanbard at gmail.com
Tue Dec 23 21:25:50 PST 2008
Author: void
Date: Tue Dec 23 23:25:49 2008
New Revision: 61415
URL: http://llvm.org/viewvc/llvm-project?rev=61415&view=rev
Log:
GCC doesn't emit DW_EH_PE_sdata4 for the FDE encoding on Darwin. I'm not sure
about other platforms.
Modified:
llvm/trunk/include/llvm/Target/TargetAsmInfo.h
llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
llvm/trunk/lib/Target/TargetAsmInfo.cpp
llvm/trunk/lib/Target/X86/X86TargetAsmInfo.cpp
Modified: llvm/trunk/include/llvm/Target/TargetAsmInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetAsmInfo.h?rev=61415&r1=61414&r2=61415&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Target/TargetAsmInfo.h (original)
+++ llvm/trunk/include/llvm/Target/TargetAsmInfo.h Tue Dec 23 23:25:49 2008
@@ -448,6 +448,11 @@
///
bool DwarfRequiresFrameSection; // Defaults to true.
+ /// FDEEncodingRequiresSData4 - If set, the FDE Encoding in the EH section
+ /// includes DW_EH_PE_sdata4.
+ ///
+ bool FDEEncodingRequiresSData4; // Defaults to true
+
/// GlobalEHDirective - This is the directive used to make exception frame
/// tables globally visible.
///
@@ -814,6 +819,9 @@
bool doesDwarfRequireFrameSection() const {
return DwarfRequiresFrameSection;
}
+ bool doesFDEEncodingRequireSData4() const {
+ return FDEEncodingRequiresSData4;
+ }
const char *getGlobalEHDirective() const {
return GlobalEHDirective;
}
Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp?rev=61415&r1=61414&r2=61415&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfWriter.cpp Tue Dec 23 23:25:49 2008
@@ -3017,13 +3017,25 @@
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.
Modified: llvm/trunk/lib/Target/TargetAsmInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetAsmInfo.cpp?rev=61415&r1=61414&r2=61415&view=diff
==============================================================================
--- llvm/trunk/lib/Target/TargetAsmInfo.cpp (original)
+++ llvm/trunk/lib/Target/TargetAsmInfo.cpp Tue Dec 23 23:25:49 2008
@@ -99,6 +99,7 @@
SupportsDebugInformation = false;
SupportsExceptionHandling = false;
DwarfRequiresFrameSection = true;
+ FDEEncodingRequiresSData4 = true;
GlobalEHDirective = 0;
SupportsWeakOmittedEHFrame = true;
DwarfSectionOffsetDirective = 0;
Modified: llvm/trunk/lib/Target/X86/X86TargetAsmInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetAsmInfo.cpp?rev=61415&r1=61414&r2=61415&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86TargetAsmInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86TargetAsmInfo.cpp Tue Dec 23 23:25:49 2008
@@ -70,6 +70,7 @@
COMMDirectiveTakesAlignment = (Subtarget->getDarwinVers() >= 9);
HasDotTypeDotSizeDirective = false;
HasSingleParameterDotFile = false;
+ FDEEncodingRequiresSData4 = false;
if (TM.getRelocationModel() == Reloc::Static) {
StaticCtorsSection = ".constructor";
StaticDtorsSection = ".destructor";
More information about the llvm-commits
mailing list