summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/cpp11-migrate/Core/Transform.cpp
diff options
context:
space:
mode:
authorGuillaume Papin <guillaume.papin@epitech.eu>2013-07-29 15:58:47 +0000
committerGuillaume Papin <guillaume.papin@epitech.eu>2013-07-29 15:58:47 +0000
commita3eede2cc2673c6db8f0ef6a05e5e424e07dbacf (patch)
tree7982da794d40f792d76e61946b6652341dca36f0 /clang-tools-extra/cpp11-migrate/Core/Transform.cpp
parentee30546c007d26d9c0c6f15b0e291a8bb0e651f9 (diff)
downloadbcm5719-llvm-a3eede2cc2673c6db8f0ef6a05e5e424e07dbacf.tar.gz
bcm5719-llvm-a3eede2cc2673c6db8f0ef6a05e5e424e07dbacf.zip
cpp11-migrate: Add -for-compilers command line switch.
This change add a new option command line option -for-compilers that allows the user to enable multiple transforms automatically. Another difference is that now all transforms are enabled by default. llvm-svn: 187360
Diffstat (limited to 'clang-tools-extra/cpp11-migrate/Core/Transform.cpp')
-rw-r--r--clang-tools-extra/cpp11-migrate/Core/Transform.cpp33
1 files changed, 33 insertions, 0 deletions
diff --git a/clang-tools-extra/cpp11-migrate/Core/Transform.cpp b/clang-tools-extra/cpp11-migrate/Core/Transform.cpp
index ac3375316bb..92520638502 100644
--- a/clang-tools-extra/cpp11-migrate/Core/Transform.cpp
+++ b/clang-tools-extra/cpp11-migrate/Core/Transform.cpp
@@ -20,6 +20,7 @@
#include "clang/Basic/SourceManager.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Tooling/Tooling.h"
+#include "llvm/ADT/STLExtras.h"
using namespace clang;
@@ -132,4 +133,36 @@ FrontendActionFactory *Transform::createActionFactory(MatchFinder &Finder) {
return new ActionFactory(Finder, /*Owner=*/ *this);
}
+Version Version::getFromString(llvm::StringRef VersionStr) {
+ llvm::StringRef MajorStr, MinorStr;
+ Version V;
+
+ llvm::tie(MajorStr, MinorStr) = VersionStr.split('.');
+ if (!MinorStr.empty()) {
+ llvm::StringRef Ignore;
+ llvm::tie(MinorStr, Ignore) = MinorStr.split('.');
+ if (MinorStr.getAsInteger(10, V.Minor))
+ return Version();
+ }
+ if (MajorStr.getAsInteger(10, V.Major))
+ return Version();
+ return V;
+}
+
TransformFactory::~TransformFactory() {}
+
+namespace {
+bool versionSupported(Version Required, Version AvailableSince) {
+ // null version, means no requirements, means supported
+ if (Required.isNull())
+ return true;
+ return Required >= AvailableSince;
+}
+} // end anonymous namespace
+
+bool TransformFactory::supportsCompilers(CompilerVersions Required) const {
+ return versionSupported(Required.Clang, Since.Clang) &&
+ versionSupported(Required.Gcc, Since.Gcc) &&
+ versionSupported(Required.Icc, Since.Icc) &&
+ versionSupported(Required.Msvc, Since.Msvc);
+}
OpenPOWER on IntegriCloud