In preparation for fixing PR 6884, rework CFGElement to have getAs<> return pointers instead of fresh CFGElements.

- Also, consoldiate getDtorKind() and getKind() into one "kind".
- Add empty getDestructorDecl() method to CFGImplicitDtor.

llvm-svn: 126738
This commit is contained in:
Ted Kremenek
2011-03-01 03:15:10 +00:00
parent 9720642c68
commit 96a7a59119
10 changed files with 158 additions and 140 deletions

View File

@@ -31,11 +31,11 @@ static SourceLocation GetUnreachableLoc(const CFGBlock &b, SourceRange &R1,
R1 = R2 = SourceRange();
if (sn < b.size()) {
CFGStmt CS = b[sn].getAs<CFGStmt>();
const CFGStmt *CS = b[sn].getAs<CFGStmt>();
if (!CS)
return SourceLocation();
S = CS.getStmt();
S = CS->getStmt();
} else if (b.getTerminator())
S = b.getTerminator();
else
@@ -49,7 +49,7 @@ static SourceLocation GetUnreachableLoc(const CFGBlock &b, SourceRange &R1,
const BinaryOperator *BO = cast<BinaryOperator>(S);
if (BO->getOpcode() == BO_Comma) {
if (sn+1 < b.size())
return b[sn+1].getAs<CFGStmt>().getStmt()->getLocStart();
return b[sn+1].getAs<CFGStmt>()->getStmt()->getLocStart();
const CFGBlock *n = &b;
while (1) {
if (n->getTerminator())
@@ -60,7 +60,7 @@ static SourceLocation GetUnreachableLoc(const CFGBlock &b, SourceRange &R1,
if (n->pred_size() != 1)
return SourceLocation();
if (!n->empty())
return n[0][0].getAs<CFGStmt>().getStmt()->getLocStart();
return n[0][0].getAs<CFGStmt>()->getStmt()->getLocStart();
}
}
R1 = BO->getLHS()->getSourceRange();