Small improvement to the recursion detection logic from the previous commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149175 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2012-01-28 06:22:14 +00:00
parent e71cc86ad1
commit 8b01c82f25
2 changed files with 7 additions and 1 deletions

View File

@ -1565,7 +1565,9 @@ static bool IsUsedIn(const MCSymbol *Sym, const MCExpr *Value) {
return false;
case MCExpr::SymbolRef: {
const MCSymbol &S = static_cast<const MCSymbolRefExpr*>(Value)->getSymbol();
return &S.AliasedSymbol() == Sym;
if (S.isVariable())
return IsUsedIn(Sym, S.getVariableValue());
return &S == Sym;
}
case MCExpr::Unary:
return IsUsedIn(Sym, static_cast<const MCUnaryExpr*>(Value)->getSubExpr());

View File

@ -21,3 +21,7 @@ t2_s0:
t4_s0 = t4_s1
t4_s1 = t4_s2
t4_s2 = t4_s0
// CHECK: Recursive use of 't5_s1'
t5_s0 = t5_s1 + 1
t5_s1 = t5_s0