From 0e9972ccccf4e2baf1f65d4cf70f26897d285442 Mon Sep 17 00:00:00 2001 From: John McCall Date: Mon, 9 May 2011 02:19:37 +0000 Subject: [PATCH] __builtin_va_list is void* on ARM, not char*. rdar://problem/9391966 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131080 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Basic/Targets.cpp | 2 +- test/Sema/builtins-arm.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index 97109caf12..09a2f56b42 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -2020,7 +2020,7 @@ public: NumRecords = clang::ARM::LastTSBuiltin-Builtin::FirstTSBuiltin; } virtual const char *getVAListDeclaration() const { - return "typedef char* __builtin_va_list;"; + return "typedef void* __builtin_va_list;"; } virtual void getGCCRegNames(const char * const *&Names, unsigned &NumNames) const; diff --git a/test/Sema/builtins-arm.c b/test/Sema/builtins-arm.c index 4dd31e7240..4077240ce4 100644 --- a/test/Sema/builtins-arm.c +++ b/test/Sema/builtins-arm.c @@ -9,3 +9,8 @@ void __clear_cache(char*, char*); void __clear_cache(void*, void*); #endif +// va_list on ARM is void*. +void test2() { + __builtin_va_list ptr = "x"; + *ptr = '0'; // expected-error {{incomplete type 'void' is not assignable}} +} -- 2.40.0