summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/MC/ELFObjectWriter.cpp4
-rw-r--r--llvm/test/MC/X86/unused_reg_var_assign.s3
2 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index aec2bdeded3..4e0a4f45431 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -577,6 +577,10 @@ bool ELFWriter::isInSymtab(const MCAsmLayout &Layout, const MCSymbolELF &Symbol,
bool Used, bool Renamed) {
if (Symbol.isVariable()) {
const MCExpr *Expr = Symbol.getVariableValue();
+ // Target Expressions that are always inlined do not appear in the symtab
+ if (const auto *T = dyn_cast<MCTargetExpr>(Expr))
+ if (T->inlineAssignedExpr())
+ return false;
if (const MCSymbolRefExpr *Ref = dyn_cast<MCSymbolRefExpr>(Expr)) {
if (Ref->getKind() == MCSymbolRefExpr::VK_WEAKREF)
return false;
diff --git a/llvm/test/MC/X86/unused_reg_var_assign.s b/llvm/test/MC/X86/unused_reg_var_assign.s
new file mode 100644
index 00000000000..53e5cd6a274
--- /dev/null
+++ b/llvm/test/MC/X86/unused_reg_var_assign.s
@@ -0,0 +1,3 @@
+# RUN: llvm-mc -triple x86_64-unknown-linux-gnu -filetype obj %s -o %t
+
+reg_i = %xmm0
OpenPOWER on IntegriCloud