mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 23:32:27 +00:00
llvm-mc: When handling a .set, make sure to print subsequent references to the
symbol as the symbol name itself, not the expression it was defined to. These have different semantics due to the quirky .set behavior (which absolutizes an expression that would otherwise be treated as a relocation). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79025 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9b9014f2a0
commit
b2d0b6b8c7
@ -136,12 +136,19 @@ void MCAsmStreamer::EmitAssignment(MCSymbol *Symbol, const MCValue &Value,
|
||||
|
||||
if (MakeAbsolute) {
|
||||
OS << ".set " << Symbol << ", " << Value << '\n';
|
||||
|
||||
// HACK: If the value isn't already absolute, set the symbol value to
|
||||
// itself, we want to use the .set absolute value, not the actual
|
||||
// expression.
|
||||
if (!Value.isAbsolute())
|
||||
getContext().SetSymbolValue(Symbol, MCValue::get(Symbol));
|
||||
else
|
||||
getContext().SetSymbolValue(Symbol, Value);
|
||||
} else {
|
||||
OS << Symbol << " = " << Value << '\n';
|
||||
}
|
||||
|
||||
getContext().SetSymbolValue(Symbol, Value);
|
||||
}
|
||||
}
|
||||
|
||||
void MCAsmStreamer::EmitSymbolAttribute(MCSymbol *Symbol,
|
||||
SymbolAttr Attribute) {
|
||||
|
@ -23,9 +23,9 @@ foo:
|
||||
// CHECK: addl $10, %eax
|
||||
addl "b$c", %eax
|
||||
|
||||
|
||||
// CHECK: set "a 0", 11
|
||||
.set "a 0", 11
|
||||
|
||||
// CHECK: .long 11
|
||||
.long "a 0"
|
||||
|
||||
@ -49,3 +49,9 @@ foo:
|
||||
|
||||
// CHECK: .lsym "a 8",1
|
||||
.lsym "a 8", 1
|
||||
|
||||
// CHECK: set "a 9", a - b
|
||||
.set "a 9", a - b
|
||||
|
||||
// CHECK: .long "a 9"
|
||||
.long "a 9"
|
||||
|
Loading…
x
Reference in New Issue
Block a user