Changes in directory llvm/lib/Target/X86:
X86ATTAsmPrinter.cpp updated: 1.104 -> 1.105 X86AsmPrinter.cpp updated: 1.241 -> 1.242 X86TargetAsmInfo.cpp updated: 1.40 -> 1.41 --- Log message: Emit sections/directives in the proper order. This fixes PR1376: http://llvm.org/PR1376 . Also, some small cleanup was made. --- Diffs of the changes: (+20 -34) X86ATTAsmPrinter.cpp | 21 ++++++--------------- X86AsmPrinter.cpp | 4 +--- X86TargetAsmInfo.cpp | 29 +++++++++++++---------------- 3 files changed, 20 insertions(+), 34 deletions(-) Index: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.104 llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.105 --- llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.104 Sun Apr 29 13:35:00 2007 +++ llvm/lib/Target/X86/X86ATTAsmPrinter.cpp Sat May 5 04:04:50 2007 @@ -71,9 +71,7 @@ /// method to print assembly for each instruction. /// bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { - if (Subtarget->isTargetDarwin() || - Subtarget->isTargetELF() || - Subtarget->isTargetCygMing()) { + if (TAI->doesSupportDebugInformation()) { // Let PassManager know we need debug information and relay // the MachineModuleInfo address on to DwarfWriter. DW.SetModuleInfo(&getAnalysis<MachineModuleInfo>()); @@ -150,9 +148,7 @@ F->getLinkage() == Function::WeakLinkage)) O << "Lllvm$workaround$fake$stub$" << CurrentFnName << ":\n"; - if (Subtarget->isTargetDarwin() || - Subtarget->isTargetELF() || - Subtarget->isTargetCygMing()) { + if (TAI->doesSupportDebugInformation()) { // Emit pre-function debug information. DW.BeginFunction(&MF); } @@ -173,22 +169,17 @@ } } - // Print out jump tables referenced by the function. - - // Mac OS X requires that the jump table follow the function, so that the jump - // table is part of the same atom that the function is in. - EmitJumpTableInfo(MF.getJumpTableInfo(), MF); - if (TAI->hasDotTypeDotSizeDirective()) O << "\t.size " << CurrentFnName << ", .-" << CurrentFnName << "\n"; - if (Subtarget->isTargetDarwin() || - Subtarget->isTargetELF() || - Subtarget->isTargetCygMing()) { + if (TAI->doesSupportDebugInformation()) { // Emit post-function debug information. DW.EndFunction(); } + // Print out jump tables referenced by the function. + EmitJumpTableInfo(MF.getJumpTableInfo(), MF); + // We didn't modify anything. return false; } Index: llvm/lib/Target/X86/X86AsmPrinter.cpp diff -u llvm/lib/Target/X86/X86AsmPrinter.cpp:1.241 llvm/lib/Target/X86/X86AsmPrinter.cpp:1.242 --- llvm/lib/Target/X86/X86AsmPrinter.cpp:1.241 Sun Apr 29 13:35:00 2007 +++ llvm/lib/Target/X86/X86AsmPrinter.cpp Sat May 5 04:04:50 2007 @@ -115,9 +115,7 @@ /// doInitialization bool X86SharedAsmPrinter::doInitialization(Module &M) { - if (Subtarget->isTargetELF() || - Subtarget->isTargetCygMing() || - Subtarget->isTargetDarwin()) { + if (TAI->doesSupportDebugInformation()) { // Emit initial debug information. DW.BeginModule(&M); } Index: llvm/lib/Target/X86/X86TargetAsmInfo.cpp diff -u llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.40 llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.41 --- llvm/lib/Target/X86/X86TargetAsmInfo.cpp:1.40 Thu May 3 11:38:57 2007 +++ llvm/lib/Target/X86/X86TargetAsmInfo.cpp Sat May 5 04:04:50 2007 @@ -81,7 +81,8 @@ // Emit a local label that is preserved until the linker runs. JumpTableSpecialLabelPrefix = "l"; } - + + SupportsDebugInformation = true; NeedsSet = true; DwarfAbbrevSection = ".section __DWARF,__debug_abbrev,regular,debug"; DwarfInfoSection = ".section __DWARF,__debug_info,regular,debug"; @@ -97,26 +98,21 @@ break; case X86Subtarget::isELF: - // Set up DWARF directives - HasLEB128 = true; // Target asm supports leb128 directives (little-endian) - AbsoluteDebugSectionOffsets = true; - AbsoluteEHSectionOffsets = false; - // bool HasLEB128; // Defaults to false. - // hasDotLoc - True if target asm supports .loc directives. - // bool HasDotLoc; // Defaults to false. - // HasDotFile - True if target asm supports .file directives. - // bool HasDotFile; // Defaults to false. ReadOnlySection = "\t.section\t.rodata\n"; FourByteConstantSection = "\t.section\t.rodata.cst4,\"aM\",@progbits,4"; EightByteConstantSection = "\t.section\t.rodata.cst8,\"aM\",@progbits,8"; - SixteenByteConstantSection = - "\t.section\t.rodata.cst16,\"aM\",@progbits,16"; + SixteenByteConstantSection = "\t.section\t.rodata.cst16,\"aM\",@progbits,16"; CStringSection = "\t.section\t.rodata.str1.1,\"aMS\",@progbits,1"; PrivateGlobalPrefix = ".L"; WeakRefDirective = "\t.weak\t"; SetDirective = "\t.set\t"; PCSymbol = "."; - + + // Set up DWARF directives + HasLEB128 = true; // Target asm supports leb128 directives (little-endian) + AbsoluteDebugSectionOffsets = true; + AbsoluteEHSectionOffsets = false; + SupportsDebugInformation = true; DwarfRequiresFrameSection = false; DwarfAbbrevSection = "\t.section\t.debug_abbrev,\"\",@progbits"; DwarfInfoSection = "\t.section\t.debug_info,\"\",@progbits"; @@ -144,14 +140,15 @@ StaticCtorsSection = "\t.section .ctors,\"aw\""; StaticDtorsSection = "\t.section .dtors,\"aw\""; HiddenDirective = NULL; + PrivateGlobalPrefix = "L"; // Prefix for private global symbols + WeakRefDirective = "\t.weak\t"; + SetDirective = "\t.set\t"; // Set up DWARF directives HasLEB128 = true; // Target asm supports leb128 directives (little-endian) AbsoluteDebugSectionOffsets = true; AbsoluteEHSectionOffsets = false; - PrivateGlobalPrefix = "L"; // Prefix for private global symbols - WeakRefDirective = "\t.weak\t"; - SetDirective = "\t.set\t"; + SupportsDebugInformation = true; DwarfRequiresFrameSection = false; DwarfSectionOffsetDirective = "\t.secrel32\t"; DwarfAbbrevSection = "\t.section\t.debug_abbrev,\"dr\""; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits