diff options
-rw-r--r-- | include/clang/Basic/TargetInfo.h | 4 | ||||
-rw-r--r-- | lib/Basic/Targets.cpp | 36 | ||||
-rw-r--r-- | lib/CodeGen/CGBuiltin.cpp | 18 |
3 files changed, 21 insertions, 37 deletions
diff --git a/include/clang/Basic/TargetInfo.h b/include/clang/Basic/TargetInfo.h index 000e4f7e4a..f48d1a3a60 100644 --- a/include/clang/Basic/TargetInfo.h +++ b/include/clang/Basic/TargetInfo.h @@ -284,10 +284,6 @@ public: virtual const char *getClobbers() const = 0; - /// getTargetPrefix - Return the target prefix used for identifying - /// llvm intrinsics. - virtual const char *getTargetPrefix() const = 0; - /// getTriple - Return the target triple of the primary target. const llvm::Triple &getTriple() const { return Triple; diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 4b8abc457c..305ca2d8d2 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -377,9 +377,6 @@ public: " void* reg_save_area;" "} __builtin_va_list[1];";*/ } - virtual const char *getTargetPrefix() const { - return "ppc"; - } virtual void getGCCRegNames(const char * const *&Names, unsigned &NumNames) const; virtual void getGCCRegAliases(const GCCRegAlias *&Aliases, @@ -582,9 +579,6 @@ public: Records = BuiltinInfo; NumRecords = clang::X86::LastTSBuiltin-Builtin::FirstTSBuiltin; } - virtual const char *getTargetPrefix() const { - return "x86"; - } virtual void getGCCRegNames(const char * const *&Names, unsigned &NumNames) const { Names = GCCRegNames; @@ -1051,9 +1045,6 @@ public: virtual const char *getVAListDeclaration() const { return "typedef char* __builtin_va_list;"; } - virtual const char *getTargetPrefix() const { - return "arm"; - } virtual void getGCCRegNames(const char * const *&Names, unsigned &NumNames) const { // FIXME: Implement. @@ -1127,9 +1118,6 @@ public: virtual const char *getVAListDeclaration() const { return "typedef void* __builtin_va_list;"; } - virtual const char *getTargetPrefix() const { - return "sparc"; - } virtual void getGCCRegNames(const char * const *&Names, unsigned &NumNames) const; virtual void getGCCRegAliases(const GCCRegAlias *&Aliases, @@ -1258,9 +1246,12 @@ namespace { } virtual void getTargetBuiltins(const Builtin::Info *&Records, unsigned &NumRecords) const {} - virtual const char *getVAListDeclaration() const { return "";} - virtual const char *getClobbers() const {return "";} - virtual const char *getTargetPrefix() const {return "pic16";} + virtual const char *getVAListDeclaration() const { + return ""; + } + virtual const char *getClobbers() const { + return ""; + } virtual void getGCCRegNames(const char * const *&Names, unsigned &NumNames) const {} virtual bool validateAsmConstraint(const char *&Name, @@ -1305,9 +1296,6 @@ namespace { Records = 0; NumRecords = 0; } - virtual const char *getTargetPrefix() const { - return "msp430"; - } virtual void getGCCRegNames(const char * const *&Names, unsigned &NumNames) const; virtual void getGCCRegAliases(const GCCRegAlias *&Aliases, @@ -1366,9 +1354,6 @@ namespace { Records = 0; NumRecords = 0; } - virtual const char *getTargetPrefix() const { - return "s390x"; - } virtual void getDefaultLangOptions(LangOptions &Opts) { TargetInfo::getDefaultLangOptions(Opts); @@ -1439,10 +1424,6 @@ namespace { NumRecords = 0; } - virtual const char *getTargetPrefix() const { - return "bfin"; - } - virtual void getGCCRegNames(const char * const *&Names, unsigned &NumNames) const; @@ -1536,11 +1517,12 @@ namespace { } virtual void getTargetBuiltins(const Builtin::Info *&Records, unsigned &NumRecords) const {} - virtual const char *getClobbers() const {return "";} + virtual const char *getClobbers() const { + return ""; + } virtual const char *getVAListDeclaration() const { return "typedef void* __builtin_va_list;"; } - virtual const char *getTargetPrefix() const {return "tce";} virtual void getGCCRegNames(const char * const *&Names, unsigned &NumNames) const {} virtual bool validateAsmConstraint(const char *&Name, diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index 8f5da42b41..9ba5f71f3c 100644 --- a/lib/CodeGen/CGBuiltin.cpp +++ b/lib/CodeGen/CGBuiltin.cpp @@ -557,8 +557,10 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD, // See if we have a target specific intrinsic. const char *Name = getContext().BuiltinInfo.GetName(BuiltinID); - Intrinsic::ID IntrinsicID = - Intrinsic::getIntrinsicForGCCBuiltin(Target.getTargetPrefix(), Name); + Intrinsic::ID IntrinsicID = Intrinsic::not_intrinsic; + if (const char *Prefix = + llvm::Triple::getArchTypePrefix(Target.getTriple().getArch())) + IntrinsicID = Intrinsic::getIntrinsicForGCCBuiltin(Prefix, Name); if (IntrinsicID != Intrinsic::not_intrinsic) { SmallVector<Value*, 16> Args; @@ -610,12 +612,16 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD, Value *CodeGenFunction::EmitTargetBuiltinExpr(unsigned BuiltinID, const CallExpr *E) { - const char *TargetPrefix = Target.getTargetPrefix(); - if (strcmp(TargetPrefix, "x86") == 0) + switch (Target.getTriple().getArch()) { + case llvm::Triple::x86: + case llvm::Triple::x86_64: return EmitX86BuiltinExpr(BuiltinID, E); - else if (strcmp(TargetPrefix, "ppc") == 0) + case llvm::Triple::ppc: + case llvm::Triple::ppc64: return EmitPPCBuiltinExpr(BuiltinID, E); - return 0; + default: + return 0; + } } Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, |