r245935 - Extract handling of user defined features into a function so we can
Eric Christopher via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 25 06:45:24 PDT 2015
Author: echristo
Date: Tue Aug 25 08:45:24 2015
New Revision: 245935
URL: http://llvm.org/viewvc/llvm-project?rev=245935&view=rev
Log:
Extract handling of user defined features into a function so we can
specialize it on the targets.
Modified:
cfe/trunk/include/clang/Basic/TargetInfo.h
cfe/trunk/lib/Basic/Targets.cpp
Modified: cfe/trunk/include/clang/Basic/TargetInfo.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetInfo.h?rev=245935&r1=245934&r2=245935&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/TargetInfo.h (original)
+++ cfe/trunk/include/clang/Basic/TargetInfo.h Tue Aug 25 08:45:24 2015
@@ -797,6 +797,22 @@ public:
Features[Name] = Enabled;
}
+ /// \brief Add user defined features to the feature set while
+ /// possibly diagnosing incompatibilities.
+ ///
+ /// \return False on error.
+ virtual bool handleUserFeatures(llvm::StringMap<bool> &Features,
+ std::vector<std::string> &UserFeatures,
+ DiagnosticsEngine &Diags) {
+ for (const auto &F : UserFeatures) {
+ const char *Name = F.c_str();
+ // Apply the feature via the target.
+ bool Enabled = Name[0] == '+';
+ setFeatureEnabled(Features, Name + 1, Enabled);
+ }
+ return true;
+ }
+
/// \brief Perform initialization based on the user configured
/// set of features (e.g., +sse4).
///
Modified: cfe/trunk/lib/Basic/Targets.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=245935&r1=245934&r2=245935&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/Targets.cpp (original)
+++ cfe/trunk/lib/Basic/Targets.cpp Tue Aug 25 08:45:24 2015
@@ -7565,12 +7565,8 @@ TargetInfo::CreateTargetInfo(Diagnostics
Target->initDefaultFeatures(Features);
// Apply the user specified deltas.
- for (const auto &F : Opts->FeaturesAsWritten) {
- const char *Name = F.c_str();
- // Apply the feature via the target.
- bool Enabled = Name[0] == '+';
- Target->setFeatureEnabled(Features, Name + 1, Enabled);
- }
+ if (!Target->handleUserFeatures(Features, Opts->FeaturesAsWritten, Diags))
+ return nullptr;
// Add the features to the compile options.
//
More information about the cfe-commits
mailing list