Skip to content

Commit abcd19e

Browse files
committed
MIPS: Register .set created symbols
When the `.set` directive is used to equate a symbol (`.set symbol, expression`), ensure the created symbol is registered in the symbol table.
1 parent 0259541 commit abcd19e

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7507,7 +7507,7 @@ bool MipsAsmParser::parseSetAssignment() {
75077507
if (MCParserUtils::parseAssignmentExpression(Name, /* allow_redef */ true,
75087508
Parser, Sym, Value))
75097509
return true;
7510-
Sym->setVariableValue(Value);
7510+
getStreamer().emitAssignment(Sym, Value);
75117511

75127512
return false;
75137513
}

llvm/test/MC/Mips/set-defined-symbol.s

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,7 @@ b:
1616
# CHECK-NOT: b:
1717
# CHECK-NOT: foo:
1818
# CHECK: <bar>:
19+
20+
# CHECK: <dot>:
21+
.set dot, .
22+
nop

llvm/test/MC/Mips/set-sym-recursive.s

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
# RUN: not llvm-mc -filetype=obj -triple=mips64 %s -o /dev/null 2>&1 | FileCheck %s --implicit-check-not=error:
22

3-
.set B, B + 1
4-
53
# CHECK: :[[@LINE+1]]:11: error: cyclic dependency detected for symbol 'A'
64
.set A, A + 1
75
# CHECK: :[[@LINE+1]]:7: error: expected relocatable expression
86
.word A
97
.word A
8+
9+
# CHECK: :[[@LINE+2]]:11: error: cyclic dependency detected for symbol 'B'
10+
# CHECK: :[[@LINE+1]]:11: error: expression could not be evaluated
11+
.set B, B + 1

0 commit comments

Comments
 (0)