[mips] [IAS] Allow .set assignments for already defined symbols.
authorToma Tabacu <toma.tabacu@imgtec.com>
Tue, 7 Apr 2015 13:59:39 +0000 (13:59 +0000)
committerToma Tabacu <toma.tabacu@imgtec.com>
Tue, 7 Apr 2015 13:59:39 +0000 (13:59 +0000)
Summary:
This is not possible when using the IAS for MIPS, but it is possible when using the IAS for other architectures and when using GAS for MIPS.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D8578

llvm-svn: 234316

llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
llvm/test/MC/Mips/set-defined-symbol.s [new file with mode: 0644]

index 80cd26f..fae31d0 100644 (file)
@@ -3579,11 +3579,7 @@ bool MipsAsmParser::parseSetAssignment() {
   if (Parser.parseExpression(Value))
     return reportParseError("expected valid expression after comma");
 
-  // Check if the Name already exists as a symbol.
-  MCSymbol *Sym = getContext().LookupSymbol(Name);
-  if (Sym)
-    return reportParseError("symbol already defined");
-  Sym = getContext().GetOrCreateSymbol(Name);
+  MCSymbol *Sym = getContext().GetOrCreateSymbol(Name);
   Sym->setVariableValue(Value);
 
   return false;
diff --git a/llvm/test/MC/Mips/set-defined-symbol.s b/llvm/test/MC/Mips/set-defined-symbol.s
new file mode 100644 (file)
index 0000000..54db45d
--- /dev/null
@@ -0,0 +1,18 @@
+# RUN: llvm-mc %s -arch=mips -mcpu=mips32 -filetype=obj -o - | \
+# RUN:   llvm-objdump -d -r -arch=mips - | FileCheck %s
+
+  .global foo
+  .weak bar
+  .set bar, b
+  .set foo, b
+  .set foo, a
+a:
+  nop
+# CHECK-NOT: a:
+# CHECK: foo:
+
+b:
+  nop
+# CHECK-NOT: b:
+# CHECK-NOT: foo:
+# CHECK: bar: