]> granicus.if.org Git - llvm/commitdiff
[MC] Teach ELFObjectWriter that parse-time variables do not appear in
authorNirav Dave <niravd@google.com>
Mon, 4 Mar 2019 19:12:56 +0000 (19:12 +0000)
committerNirav Dave <niravd@google.com>
Mon, 4 Mar 2019 19:12:56 +0000 (19:12 +0000)
symbol table.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355325 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/ELFObjectWriter.cpp
test/MC/X86/unused_reg_var_assign.s [new file with mode: 0644]

index aec2bdeded3aff51310ebe03334e592efffe4551..4e0a4f45431fb107e4969bbda49f9621fd475194 100644 (file)
@@ -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/test/MC/X86/unused_reg_var_assign.s b/test/MC/X86/unused_reg_var_assign.s
new file mode 100644 (file)
index 0000000..53e5cd6
--- /dev/null
@@ -0,0 +1,3 @@
+# RUN: llvm-mc -triple x86_64-unknown-linux-gnu -filetype obj %s -o %t
+       
+reg_i = %xmm0