[PATCH] [MC][PowerPC] Fix a crash when redefining a symbol after .set
authorFangrui Song <maskray@google.com>
Fri, 13 Dec 2019 00:18:57 +0000 (16:18 -0800)
committerGianfranco Costamagna <locutusofborg@debian.org>
Fri, 8 Jan 2021 11:48:25 +0000 (11:48 +0000)
Fix PR44284. This is probably not valid assembly but we should not crash.

Reviewed By: luporl, #powerpc, steven.zhang

Differential Revision: https://reviews.llvm.org/D71443

(cherry picked from commit f99eedeb72644671cd584f48e4c136d47f6b0020)

Gbp-Pq: Name llvm9-D71443-PPC-MC-redef-symbol.patch

llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp
llvm/test/MC/PowerPC/ppc64-localentry-symbols.s

index 90c3c8d20edb148e45fbade8133b901ca0e25eec..71f926c265e38244e6368786622472cf22c44cdd 100644 (file)
@@ -196,7 +196,8 @@ public:
 
   void finish() override {
     for (auto *Sym : UpdateOther)
-      copyLocalEntry(Sym, Sym->getVariableValue());
+      if (Sym->isVariable())
+        copyLocalEntry(Sym, Sym->getVariableValue());
   }
 
 private:
index f1d5c5d0ab1ac0e92def148cce66befce4d27bc2..a663af57ad45ae3f1c17b1f4a58f4c18e1003966 100644 (file)
@@ -32,3 +32,8 @@ func:
   nop
   nop
   .localentry func, 8
+
+## PR44284 Don't crash if err is redefined after .set
+.set err, _err
+.globl err
+err: