diff options
author | dim <dim@FreeBSD.org> | 2014-11-24 18:43:37 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2014-11-24 18:43:37 +0000 |
commit | 82ca21468e7fe6a5112961ba86434579bed3f204 (patch) | |
tree | c2772f1f62ff857fee7802d46eb79f45d45d6d54 /contrib/llvm/patches/patch-r262261-llvm-r200282-sparc.diff | |
parent | 6148c19c738a92f344008aa3f88f4e008bada0ee (diff) | |
download | FreeBSD-src-82ca21468e7fe6a5112961ba86434579bed3f204.zip FreeBSD-src-82ca21468e7fe6a5112961ba86434579bed3f204.tar.gz |
Cleanup patch set, and update README.TXT. Add three new patches.
Diffstat (limited to 'contrib/llvm/patches/patch-r262261-llvm-r200282-sparc.diff')
-rw-r--r-- | contrib/llvm/patches/patch-r262261-llvm-r200282-sparc.diff | 183 |
1 files changed, 0 insertions, 183 deletions
diff --git a/contrib/llvm/patches/patch-r262261-llvm-r200282-sparc.diff b/contrib/llvm/patches/patch-r262261-llvm-r200282-sparc.diff deleted file mode 100644 index b4e4cef..0000000 --- a/contrib/llvm/patches/patch-r262261-llvm-r200282-sparc.diff +++ /dev/null @@ -1,183 +0,0 @@ -Pull in r200282 from upstream llvm trunk (by Jakob Stoklund Olesen): - - Fix the DWARF EH encodings for Sparc PIC code. - - Also emit the stubs that were generated for references to typeinfo - symbols. - -Introduced here: http://svnweb.freebsd.org/changeset/base/262261 - -Index: lib/Target/Sparc/SparcAsmPrinter.cpp -=================================================================== ---- lib/Target/Sparc/SparcAsmPrinter.cpp -+++ lib/Target/Sparc/SparcAsmPrinter.cpp -@@ -23,7 +23,9 @@ - #include "llvm/ADT/SmallString.h" - #include "llvm/CodeGen/AsmPrinter.h" - #include "llvm/CodeGen/MachineInstr.h" -+#include "llvm/CodeGen/MachineModuleInfoImpls.h" - #include "llvm/CodeGen/MachineRegisterInfo.h" -+#include "llvm/CodeGen/TargetLoweringObjectFileImpl.h" - #include "llvm/MC/MCAsmInfo.h" - #include "llvm/MC/MCContext.h" - #include "llvm/MC/MCInst.h" -@@ -54,6 +56,7 @@ namespace { - - virtual void EmitFunctionBodyStart(); - virtual void EmitInstruction(const MachineInstr *MI); -+ virtual void EmitEndOfAsmFile(Module &M); - - static const char *getRegisterName(unsigned RegNo) { - return SparcInstPrinter::getRegisterName(RegNo); -@@ -450,6 +453,23 @@ bool SparcAsmPrinter::PrintAsmMemoryOperand(const - return false; - } - -+void SparcAsmPrinter::EmitEndOfAsmFile(Module &M) { -+ const TargetLoweringObjectFileELF &TLOFELF = -+ static_cast<const TargetLoweringObjectFileELF &>(getObjFileLowering()); -+ MachineModuleInfoELF &MMIELF = MMI->getObjFileInfo<MachineModuleInfoELF>(); -+ -+ // Generate stubs for global variables. -+ MachineModuleInfoELF::SymbolListTy Stubs = MMIELF.GetGVStubList(); -+ if (!Stubs.empty()) { -+ OutStreamer.SwitchSection(TLOFELF.getDataSection()); -+ unsigned PtrSize = TM.getDataLayout()->getPointerSize(0); -+ for (unsigned i = 0, e = Stubs.size(); i != e; ++i) { -+ OutStreamer.EmitLabel(Stubs[i].first); -+ OutStreamer.EmitSymbolValue(Stubs[i].second.getPointer(), PtrSize); -+ } -+ } -+} -+ - // Force static initialization. - extern "C" void LLVMInitializeSparcAsmPrinter() { - RegisterAsmPrinter<SparcAsmPrinter> X(TheSparcTarget); -Index: lib/MC/MCObjectFileInfo.cpp -=================================================================== ---- lib/MC/MCObjectFileInfo.cpp -+++ lib/MC/MCObjectFileInfo.cpp -@@ -310,6 +310,33 @@ void MCObjectFileInfo::InitELFMCObjectFileInfo(Tri - FDEEncoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_udata8; - TTypeEncoding = dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | - dwarf::DW_EH_PE_udata8; -+ } else if (T.getArch() == Triple::sparc) { -+ if (RelocM == Reloc::PIC_) { -+ LSDAEncoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4; -+ PersonalityEncoding = dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | -+ dwarf::DW_EH_PE_sdata4; -+ FDEEncoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4; -+ TTypeEncoding = dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | -+ dwarf::DW_EH_PE_sdata4; -+ } else { -+ LSDAEncoding = dwarf::DW_EH_PE_absptr; -+ PersonalityEncoding = dwarf::DW_EH_PE_absptr; -+ FDEEncoding = dwarf::DW_EH_PE_udata4; -+ TTypeEncoding = dwarf::DW_EH_PE_absptr; -+ } -+ } else if (T.getArch() == Triple::sparcv9) { -+ LSDAEncoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4; -+ if (RelocM == Reloc::PIC_) { -+ PersonalityEncoding = dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | -+ dwarf::DW_EH_PE_sdata4; -+ FDEEncoding = dwarf::DW_EH_PE_pcrel | dwarf::DW_EH_PE_sdata4; -+ TTypeEncoding = dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel | -+ dwarf::DW_EH_PE_sdata4; -+ } else { -+ PersonalityEncoding = dwarf::DW_EH_PE_absptr; -+ FDEEncoding = dwarf::DW_EH_PE_udata4; -+ TTypeEncoding = dwarf::DW_EH_PE_absptr; -+ } - } else if (T.getArch() == Triple::systemz) { - // All currently-defined code models guarantee that 4-byte PC-relative - // values will be in range. -Index: test/CodeGen/SPARC/exception.ll -=================================================================== ---- test/CodeGen/SPARC/exception.ll -+++ test/CodeGen/SPARC/exception.ll -@@ -1,4 +1,7 @@ --; RUN: llc < %s -march=sparc | FileCheck %s -+; RUN: llc < %s -march=sparc -relocation-model=static | FileCheck -check-prefix=V8ABS %s -+; RUN: llc < %s -march=sparc -relocation-model=pic | FileCheck -check-prefix=V8PIC %s -+; RUN: llc < %s -march=sparcv9 -relocation-model=static | FileCheck -check-prefix=V9ABS %s -+; RUN: llc < %s -march=sparcv9 -relocation-model=pic | FileCheck -check-prefix=V9PIC %s - - - %struct.__fundamental_type_info_pseudo = type { %struct.__type_info_pseudo } -@@ -9,23 +12,64 @@ - @.cst = linker_private unnamed_addr constant [12 x i8] c"catched int\00", align 64 - @.cst1 = linker_private unnamed_addr constant [14 x i8] c"catched float\00", align 64 - --; CHECK-LABEL: main: --; CHECK: .cfi_startproc --; CHECK: .cfi_def_cfa_register {{30|%fp}} --; CHECK: .cfi_window_save --; CHECK: .cfi_register 15, 31 -+; V8ABS-LABEL: main: -+; V8ABS: .cfi_startproc -+; V8ABS: .cfi_personality 0, __gxx_personality_v0 -+; V8ABS: .cfi_lsda 0, -+; V8ABS: .cfi_def_cfa_register {{30|%fp}} -+; V8ABS: .cfi_window_save -+; V8ABS: .cfi_register 15, 31 - --; CHECK: call __cxa_throw --; CHECK: call __cxa_throw -+; V8ABS: call __cxa_throw -+; V8ABS: call __cxa_throw - --; CHECK: call __cxa_begin_catch --; CHECK: call __cxa_end_catch -+; V8ABS: call __cxa_begin_catch -+; V8ABS: call __cxa_end_catch - --; CHECK: call __cxa_begin_catch --; CHECK: call __cxa_end_catch -+; V8ABS: call __cxa_begin_catch -+; V8ABS: call __cxa_end_catch - --; CHECK: .cfi_endproc -+; V8ABS: .cfi_endproc - -+; V8PIC-LABEL: main: -+; V8PIC: .cfi_startproc -+; V8PIC: .cfi_personality 155, DW.ref.__gxx_personality_v0 -+; V8PIC: .cfi_lsda 27, -+; V8PIC: .cfi_def_cfa_register {{30|%fp}} -+; V8PIC: .cfi_window_save -+; V8PIC: .cfi_register 15, 31 -+; V8PIC: .section .gcc_except_table -+; V8PIC-NOT: .section -+; V8PIC: .word .L_ZTIi.DW.stub- -+; V8PIC: .data -+; V8PIC: .L_ZTIi.DW.stub: -+; V8PIC-NEXT: .word _ZTIi -+ -+; V9ABS-LABEL: main: -+; V9ABS: .cfi_startproc -+; V9ABS: .cfi_personality 0, __gxx_personality_v0 -+; V9ABS: .cfi_lsda 27, -+; V9ABS: .cfi_def_cfa_register {{30|%fp}} -+; V9ABS: .cfi_window_save -+; V9ABS: .cfi_register 15, 31 -+; V9ABS: .section .gcc_except_table -+; V9ABS-NOT: .section -+; V9ABS: .xword _ZTIi -+ -+; V9PIC-LABEL: main: -+; V9PIC: .cfi_startproc -+; V9PIC: .cfi_personality 155, DW.ref.__gxx_personality_v0 -+; V9PIC: .cfi_lsda 27, -+; V9PIC: .cfi_def_cfa_register {{30|%fp}} -+; V9PIC: .cfi_window_save -+; V9PIC: .cfi_register 15, 31 -+; V9PIC: .section .gcc_except_table -+; V9PIC-NOT: .section -+; V9PIC: .word .L_ZTIi.DW.stub- -+; V9PIC: .data -+; V9PIC: .L_ZTIi.DW.stub: -+; V9PIC-NEXT: .xword _ZTIi -+ - define i32 @main(i32 %argc, i8** nocapture readnone %argv) unnamed_addr #0 { - entry: - %0 = icmp eq i32 %argc, 2 |