From: Anastasia Stulova Date: Fri, 12 Feb 2016 12:07:04 +0000 (+0000) Subject: [OpenCL] Disable C99 standard lib functions X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=87f6500b32c60af0cd0df453ead0ad8a884ece09;p=clang [OpenCL] Disable C99 standard lib functions The library functions defined in the C99 standard headers are not available (OpenCL v1.2 s6.9.f). This change stops treating OpenCL builtin functions as standard C lib functions to eliminate warning messages about printf format string. Patch by Liu Yaxun (Sam)! Differential Revision: http://reviews.llvm.org/D16812 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@260671 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp index ce1b9fac55..7378c44178 100644 --- a/lib/AST/Decl.cpp +++ b/lib/AST/Decl.cpp @@ -2732,6 +2732,12 @@ unsigned FunctionDecl::getBuiltinID() const { if (getStorageClass() == SC_Static) return 0; + // OpenCL v1.2 s6.9.f - The library functions defined in + // the C99 standard headers are not available. + if (Context.getLangOpts().OpenCL && + Context.BuiltinInfo.isPredefinedLibFunction(BuiltinID)) + return 0; + return BuiltinID; } diff --git a/test/SemaOpenCL/builtin.cl b/test/SemaOpenCL/builtin.cl index e5f56e2577..d48a0c4495 100644 --- a/test/SemaOpenCL/builtin.cl +++ b/test/SemaOpenCL/builtin.cl @@ -1,3 +1,14 @@ // RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -float __attribute__((overloadable)) acos(float); // expected-no-diagnostics +// expected-no-diagnostics + +float __attribute__((overloadable)) acos(float); + +typedef float float4 __attribute__((ext_vector_type(4))); +int printf(__constant const char* st, ...); + +void test(void) +{ + float4 a; + printf("%8.4v4hlf\n", a); +}