Index: lib/Sema/SemaChecking.cpp =================================================================== --- lib/Sema/SemaChecking.cpp +++ lib/Sema/SemaChecking.cpp @@ -839,6 +839,9 @@ case Builtin::BI__builtin_isinf_sign: case Builtin::BI__builtin_isnan: case Builtin::BI__builtin_isnormal: + case Builtin::BI__builtin_signbit: + case Builtin::BI__builtin_signbitf: + case Builtin::BI__builtin_signbitl: if (SemaBuiltinFPClassification(TheCall, 1)) return ExprError(); break; Index: test/Sema/builtin-unary-fp.c =================================================================== --- test/Sema/builtin-unary-fp.c +++ test/Sema/builtin-unary-fp.c @@ -9,6 +9,9 @@ check(__builtin_isfinite(1)); // expected-error{{requires argument of floating point type}} check(__builtin_isinf()); // expected-error{{too few arguments}} check(__builtin_isnan(1,2)); // expected-error{{too many arguments}} + check(__builtin_signbit()); // expected-error{{too few arguments}} + check(__builtin_signbit(1,2)); // expected-error{{too many arguments}} + check(__builtin_signbit(1)); // expected-error{{requires argument of floating point type}} check(__builtin_fpclassify(0, 0, 0, 0, 0, 1.0)); check(__builtin_fpclassify(0, 0, 0, 0, 0, 1)); // expected-error{{requires argument of floating point type}} check(__builtin_fpclassify(0, 1, 2, 3, 4.5, 5.0)); // expected-warning{{implicit conversion from 'double' to 'int' changes value from 4.5 to 4}}