diff options
author | Eli Bendersky <eliben@google.com> | 2013-07-24 21:22:01 +0000 |
---|---|---|
committer | Eli Bendersky <eliben@google.com> | 2013-07-24 21:22:01 +0000 |
commit | c3496b0643a3bd0c5b6ceb1b450202a8325a3801 (patch) | |
tree | fb05ae2dd92a9f16838e1bcd581869f949478470 /clang/lib | |
parent | 7aa54577d1b3b70a9a56f552ac35ffc4819821c5 (diff) | |
download | bcm5719-llvm-c3496b0643a3bd0c5b6ceb1b450202a8325a3801.tar.gz bcm5719-llvm-c3496b0643a3bd0c5b6ceb1b450202a8325a3801.zip |
Partial revert of r185568.
r186899 and r187061 added a preferred way for some architectures not to get
intrinsic generation for math builtins. So the code changes in r185568 can
now be undone (the test remains).
llvm-svn: 187079
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/CodeGen/CGBuiltin.cpp | 19 | ||||
-rw-r--r-- | clang/lib/CodeGen/TargetInfo.cpp | 4 | ||||
-rw-r--r-- | clang/lib/CodeGen/TargetInfo.h | 4 |
3 files changed, 8 insertions, 19 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 1689c79a709..71664b8d3c0 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -1293,17 +1293,14 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD, case Builtin::BIpow: case Builtin::BIpowf: case Builtin::BIpowl: { - // Transform a call to pow* into a @llvm.pow.* intrinsic call, but only - // if the target agrees. - if (getTargetHooks().emitIntrinsicForPow()) { - if (!FD->hasAttr<ConstAttr>()) - break; - Value *Base = EmitScalarExpr(E->getArg(0)); - Value *Exponent = EmitScalarExpr(E->getArg(1)); - llvm::Type *ArgType = Base->getType(); - Value *F = CGM.getIntrinsic(Intrinsic::pow, ArgType); - return RValue::get(Builder.CreateCall2(F, Base, Exponent)); - } + // Transform a call to pow* into a @llvm.pow.* intrinsic call. + if (!FD->hasAttr<ConstAttr>()) + break; + Value *Base = EmitScalarExpr(E->getArg(0)); + Value *Exponent = EmitScalarExpr(E->getArg(1)); + llvm::Type *ArgType = Base->getType(); + Value *F = CGM.getIntrinsic(Intrinsic::pow, ArgType); + return RValue::get(Builder.CreateCall2(F, Base, Exponent)); break; } diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp index a8861cf4500..183aefe00cd 100644 --- a/clang/lib/CodeGen/TargetInfo.cpp +++ b/clang/lib/CodeGen/TargetInfo.cpp @@ -443,10 +443,6 @@ class PNaClTargetCodeGenInfo : public TargetCodeGenInfo { public: PNaClTargetCodeGenInfo(CodeGen::CodeGenTypes &CGT) : TargetCodeGenInfo(new PNaClABIInfo(CGT)) {} - - /// For PNaCl we don't want llvm.pow.* intrinsics to be emitted instead - /// of library function calls. - bool emitIntrinsicForPow() const { return false; } }; void PNaClABIInfo::computeInfo(CGFunctionInfo &FI) const { diff --git a/clang/lib/CodeGen/TargetInfo.h b/clang/lib/CodeGen/TargetInfo.h index 1be7f4dfa45..a7fb88649a3 100644 --- a/clang/lib/CodeGen/TargetInfo.h +++ b/clang/lib/CodeGen/TargetInfo.h @@ -74,10 +74,6 @@ namespace clang { /// through such registers. virtual bool extendPointerWithSExt() const { return false; } - /// Controls whether BIpow* emit an intrinsic call instead of a library - /// function call. - virtual bool emitIntrinsicForPow() const { return true; } - /// Determines the DWARF register number for the stack pointer, for /// exception-handling purposes. Implements __builtin_dwarf_sp_column. /// |