summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp
diff options
context:
space:
mode:
authorEdwin Vane <edwin.vane@intel.com>2013-03-04 16:35:04 +0000
committerEdwin Vane <edwin.vane@intel.com>2013-03-04 16:35:04 +0000
commit2f43085b469c739ecd0a98c720aba254ceda018c (patch)
tree6e595a90cbfb8fc193becf12f870517915c36e35 /clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp
parent973c9420e14ab4aa815bdebc33451ae88395c6e8 (diff)
downloadbcm5719-llvm-2f43085b469c739ecd0a98c720aba254ceda018c.tar.gz
bcm5719-llvm-2f43085b469c739ecd0a98c720aba254ceda018c.zip
Properly identify 'this' as range-based for container
The Loop-Convert transform was mistransforming loops using 'this' implicitly. Fixed and added tests. Fixes PR15411. llvm-svn: 176436
Diffstat (limited to 'clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp')
-rw-r--r--clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp b/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp
index ed3bfc71bec..1a700706f75 100644
--- a/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp
+++ b/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp
@@ -871,9 +871,15 @@ StringRef LoopFixer::checkDeferralsAndRejections(ASTContext *Context,
return "";
}
- StringRef ContainerString =
- getStringFromRange(Context->getSourceManager(), Context->getLangOpts(),
- ContainerExpr->getSourceRange());
+ StringRef ContainerString;
+ if (isa<CXXThisExpr>(ContainerExpr->IgnoreParenImpCasts())) {
+ ContainerString = "this";
+ } else {
+ ContainerString = getStringFromRange(Context->getSourceManager(),
+ Context->getLangOpts(),
+ ContainerExpr->getSourceRange());
+ }
+
// In case someone is using an evil macro, reject this change.
if (ContainerString.empty())
++*RejectedChanges;
OpenPOWER on IntegriCloud