chatur01 updated this revision to Diff 30153. chatur01 added a comment. Thanks very much Renato and Hal for giving this one another look and apologies for my delay getting back, I've been on holiday.
I have updated the patch to mark up all libm functions as described in the first section of, https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html Which are the functions GCC has defined as being part of libc implementations. The other builtins listed on that page are there just for optimization purposes. The way I tested this was to take each chunk of functions listed in each of the ISO C* paragraphs from the above page, and grep for each function name in `Builtins.def`, checking whether `F` was part of that builtin's mark up. After this patch, all those checks pass. OK to land? http://reviews.llvm.org/D9913 Files: include/clang/Basic/Builtins.def Index: include/clang/Basic/Builtins.def =================================================================== --- include/clang/Basic/Builtins.def +++ include/clang/Basic/Builtins.def @@ -357,25 +357,25 @@ BUILTIN(__builtin_ctanhl, "XLdXLd", "Fnc") // FP Comparisons. -BUILTIN(__builtin_isgreater , "i.", "nc") -BUILTIN(__builtin_isgreaterequal, "i.", "nc") -BUILTIN(__builtin_isless , "i.", "nc") -BUILTIN(__builtin_islessequal , "i.", "nc") -BUILTIN(__builtin_islessgreater , "i.", "nc") -BUILTIN(__builtin_isunordered , "i.", "nc") +BUILTIN(__builtin_isgreater , "i.", "Fnc") +BUILTIN(__builtin_isgreaterequal, "i.", "Fnc") +BUILTIN(__builtin_isless , "i.", "Fnc") +BUILTIN(__builtin_islessequal , "i.", "Fnc") +BUILTIN(__builtin_islessgreater , "i.", "Fnc") +BUILTIN(__builtin_isunordered , "i.", "Fnc") // Unary FP classification -BUILTIN(__builtin_fpclassify, "iiiii.", "nc") -BUILTIN(__builtin_isfinite, "i.", "nc") -BUILTIN(__builtin_isinf, "i.", "nc") -BUILTIN(__builtin_isinf_sign, "i.", "nc") -BUILTIN(__builtin_isnan, "i.", "nc") -BUILTIN(__builtin_isnormal, "i.", "nc") +BUILTIN(__builtin_fpclassify, "iiiii.", "Fnc") +BUILTIN(__builtin_isfinite, "i.", "Fnc") +BUILTIN(__builtin_isinf, "i.", "Fnc") +BUILTIN(__builtin_isinf_sign, "i.", "Fnc") +BUILTIN(__builtin_isnan, "i.", "Fnc") +BUILTIN(__builtin_isnormal, "i.", "Fnc") // FP signbit builtins -BUILTIN(__builtin_signbit, "id", "nc") -BUILTIN(__builtin_signbitf, "if", "nc") -BUILTIN(__builtin_signbitl, "iLd", "nc") +BUILTIN(__builtin_signbit, "i.", "Fnc") +BUILTIN(__builtin_signbitf, "if", "Fnc") +BUILTIN(__builtin_signbitl, "iLd", "Fnc") // Builtins for arithmetic. BUILTIN(__builtin_clzs , "iUs" , "nc") @@ -388,9 +388,9 @@ BUILTIN(__builtin_ctzl , "iULi" , "nc") BUILTIN(__builtin_ctzll, "iULLi", "nc") // TODO: int ctzimax(uintmax_t) -BUILTIN(__builtin_ffs , "ii" , "nc") -BUILTIN(__builtin_ffsl , "iLi" , "nc") -BUILTIN(__builtin_ffsll, "iLLi", "nc") +BUILTIN(__builtin_ffs , "ii" , "Fnc") +BUILTIN(__builtin_ffsl , "iLi" , "Fnc") +BUILTIN(__builtin_ffsll, "iLLi", "Fnc") BUILTIN(__builtin_parity , "iUi" , "nc") BUILTIN(__builtin_parityl , "iULi" , "nc") BUILTIN(__builtin_parityll, "iULLi", "nc") @@ -414,7 +414,7 @@ BUILTIN(__builtin_va_copy, "vAA", "n") BUILTIN(__builtin_stdarg_start, "vA.", "n") BUILTIN(__builtin_assume_aligned, "v*vC*z.", "nc") -BUILTIN(__builtin_bcmp, "iv*v*z", "n") +BUILTIN(__builtin_bcmp, "iv*v*z", "Fn") BUILTIN(__builtin_bcopy, "vv*v*z", "n") BUILTIN(__builtin_bzero, "vv*z", "nF") BUILTIN(__builtin_fprintf, "iP*cC*.", "Fp:1:") @@ -497,7 +497,7 @@ BUILTIN(__builtin_unreachable, "v", "nr") BUILTIN(__builtin_shufflevector, "v." , "nc") BUILTIN(__builtin_convertvector, "v." , "nct") -BUILTIN(__builtin_alloca, "v*z" , "n") +BUILTIN(__builtin_alloca, "v*z" , "Fn") BUILTIN(__builtin_call_with_static_chain, "v.", "nt") // "Overloaded" Atomic operator builtins. These are overloaded to support data
Index: include/clang/Basic/Builtins.def =================================================================== --- include/clang/Basic/Builtins.def +++ include/clang/Basic/Builtins.def @@ -357,25 +357,25 @@ BUILTIN(__builtin_ctanhl, "XLdXLd", "Fnc") // FP Comparisons. -BUILTIN(__builtin_isgreater , "i.", "nc") -BUILTIN(__builtin_isgreaterequal, "i.", "nc") -BUILTIN(__builtin_isless , "i.", "nc") -BUILTIN(__builtin_islessequal , "i.", "nc") -BUILTIN(__builtin_islessgreater , "i.", "nc") -BUILTIN(__builtin_isunordered , "i.", "nc") +BUILTIN(__builtin_isgreater , "i.", "Fnc") +BUILTIN(__builtin_isgreaterequal, "i.", "Fnc") +BUILTIN(__builtin_isless , "i.", "Fnc") +BUILTIN(__builtin_islessequal , "i.", "Fnc") +BUILTIN(__builtin_islessgreater , "i.", "Fnc") +BUILTIN(__builtin_isunordered , "i.", "Fnc") // Unary FP classification -BUILTIN(__builtin_fpclassify, "iiiii.", "nc") -BUILTIN(__builtin_isfinite, "i.", "nc") -BUILTIN(__builtin_isinf, "i.", "nc") -BUILTIN(__builtin_isinf_sign, "i.", "nc") -BUILTIN(__builtin_isnan, "i.", "nc") -BUILTIN(__builtin_isnormal, "i.", "nc") +BUILTIN(__builtin_fpclassify, "iiiii.", "Fnc") +BUILTIN(__builtin_isfinite, "i.", "Fnc") +BUILTIN(__builtin_isinf, "i.", "Fnc") +BUILTIN(__builtin_isinf_sign, "i.", "Fnc") +BUILTIN(__builtin_isnan, "i.", "Fnc") +BUILTIN(__builtin_isnormal, "i.", "Fnc") // FP signbit builtins -BUILTIN(__builtin_signbit, "id", "nc") -BUILTIN(__builtin_signbitf, "if", "nc") -BUILTIN(__builtin_signbitl, "iLd", "nc") +BUILTIN(__builtin_signbit, "i.", "Fnc") +BUILTIN(__builtin_signbitf, "if", "Fnc") +BUILTIN(__builtin_signbitl, "iLd", "Fnc") // Builtins for arithmetic. BUILTIN(__builtin_clzs , "iUs" , "nc") @@ -388,9 +388,9 @@ BUILTIN(__builtin_ctzl , "iULi" , "nc") BUILTIN(__builtin_ctzll, "iULLi", "nc") // TODO: int ctzimax(uintmax_t) -BUILTIN(__builtin_ffs , "ii" , "nc") -BUILTIN(__builtin_ffsl , "iLi" , "nc") -BUILTIN(__builtin_ffsll, "iLLi", "nc") +BUILTIN(__builtin_ffs , "ii" , "Fnc") +BUILTIN(__builtin_ffsl , "iLi" , "Fnc") +BUILTIN(__builtin_ffsll, "iLLi", "Fnc") BUILTIN(__builtin_parity , "iUi" , "nc") BUILTIN(__builtin_parityl , "iULi" , "nc") BUILTIN(__builtin_parityll, "iULLi", "nc") @@ -414,7 +414,7 @@ BUILTIN(__builtin_va_copy, "vAA", "n") BUILTIN(__builtin_stdarg_start, "vA.", "n") BUILTIN(__builtin_assume_aligned, "v*vC*z.", "nc") -BUILTIN(__builtin_bcmp, "iv*v*z", "n") +BUILTIN(__builtin_bcmp, "iv*v*z", "Fn") BUILTIN(__builtin_bcopy, "vv*v*z", "n") BUILTIN(__builtin_bzero, "vv*z", "nF") BUILTIN(__builtin_fprintf, "iP*cC*.", "Fp:1:") @@ -497,7 +497,7 @@ BUILTIN(__builtin_unreachable, "v", "nr") BUILTIN(__builtin_shufflevector, "v." , "nc") BUILTIN(__builtin_convertvector, "v." , "nct") -BUILTIN(__builtin_alloca, "v*z" , "n") +BUILTIN(__builtin_alloca, "v*z" , "Fn") BUILTIN(__builtin_call_with_static_chain, "v.", "nt") // "Overloaded" Atomic operator builtins. These are overloaded to support data
_______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits