]> granicus.if.org Git - clang/commitdiff
Make sure we aggressively attach nounwind (etc.) to calls to library
authorEli Friedman <eli.friedman@gmail.com>
Thu, 24 Mar 2011 05:09:45 +0000 (05:09 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Thu, 24 Mar 2011 05:09:45 +0000 (05:09 +0000)
functions of the form __builtin_XXX.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128198 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGBuiltin.cpp
test/CodeGen/builtin-attributes.c

index 7e61b50c93d652ea91acb8d26954cdc3f524ba4b..e6b6ee92c03f67ea89d8248fc8122c90f78bb0b1 100644 (file)
@@ -948,8 +948,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const FunctionDecl *FD,
       getContext().BuiltinInfo.isPredefinedLibFunction(BuiltinID))
     return EmitCall(E->getCallee()->getType(),
                     CGM.getBuiltinLibFunction(FD, BuiltinID),
-                    ReturnValueSlot(),
-                    E->arg_begin(), E->arg_end());
+                    ReturnValueSlot(), E->arg_begin(), E->arg_end(), FD);
 
   // See if we have a target specific intrinsic.
   const char *Name = getContext().BuiltinInfo.GetName(BuiltinID);
index afde3fab84816fc2b2f64b4ed2e9527ba9d42970..822b8eecf7d7b67e722335d546b50ce0144ce16f 100644 (file)
@@ -10,3 +10,8 @@ void f0() {
 void f1() {
   exit(1);
 }
+
+// CHECK: call i8* @strstr{{.*}} nounwind
+char* f2(char* a, char* b) {
+  return __builtin_strstr(a, b);
+}