[llvm-branch-commits] [llvm-branch] r293664 - Merging r292624:
Hans Wennborg via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Tue Jan 31 10:21:41 PST 2017
Author: hans
Date: Tue Jan 31 12:21:40 2017
New Revision: 293664
URL: http://llvm.org/viewvc/llvm-project?rev=293664&view=rev
Log:
Merging r292624:
------------------------------------------------------------------------
r292624 | petarj | 2017-01-20 09:53:30 -0800 (Fri, 20 Jan 2017) | 9 lines
[mips] Fix debug information for __thread variable
This patch fixes debug information for __thread variable on Mips
using .dtprelword and .dtpreldword directives.
Patch by Aleksandar Beserminji.
Differential Revision: http://reviews.llvm.org/D28770
------------------------------------------------------------------------
Added:
llvm/branches/release_40/test/DebugInfo/Mips/tls.ll
- copied unchanged from r292624, llvm/trunk/test/DebugInfo/Mips/tls.ll
Modified:
llvm/branches/release_40/ (props changed)
llvm/branches/release_40/include/llvm/CodeGen/AsmPrinter.h
llvm/branches/release_40/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
llvm/branches/release_40/lib/CodeGen/AsmPrinter/DIE.cpp
llvm/branches/release_40/lib/Target/Mips/MipsAsmPrinter.cpp
llvm/branches/release_40/lib/Target/Mips/MipsAsmPrinter.h
llvm/branches/release_40/lib/Target/Mips/MipsTargetObjectFile.cpp
llvm/branches/release_40/lib/Target/Mips/MipsTargetObjectFile.h
Propchange: llvm/branches/release_40/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jan 31 12:21:40 2017
@@ -1,3 +1,3 @@
/llvm/branches/Apple/Pertwee:110850,110961
/llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292625,292641,292651,292667,292711-292713,292758,293021,293025,293259,293291,293293,293417,293522
+/llvm/trunk:155241,291858-291859,291863,291875,291909,291918,291966,291968,291979,292133,292242,292254-292255,292280,292323,292444,292467,292516,292583,292624-292625,292641,292651,292667,292711-292713,292758,293021,293025,293259,293291,293293,293417,293522
Modified: llvm/branches/release_40/include/llvm/CodeGen/AsmPrinter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/include/llvm/CodeGen/AsmPrinter.h?rev=293664&r1=293663&r2=293664&view=diff
==============================================================================
--- llvm/branches/release_40/include/llvm/CodeGen/AsmPrinter.h (original)
+++ llvm/branches/release_40/include/llvm/CodeGen/AsmPrinter.h Tue Jan 31 12:21:40 2017
@@ -480,6 +480,12 @@ public:
/// Get the value for DW_AT_APPLE_isa. Zero if no isa encoding specified.
virtual unsigned getISAEncoding() { return 0; }
+ /// Emit the directive and value for debug thread local expression
+ ///
+ /// \p Value - The value to emit.
+ /// \p Size - The size of the integer (in bytes) to emit.
+ virtual void EmitDebugValue(const MCExpr *Value, unsigned Size) const;
+
//===------------------------------------------------------------------===//
// Dwarf Lowering Routines
//===------------------------------------------------------------------===//
Modified: llvm/branches/release_40/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/CodeGen/AsmPrinter/AsmPrinter.cpp?rev=293664&r1=293663&r2=293664&view=diff
==============================================================================
--- llvm/branches/release_40/lib/CodeGen/AsmPrinter/AsmPrinter.cpp (original)
+++ llvm/branches/release_40/lib/CodeGen/AsmPrinter/AsmPrinter.cpp Tue Jan 31 12:21:40 2017
@@ -567,6 +567,15 @@ void AsmPrinter::EmitGlobalVariable(cons
OutStreamer->AddBlankLine();
}
+/// Emit the directive and value for debug thread local expression
+///
+/// \p Value - The value to emit.
+/// \p Size - The size of the integer (in bytes) to emit.
+void AsmPrinter::EmitDebugValue(const MCExpr *Value,
+ unsigned Size) const {
+ OutStreamer->EmitValue(Value, Size);
+}
+
/// EmitFunctionHeader - This method emits the header for the current
/// function.
void AsmPrinter::EmitFunctionHeader() {
Modified: llvm/branches/release_40/lib/CodeGen/AsmPrinter/DIE.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/CodeGen/AsmPrinter/DIE.cpp?rev=293664&r1=293663&r2=293664&view=diff
==============================================================================
--- llvm/branches/release_40/lib/CodeGen/AsmPrinter/DIE.cpp (original)
+++ llvm/branches/release_40/lib/CodeGen/AsmPrinter/DIE.cpp Tue Jan 31 12:21:40 2017
@@ -484,7 +484,7 @@ void DIEInteger::print(raw_ostream &O) c
/// EmitValue - Emit expression value.
///
void DIEExpr::EmitValue(const AsmPrinter *AP, dwarf::Form Form) const {
- AP->OutStreamer->EmitValue(Expr, SizeOf(AP, Form));
+ AP->EmitDebugValue(Expr, SizeOf(AP, Form));
}
/// SizeOf - Determine size of expression value in bytes.
Modified: llvm/branches/release_40/lib/Target/Mips/MipsAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Target/Mips/MipsAsmPrinter.cpp?rev=293664&r1=293663&r2=293664&view=diff
==============================================================================
--- llvm/branches/release_40/lib/Target/Mips/MipsAsmPrinter.cpp (original)
+++ llvm/branches/release_40/lib/Target/Mips/MipsAsmPrinter.cpp Tue Jan 31 12:21:40 2017
@@ -1037,6 +1037,22 @@ void MipsAsmPrinter::PrintDebugValueComm
// TODO: implement
}
+// Emit .dtprelword or .dtpreldword directive
+// and value for debug thread local expression.
+void MipsAsmPrinter::EmitDebugValue(const MCExpr *Value,
+ unsigned Size) const {
+ switch (Size) {
+ case 4:
+ OutStreamer->EmitDTPRel32Value(Value);
+ break;
+ case 8:
+ OutStreamer->EmitDTPRel64Value(Value);
+ break;
+ default:
+ llvm_unreachable("Unexpected size of expression value.");
+ }
+}
+
// Align all targets of indirect branches on bundle size. Used only if target
// is NaCl.
void MipsAsmPrinter::NaClAlignIndirectJumpTargets(MachineFunction &MF) {
Modified: llvm/branches/release_40/lib/Target/Mips/MipsAsmPrinter.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Target/Mips/MipsAsmPrinter.h?rev=293664&r1=293663&r2=293664&view=diff
==============================================================================
--- llvm/branches/release_40/lib/Target/Mips/MipsAsmPrinter.h (original)
+++ llvm/branches/release_40/lib/Target/Mips/MipsAsmPrinter.h Tue Jan 31 12:21:40 2017
@@ -140,6 +140,7 @@ public:
void EmitStartOfAsmFile(Module &M) override;
void EmitEndOfAsmFile(Module &M) override;
void PrintDebugValueComment(const MachineInstr *MI, raw_ostream &OS);
+ void EmitDebugValue(const MCExpr *Value, unsigned Size) const override;
};
}
Modified: llvm/branches/release_40/lib/Target/Mips/MipsTargetObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Target/Mips/MipsTargetObjectFile.cpp?rev=293664&r1=293663&r2=293664&view=diff
==============================================================================
--- llvm/branches/release_40/lib/Target/Mips/MipsTargetObjectFile.cpp (original)
+++ llvm/branches/release_40/lib/Target/Mips/MipsTargetObjectFile.cpp Tue Jan 31 12:21:40 2017
@@ -148,3 +148,11 @@ MCSection *MipsTargetObjectFile::getSect
// Otherwise, we work the same as ELF.
return TargetLoweringObjectFileELF::getSectionForConstant(DL, Kind, C, Align);
}
+
+const MCExpr *
+MipsTargetObjectFile::getDebugThreadLocalSymbol(const MCSymbol *Sym) const {
+ const MCExpr *Expr =
+ MCSymbolRefExpr::create(Sym, MCSymbolRefExpr::VK_None, getContext());
+ return MCBinaryExpr::createAdd(
+ Expr, MCConstantExpr::create(0x8000, getContext()), getContext());
+}
Modified: llvm/branches/release_40/lib/Target/Mips/MipsTargetObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_40/lib/Target/Mips/MipsTargetObjectFile.h?rev=293664&r1=293663&r2=293664&view=diff
==============================================================================
--- llvm/branches/release_40/lib/Target/Mips/MipsTargetObjectFile.h (original)
+++ llvm/branches/release_40/lib/Target/Mips/MipsTargetObjectFile.h Tue Jan 31 12:21:40 2017
@@ -42,6 +42,8 @@ class MipsTargetMachine;
MCSection *getSectionForConstant(const DataLayout &DL, SectionKind Kind,
const Constant *C,
unsigned &Align) const override;
+ /// Describe a TLS variable address within debug info.
+ const MCExpr *getDebugThreadLocalSymbol(const MCSymbol *Sym) const override;
};
} // end namespace llvm
More information about the llvm-branch-commits
mailing list