summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2008-10-10 00:24:54 +0000
committerDaniel Dunbar <daniel@zuster.org>2008-10-10 00:24:54 +0000
commiteca513d945cd04384b1caaedee90ec97dcb7dba8 (patch)
treee741a0ac9c126642590f54d42449e26d472ab6c1 /clang/lib/CodeGen
parentfaa4f50b7106cfb9dcda32d0cf97b63c46a77a10 (diff)
downloadbcm5719-llvm-eca513d945cd04384b1caaedee90ec97dcb7dba8.tar.gz
bcm5719-llvm-eca513d945cd04384b1caaedee90ec97dcb7dba8.zip
Lift EmitTargetBuiltinExpr out of EmitBuiltinExpr.
llvm-svn: 57335
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/CGBuiltin.cpp19
-rw-r--r--clang/lib/CodeGen/CodeGenFunction.h4
2 files changed, 15 insertions, 8 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp
index 29d77b6e82b..aa9fdd813f1 100644
--- a/clang/lib/CodeGen/CGBuiltin.cpp
+++ b/clang/lib/CodeGen/CGBuiltin.cpp
@@ -382,14 +382,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(unsigned BuiltinID, const CallExpr *E) {
}
// See if we have a target specific builtin that needs to be lowered.
- Value *V = 0;
-
- if (strcmp(TargetPrefix, "x86") == 0)
- V = EmitX86BuiltinExpr(BuiltinID, E);
- else if (strcmp(TargetPrefix, "ppc") == 0)
- V = EmitPPCBuiltinExpr(BuiltinID, E);
-
- if (V)
+ if (Value *V = EmitTargetBuiltinExpr(BuiltinID, E))
return RValue::get(V);
ErrorUnsupported(E, "builtin function");
@@ -400,6 +393,16 @@ RValue CodeGenFunction::EmitBuiltinExpr(unsigned BuiltinID, const CallExpr *E) {
return RValue::get(UndefValue::get(ConvertType(E->getType())));
}
+Value *CodeGenFunction::EmitTargetBuiltinExpr(unsigned BuiltinID,
+ const CallExpr *E) {
+ const char *TargetPrefix = Target.getTargetPrefix();
+ if (strcmp(TargetPrefix, "x86") == 0)
+ return EmitX86BuiltinExpr(BuiltinID, E);
+ else if (strcmp(TargetPrefix, "ppc") == 0)
+ return EmitPPCBuiltinExpr(BuiltinID, E);
+ return 0;
+}
+
Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID,
const CallExpr *E) {
diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h
index 8058c342e7a..ca499d85e4c 100644
--- a/clang/lib/CodeGen/CodeGenFunction.h
+++ b/clang/lib/CodeGen/CodeGenFunction.h
@@ -418,6 +418,10 @@ public:
RValue EmitBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
+ /// EmitTargetBuiltinExpr - Emit the given builtin call. Returns 0
+ /// if the call is unhandled by the current target.
+ llvm::Value *EmitTargetBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
+
llvm::Value *EmitX86BuiltinExpr(unsigned BuiltinID, const CallExpr *E);
llvm::Value *EmitPPCBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
OpenPOWER on IntegriCloud