diff options
| author | Erich Keane <erich.keane@intel.com> | 2018-02-08 23:15:02 +0000 | 
|---|---|---|
| committer | Erich Keane <erich.keane@intel.com> | 2018-02-08 23:15:02 +0000 | 
| commit | d1d85f50d01a03740d2b2295c897a310f5d3d910 (patch) | |
| tree | abf532251978ae772c2f94d6bd772fe46fc150ea /clang/lib/Basic/Targets | |
| parent | 3ec1743d0d774cea88d5e9e07b100250c0e7f85c (diff) | |
| download | bcm5719-llvm-d1d85f50d01a03740d2b2295c897a310f5d3d910.tar.gz bcm5719-llvm-d1d85f50d01a03740d2b2295c897a310f5d3d910.zip | |
Add X86 Support to ValidCPUList (enabling march notes)
A followup to: https://reviews.llvm.org/D42978
This patch adds X86 and X86_64 support for
enabling the march notes.
Differential Revision: https://reviews.llvm.org/D43041
llvm-svn: 324674
Diffstat (limited to 'clang/lib/Basic/Targets')
| -rw-r--r-- | clang/lib/Basic/Targets/X86.cpp | 15 | ||||
| -rw-r--r-- | clang/lib/Basic/Targets/X86.h | 2 | 
2 files changed, 15 insertions, 2 deletions
| diff --git a/clang/lib/Basic/Targets/X86.cpp b/clang/lib/Basic/Targets/X86.cpp index 484a83a494e..5f9f6bb2f05 100644 --- a/clang/lib/Basic/Targets/X86.cpp +++ b/clang/lib/Basic/Targets/X86.cpp @@ -15,6 +15,7 @@  #include "clang/Basic/Builtins.h"  #include "clang/Basic/Diagnostic.h"  #include "clang/Basic/TargetBuiltins.h" +#include "llvm/ADT/StringExtras.h"  #include "llvm/ADT/StringRef.h"  #include "llvm/ADT/StringSwitch.h"  #include "llvm/Support/TargetParser.h" @@ -1648,8 +1649,6 @@ std::string X86TargetInfo::convertConstraint(const char *&Constraint) const {  bool X86TargetInfo::checkCPUKind(CPUKind Kind) const {    // Perform any per-CPU checks necessary to determine if this CPU is    // acceptable. -  // FIXME: This results in terrible diagnostics. Clang just says the CPU is -  // invalid without explaining *why*.    switch (Kind) {    case CK_Generic:      // No processor selected! @@ -1662,6 +1661,18 @@ bool X86TargetInfo::checkCPUKind(CPUKind Kind) const {    llvm_unreachable("Unhandled CPU kind");  } +void X86TargetInfo::fillValidCPUList(SmallVectorImpl<StringRef> &Values) const { +#define PROC(ENUM, STRING, IS64BIT)                                            \ +  if (IS64BIT || getTriple().getArch() == llvm::Triple::x86)                   \ +    Values.emplace_back(STRING); +  // Go through CPUKind checking to ensure that the alias is de-aliased and  +  // 64 bit-ness is checked. +#define PROC_ALIAS(ENUM, ALIAS)                                                \ +  if (checkCPUKind(getCPUKind(ALIAS)))                                         \ +    Values.emplace_back(ALIAS); +#include "clang/Basic/X86Target.def" +} +  X86TargetInfo::CPUKind X86TargetInfo::getCPUKind(StringRef CPU) const {    return llvm::StringSwitch<CPUKind>(CPU)  #define PROC(ENUM, STRING, IS64BIT) .Case(STRING, CK_##ENUM) diff --git a/clang/lib/Basic/Targets/X86.h b/clang/lib/Basic/Targets/X86.h index be831ba7e6f..b46778f3da8 100644 --- a/clang/lib/Basic/Targets/X86.h +++ b/clang/lib/Basic/Targets/X86.h @@ -264,6 +264,8 @@ public:      return checkCPUKind(getCPUKind(Name));    } +  void fillValidCPUList(SmallVectorImpl<StringRef> &Values) const override; +    bool setCPU(const std::string &Name) override {      return checkCPUKind(CPU = getCPUKind(Name));    } | 

