summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp
diff options
context:
space:
mode:
authorEdwin Vane <edwin.vane@intel.com>2013-09-03 13:16:02 +0000
committerEdwin Vane <edwin.vane@intel.com>2013-09-03 13:16:02 +0000
commit147984a8adf15183de3f3a25f74b7b3620e2a1a6 (patch)
treebf419f9698f16461fb7d4160a9a6175c5d5d6383 /clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp
parent249c7fb10eb837cc78a6e6d26aef9ad802111440 (diff)
downloadbcm5719-llvm-147984a8adf15183de3f3a25f74b7b3620e2a1a6.tar.gz
bcm5719-llvm-147984a8adf15183de3f3a25f74b7b3620e2a1a6.zip
cpp11-migrate: Refactor for driver model of operation
Re-commit of r189691 and r189689 now with a proper autoconf fix. Massive simplification of how replacements and file overrides are handled by the migrator: * Sources and headers are all treated the same. * All replacements for a given translation unit are stored in the same TranslationUnitReplacements structure. * Change tracking is updated only from main file; no need for propagating "is tracking" flag around. * Transform base class no longer responsible for applying replacements. They are simply stored and main() looks after deduplication and application. * Renamed -yaml-only to -serialize-replacements. Same restrictions apply: Can only request one transform. New restriction: formatting cannot also be turned on since it's basically a transform. * If -serialize-replacements is requested, changes to files will not be applied on disk. * Changed behaviour of function generating names for serialized replacements: Only the main source file goes into the name of the file since a file may contain changes for multiple different files. * Updated HeaderReplacements LIT test for new serialization behaviour. * Replaced old test that ensures replacements are not serialized if -serialize-replacements is not provided. New version ensures changes are made directly to all files in the translation unit. * Updated unit tests. * Due to major simplification of structures in FileOverrides.h, the FileOverridesTest is quite a bit simpler now. llvm-svn: 189798
Diffstat (limited to 'clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp')
-rw-r--r--clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp b/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp
index da9d7b56557..0ba49d8ad4f 100644
--- a/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp
+++ b/clang-tools-extra/cpp11-migrate/LoopConvert/LoopActions.cpp
@@ -815,9 +815,9 @@ void LoopFixer::doConversion(ASTContext *Context,
// the declaration of the alias variable. This is probably a bug.
ReplacementText = ";";
- Replace->insert(Replacement(Context->getSourceManager(),
- CharSourceRange::getTokenRange(ReplaceRange),
- ReplacementText));
+ Owner.addReplacementForCurrentTU(Replacement(
+ Context->getSourceManager(),
+ CharSourceRange::getTokenRange(ReplaceRange), ReplacementText));
// No further replacements are made to the loop, since the iterator or index
// was used exactly once - in the initialization of AliasVar.
} else {
@@ -830,10 +830,9 @@ void LoopFixer::doConversion(ASTContext *Context,
I != E; ++I) {
std::string ReplaceText = I->IsArrow ? VarName + "." : VarName;
ReplacedVarRanges->insert(std::make_pair(TheLoop, IndexVar));
- Replace->insert(
+ Owner.addReplacementForCurrentTU(
Replacement(Context->getSourceManager(),
- CharSourceRange::getTokenRange(I->Range),
- ReplaceText));
+ CharSourceRange::getTokenRange(I->Range), ReplaceText));
}
}
@@ -862,9 +861,9 @@ void LoopFixer::doConversion(ASTContext *Context,
std::string TypeString = AutoRefType.getAsString();
std::string Range = ("(" + TypeString + " " + VarName + " : "
+ MaybeDereference + ContainerString + ")").str();
- Replace->insert(Replacement(Context->getSourceManager(),
- CharSourceRange::getTokenRange(ParenRange),
- Range));
+ Owner.addReplacementForCurrentTU(
+ Replacement(Context->getSourceManager(),
+ CharSourceRange::getTokenRange(ParenRange), Range));
GeneratedDecls->insert(make_pair(TheLoop, VarName));
}
OpenPOWER on IntegriCloud