diff options
| author | Alexander Ivchenko <alexander.ivchenko@intel.com> | 2018-05-18 11:56:21 +0000 |
|---|---|---|
| committer | Alexander Ivchenko <alexander.ivchenko@intel.com> | 2018-05-18 11:56:21 +0000 |
| commit | 0fb8c877c4a3f4fd74e1d3141b09cd22041f0291 (patch) | |
| tree | 2796b76ffcc5fbffc4bba741bef663f85fe85b7d /clang/lib/Basic/Targets | |
| parent | de54c058a68955c71e8040bffceeceed2816c2e5 (diff) | |
| download | bcm5719-llvm-0fb8c877c4a3f4fd74e1d3141b09cd22041f0291.tar.gz bcm5719-llvm-0fb8c877c4a3f4fd74e1d3141b09cd22041f0291.zip | |
This patch aims to match the changes introduced
in gcc by https://gcc.gnu.org/ml/gcc-cvs/2018-04/msg00534.html.
The -mibt feature flag is being removed, and the -fcf-protection
option now also defines a CET macro and causes errors when used
on non-X86 targets, while X86 targets no longer check for -mibt
and -mshstk to determine if -fcf-protection is supported. -mshstk
is now used only to determine availability of shadow stack intrinsics.
Comes with an LLVM patch (D46882).
Patch by mike.dvoretsky
Differential Revision: https://reviews.llvm.org/D46881
llvm-svn: 332704
Diffstat (limited to 'clang/lib/Basic/Targets')
| -rw-r--r-- | clang/lib/Basic/Targets/X86.cpp | 25 | ||||
| -rw-r--r-- | clang/lib/Basic/Targets/X86.h | 10 |
2 files changed, 7 insertions, 28 deletions
diff --git a/clang/lib/Basic/Targets/X86.cpp b/clang/lib/Basic/Targets/X86.cpp index 41c4179ec64..1f8de5b599b 100644 --- a/clang/lib/Basic/Targets/X86.cpp +++ b/clang/lib/Basic/Targets/X86.cpp @@ -102,26 +102,6 @@ bool X86TargetInfo::setFPMath(StringRef Name) { return false; } -bool X86TargetInfo::checkCFProtectionReturnSupported( - DiagnosticsEngine &Diags) const { - if (HasSHSTK) - return true; - - Diags.Report(diag::err_opt_not_valid_without_opt) << "cf-protection=return" - << "-mshstk"; - return false; -} - -bool X86TargetInfo::checkCFProtectionBranchSupported( - DiagnosticsEngine &Diags) const { - if (HasIBT) - return true; - - Diags.Report(diag::err_opt_not_valid_without_opt) << "cf-protection=branch" - << "-mibt"; - return false; -} - bool X86TargetInfo::initFeatureMap( llvm::StringMap<bool> &Features, DiagnosticsEngine &Diags, StringRef CPU, const std::vector<std::string> &FeaturesVec) const { @@ -781,8 +761,6 @@ bool X86TargetInfo::handleTargetFeatures(std::vector<std::string> &Features, HasMPX = true; } else if (Feature == "+shstk") { HasSHSTK = true; - } else if (Feature == "+ibt") { - HasIBT = true; } else if (Feature == "+movbe") { HasMOVBE = true; } else if (Feature == "+sgx") { @@ -1175,8 +1153,6 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__MPX__"); if (HasSHSTK) Builder.defineMacro("__SHSTK__"); - if (HasIBT) - Builder.defineMacro("__IBT__"); if (HasSGX) Builder.defineMacro("__SGX__"); if (HasPREFETCHWT1) @@ -1394,7 +1370,6 @@ bool X86TargetInfo::hasFeature(StringRef Feature) const { .Case("fsgsbase", HasFSGSBASE) .Case("fxsr", HasFXSR) .Case("gfni", HasGFNI) - .Case("ibt", HasIBT) .Case("lwp", HasLWP) .Case("lzcnt", HasLZCNT) .Case("mm3dnow", MMX3DNowLevel >= AMD3DNow) diff --git a/clang/lib/Basic/Targets/X86.h b/clang/lib/Basic/Targets/X86.h index c995ec1f61f..2db115cd11e 100644 --- a/clang/lib/Basic/Targets/X86.h +++ b/clang/lib/Basic/Targets/X86.h @@ -81,7 +81,6 @@ class LLVM_LIBRARY_VISIBILITY X86TargetInfo : public TargetInfo { bool HasSHA = false; bool HasMPX = false; bool HasSHSTK = false; - bool HasIBT = false; bool HasSGX = false; bool HasCX16 = false; bool HasFXSR = false; @@ -171,10 +170,15 @@ public: bool validateInputSize(StringRef Constraint, unsigned Size) const override; virtual bool - checkCFProtectionReturnSupported(DiagnosticsEngine &Diags) const override; + checkCFProtectionReturnSupported(DiagnosticsEngine &Diags) const override { + return true; + }; virtual bool - checkCFProtectionBranchSupported(DiagnosticsEngine &Diags) const override; + checkCFProtectionBranchSupported(DiagnosticsEngine &Diags) const override { + return true; + }; + virtual bool validateOperandSize(StringRef Constraint, unsigned Size) const; |

