From: Daniel Dunbar Date: Fri, 20 Feb 2009 06:36:40 +0000 (+0000) Subject: Add some stdlib builtins X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f8ebb4154e261e34a0c77338fa1faa100ecfb28d;p=clang Add some stdlib builtins git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65115 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/Builtins.def b/include/clang/AST/Builtins.def index 94696e8174..ce11658667 100644 --- a/include/clang/AST/Builtins.def +++ b/include/clang/AST/Builtins.def @@ -138,6 +138,12 @@ BUILTIN(__builtin_bzero, "vv*z", "n") BUILTIN(__builtin_memcpy, "v*v*vC*z", "n") BUILTIN(__builtin_memmove, "v*v*vC*z", "n") BUILTIN(__builtin_memset, "v*v*iz", "n") +BUILTIN(__builtin_strcat, "c*c*cC*", "nF") +BUILTIN(__builtin_strncat, "c*c*cC*z", "nF") +BUILTIN(__builtin_strcpy, "c*c*cC*", "nF") +BUILTIN(__builtin_strncpy, "c*c*cC*z", "nF") +BUILTIN(__builtin_strchr, "c*cC*i", "nF") +BUILTIN(__builtin_strrchr, "c*cC*i", "nF") BUILTIN(__builtin_return_address, "v*Ui", "n") BUILTIN(__builtin_frame_address, "v*Ui", "n") BUILTIN(__builtin_flt_rounds, "i", "nc") diff --git a/test/CodeGen/builtins.c b/test/CodeGen/builtins.c index e7055d9ad8..07f3db9465 100644 --- a/test/CodeGen/builtins.c +++ b/test/CodeGen/builtins.c @@ -77,9 +77,17 @@ int main() { Q(powif, (1.2f, N)); Q(powil, (1.2f, N)); - // Object size checking + // Lib functions int a, b, n = random(); // Avoid optimizing out. char s0[10], s1[] = "Hello"; + V(strcat, (s0, s1)); + V(strncat, (s0, s1, n)); + V(strchr, (s0, s1[0])); + V(strrchr, (s0, s1[0])); + V(strcpy, (s0, s1)); + V(strncpy, (s0, s1, n)); + + // Object size checking V(__memset_chk, (s0, 0, sizeof s0, n)); V(__memcpy_chk, (s0, s1, sizeof s0, n)); V(__memmove_chk, (s0, s1, sizeof s0, n));