diff options
-rw-r--r-- | lib/CodeGen/CGBuiltin.cpp | 3 | ||||
-rw-r--r-- | test/CodeGen/no-builtin.c | 20 |
2 files changed, 1 insertions, 22 deletions
diff --git a/lib/CodeGen/CGBuiltin.cpp b/lib/CodeGen/CGBuiltin.cpp index f462ee62ad..3e5a6772eb 100644 --- a/lib/CodeGen/CGBuiltin.cpp +++ b/lib/CodeGen/CGBuiltin.cpp @@ -175,8 +175,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD, unsigned BuiltinID, const CallExpr *E) { // See if we can constant fold this builtin. If so, don't emit it at all. Expr::EvalResult Result; - if (!getContext().getLangOptions().NoBuiltin && - E->EvaluateAsRValue(Result, CGM.getContext()) && + if (E->EvaluateAsRValue(Result, CGM.getContext()) && !Result.hasSideEffects()) { if (Result.Val.isInt()) return RValue::get(llvm::ConstantInt::get(getLLVMContext(), diff --git a/test/CodeGen/no-builtin.c b/test/CodeGen/no-builtin.c deleted file mode 100644 index ff1c192481..0000000000 --- a/test/CodeGen/no-builtin.c +++ /dev/null @@ -1,20 +0,0 @@ -// RUN: %clang_cc1 -fno-builtin -emit-llvm %s -o - | FileCheck %s -// -// Check that -fno-builtin prevents us from constant-folding through builtins -// (PR11711) - -double -cos(double x) -{ - printf("ok\n"); - exit(0); -} - -int -main(int argc, char *argv[]) -{ - cos(1); // CHECK: cos - printf("not ok\n"); - abort(); -} - |