mayurpandey created this revision.
mayurpandey added reviewers: george.burgess.iv, hfinkel.
mayurpandey added a subscriber: cfe-commits.

clang was crashing when no argument was provided to __builtin_signbit function. 
Added a check to handle the error. No regressions on testing.

http://reviews.llvm.org/D22334

Files:
  lib/Sema/SemaChecking.cpp
  test/Sema/builtins.c

Index: test/Sema/builtins.c
===================================================================
--- test/Sema/builtins.c
+++ test/Sema/builtins.c
@@ -248,3 +248,7 @@
 
     return buf;
 }
+
+int test21(double a) {
+  return __builtin_signbit();  // expected-error {{too few arguments}}
+}
Index: lib/Sema/SemaChecking.cpp
===================================================================
--- lib/Sema/SemaChecking.cpp
+++ lib/Sema/SemaChecking.cpp
@@ -763,6 +763,10 @@
     }
     break;
   }
+  case Builtin::BI__builtin_signbit:
+    if (checkArgCount(*this, TheCall, 1))
+      return true;
+    break;  
   case Builtin::BI__builtin_isgreater:
   case Builtin::BI__builtin_isgreaterequal:
   case Builtin::BI__builtin_isless:


Index: test/Sema/builtins.c
===================================================================
--- test/Sema/builtins.c
+++ test/Sema/builtins.c
@@ -248,3 +248,7 @@
 
     return buf;
 }
+
+int test21(double a) {
+  return __builtin_signbit();  // expected-error {{too few arguments}}
+}
Index: lib/Sema/SemaChecking.cpp
===================================================================
--- lib/Sema/SemaChecking.cpp
+++ lib/Sema/SemaChecking.cpp
@@ -763,6 +763,10 @@
     }
     break;
   }
+  case Builtin::BI__builtin_signbit:
+    if (checkArgCount(*this, TheCall, 1))
+      return true;
+    break;  
   case Builtin::BI__builtin_isgreater:
   case Builtin::BI__builtin_isgreaterequal:
   case Builtin::BI__builtin_isless:
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to