mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Assembler should accept redefinitions of unused variable symbols.
rdar://11027851 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153137 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
93a1a0dbda
commit
48c9533181
@ -1629,6 +1629,8 @@ bool AsmParser::ParseAssignment(StringRef Name, bool allow_redef) {
|
||||
return Error(EqualLoc, "Recursive use of '" + Name + "'");
|
||||
else if (Sym->isUndefined() && !Sym->isUsed() && !Sym->isVariable())
|
||||
; // Allow redefinitions of undefined symbols only used in directives.
|
||||
else if (Sym->isVariable() && !Sym->isUsed() && allow_redef)
|
||||
; // Allow redefinitions of variables that haven't yet been used.
|
||||
else if (!Sym->isUndefined() && (!Sym->isVariable() || !allow_redef))
|
||||
return Error(EqualLoc, "redefinition of '" + Name + "'");
|
||||
else if (!Sym->isVariable())
|
||||
|
@ -54,8 +54,6 @@ const MCSymbol &MCSymbol::AliasedSymbol() const {
|
||||
void MCSymbol::setVariableValue(const MCExpr *Value) {
|
||||
assert(!IsUsed && "Cannot set a variable that has already been used.");
|
||||
assert(Value && "Invalid variable value!");
|
||||
assert((isUndefined() || (isAbsolute() && isa<MCConstantExpr>(Value))) &&
|
||||
"Invalid redefinition!");
|
||||
this->Value = Value;
|
||||
|
||||
// Variables should always be marked as in the same "section" as the value.
|
||||
|
@ -13,6 +13,7 @@ t2_s0:
|
||||
t2_s0 = 2
|
||||
|
||||
t3_s0 = t2_s0 + 1
|
||||
.long t3_s0
|
||||
// CHECK: invalid reassignment of non-absolute variable 't3_s0'
|
||||
t3_s0 = 1
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user