summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/patches/patch-r262261-llvm-r200282-sparc.diff
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2014-11-24 18:43:37 +0000
committerdim <dim@FreeBSD.org>2014-11-24 18:43:37 +0000
commit82ca21468e7fe6a5112961ba86434579bed3f204 (patch)
treec2772f1f62ff857fee7802d46eb79f45d45d6d54 /contrib/llvm/patches/patch-r262261-llvm-r200282-sparc.diff
parent6148c19c738a92f344008aa3f88f4e008bada0ee (diff)
downloadFreeBSD-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.diff183
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
OpenPOWER on IntegriCloud