cpp11-migrate: Add EnableHeaderModification flag

First step toward supporting header modifications: adding a flag that turns on
such modifications. Eventually header modifications will be on by default but
until all the kinks can be worked out, they must be explicitly enabled.

llvm-svn: 183444
This commit is contained in:
Edwin Vane 2013-06-06 20:32:29 +00:00
parent 32e3553f83
commit 622dacd669
2 changed files with 27 additions and 0 deletions

View File

@ -111,6 +111,15 @@ struct TransformOptions {
/// \brief Enable the use of performance timers.
bool EnableTiming;
/// \brief Allow changes to headers included from the main source file.
/// Transform sub-classes should use ModifiableHeaders to determine which
/// headers are modifiable and which are not.
bool EnableHeaderModifications;
/// \brief Contains information on which headers are safe to transform and
/// which aren't.
IncludeExcludeInfo ModifiableHeaders;
/// \brief Maximum allowed level of risk.
RiskLevel MaxRiskLevel;
};

View File

@ -79,6 +79,15 @@ ExcludeFromFile("exclude-from", cl::Hidden, cl::value_desc("filename"),
cl::desc("File containing a list of paths that can not be "
"transforms"));
// Header modifications will probably be always on eventually. For now, they
// need to be explicitly enabled.
static cl::opt<bool, /*ExternalStorage=*/true> EnableHeaderModifications(
"headers",
cl::Hidden, // Experimental feature for now.
cl::desc("Enable modifications to headers"),
cl::location(GlobalOptions.EnableHeaderModifications),
cl::init(false));
class EndSyntaxArgumentsAdjuster : public ArgumentsAdjuster {
CommandLineArguments Adjust(const CommandLineArguments &Args) {
CommandLineArguments AdjustedArgs = Args;
@ -113,6 +122,15 @@ int main(int argc, const char **argv) {
// against the default value when the command line option is not specified.
GlobalOptions.EnableTiming = (TimingDirectoryName != NoTiming);
// Populate the ModifiableHeaders structure if header modifications are
// enabled.
if (GlobalOptions.EnableHeaderModifications) {
GlobalOptions.ModifiableHeaders
.readListFromString(IncludePaths, ExcludePaths);
GlobalOptions.ModifiableHeaders
.readListFromFile(IncludeFromFile, ExcludeFromFile);
}
TransformManager.createSelectedTransforms(GlobalOptions);
if (TransformManager.begin() == TransformManager.end()) {