mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-15 21:24:00 +00:00
Anonymous definitions in foreach blocks triggered a 'def already exists'
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210526 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -360,9 +360,14 @@ bool TGParser::ProcessForeachDefs(Record *CurRec, SMLoc Loc, IterSet &IterVals){
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (Records.getDef(IterRec->getNameInitAsString())) {
|
if (Records.getDef(IterRec->getNameInitAsString())) {
|
||||||
|
// If this record is anonymous, it's no problem, just generate a new name
|
||||||
|
if (IterRec->isAnonymous())
|
||||||
|
IterRec->setName(GetNewAnonymousName());
|
||||||
|
else {
|
||||||
Error(Loc, "def already exists: " + IterRec->getNameInitAsString());
|
Error(Loc, "def already exists: " + IterRec->getNameInitAsString());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Records.addDef(IterRec);
|
Records.addDef(IterRec);
|
||||||
IterRec->resolveReferences();
|
IterRec->resolveReferences();
|
||||||
|
@ -51,8 +51,10 @@ foreach i = [0, 1, 2, 3, 4, 5, 6, 7] in
|
|||||||
// CHECK: string Name = "R7";
|
// CHECK: string Name = "R7";
|
||||||
// CHECK: int Index = 7;
|
// CHECK: int Index = 7;
|
||||||
|
|
||||||
foreach i = {0-3,9-7} in
|
foreach i = {0-3,9-7} in {
|
||||||
def S#i : Register<"Q"#i, i>;
|
def S#i : Register<"Q"#i, i>;
|
||||||
|
def : Register<"T"#i, i>;
|
||||||
|
}
|
||||||
|
|
||||||
// CHECK: def S0
|
// CHECK: def S0
|
||||||
// CHECK: def S1
|
// CHECK: def S1
|
||||||
@ -61,3 +63,25 @@ foreach i = {0-3,9-7} in
|
|||||||
// CHECK: def S7
|
// CHECK: def S7
|
||||||
// CHECK: def S8
|
// CHECK: def S8
|
||||||
// CHECK: def S9
|
// CHECK: def S9
|
||||||
|
|
||||||
|
// CHECK: def
|
||||||
|
// CHECK: string Name = "T0";
|
||||||
|
|
||||||
|
// CHECK: def
|
||||||
|
// CHECK: string Name = "T1";
|
||||||
|
|
||||||
|
// CHECK: def
|
||||||
|
// CHECK: string Name = "T2";
|
||||||
|
|
||||||
|
// CHECK: def
|
||||||
|
// CHECK: string Name = "T3";
|
||||||
|
|
||||||
|
// CHECK: def
|
||||||
|
// CHECK: string Name = "T9";
|
||||||
|
|
||||||
|
// CHECK: def
|
||||||
|
// CHECK: string Name = "T8";
|
||||||
|
|
||||||
|
// CHECK: def
|
||||||
|
// CHECK: string Name = "T7";
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user