diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-09-01 20:53:18 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-09-01 20:53:18 +0000 |
commit | cbbc0141f6c1bcae309ebaaa100cfd03c4386c52 (patch) | |
tree | fdd8ad0207abbf08072378ef75b1626b6d6a4f71 /clang/lib/ARCMigrate/Transforms.cpp | |
parent | 7018d5bcfb48502c5ab7d9bc89eb3d41dd8fb76d (diff) | |
download | bcm5719-llvm-cbbc0141f6c1bcae309ebaaa100cfd03c4386c52.tar.gz bcm5719-llvm-cbbc0141f6c1bcae309ebaaa100cfd03c4386c52.zip |
[arcmt] Fix test/ARCMT/remove-statements.m regression due to
Objective-C method buffering(rdar://10056942)
Turned out the same issue existed for C++ inline methods.
llvm-svn: 138960
Diffstat (limited to 'clang/lib/ARCMigrate/Transforms.cpp')
-rw-r--r-- | clang/lib/ARCMigrate/Transforms.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/clang/lib/ARCMigrate/Transforms.cpp b/clang/lib/ARCMigrate/Transforms.cpp index 1d0e26153c4..01af5f69578 100644 --- a/clang/lib/ARCMigrate/Transforms.cpp +++ b/clang/lib/ARCMigrate/Transforms.cpp @@ -91,6 +91,18 @@ bool trans::canApplyWeak(ASTContext &Ctx, QualType type) { /// source location will be invalid. SourceLocation trans::findLocationAfterSemi(SourceLocation loc, ASTContext &Ctx) { + SourceLocation SemiLoc = findSemiAfterLocation(loc, Ctx); + if (SemiLoc.isInvalid()) + return SourceLocation(); + return SemiLoc.getFileLocWithOffset(1); +} + +/// \brief \arg Loc is the end of a statement range. This returns the location +/// of the semicolon following the statement. +/// If no semicolon is found or the location is inside a macro, the returned +/// source location will be invalid. +SourceLocation trans::findSemiAfterLocation(SourceLocation loc, + ASTContext &Ctx) { SourceManager &SM = Ctx.getSourceManager(); if (loc.isMacroID()) { if (!Lexer::isAtEndOfMacroExpansion(loc, SM, Ctx.getLangOptions())) @@ -119,7 +131,7 @@ SourceLocation trans::findLocationAfterSemi(SourceLocation loc, if (tok.isNot(tok::semi)) return SourceLocation(); - return tok.getLocation().getFileLocWithOffset(1); + return tok.getLocation(); } bool trans::hasSideEffects(Expr *E, ASTContext &Ctx) { |