summaryrefslogtreecommitdiffstats
path: root/clang/lib/ARCMigrate/Transforms.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-09-01 20:53:18 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-09-01 20:53:18 +0000
commitcbbc0141f6c1bcae309ebaaa100cfd03c4386c52 (patch)
treefdd8ad0207abbf08072378ef75b1626b6d6a4f71 /clang/lib/ARCMigrate/Transforms.cpp
parent7018d5bcfb48502c5ab7d9bc89eb3d41dd8fb76d (diff)
downloadbcm5719-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.cpp14
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) {
OpenPOWER on IntegriCloud