blob: 3ac1da0aa93d6c7c4a84e4d0db6e3a526bc63e17 [file] [log] [blame]
Rafael Espindola2219fc52013-05-14 12:45:47 +00001// RUN: %clang_cc1 -triple armv7 -fsyntax-only -verify %s
Logan Chien57086ce2012-10-10 06:56:20 +00002// RUN: %clang_cc1 -triple armv7 -target-abi apcs-gnu \
Rafael Espindola2219fc52013-05-14 12:45:47 +00003// RUN: -fsyntax-only -verify %s
Daniel Dunbar999daa52010-07-16 00:31:23 +00004
Rafael Espindola06338652013-05-14 18:06:10 +00005void f(void *a, void *b) {
6 __clear_cache(); // expected-error {{too few arguments to function call, expected 2, have 0}} // expected-note {{'__clear_cache' is a builtin with type 'void (void *, void *)}}
Rafael Espindola2219fc52013-05-14 12:45:47 +00007 __clear_cache(a); // expected-error {{too few arguments to function call, expected 2, have 1}}
8 __clear_cache(a, b);
9}
10
Rafael Espindola06338652013-05-14 18:06:10 +000011void __clear_cache(char*, char*); // expected-error {{conflicting types for '__clear_cache'}}
12void __clear_cache(void*, void*);
Daniel Dunbar999daa52010-07-16 00:31:23 +000013
Logan Chien57086ce2012-10-10 06:56:20 +000014#if defined(__ARM_PCS) || defined(__ARM_EABI__)
15// va_list on ARM AAPCS is struct { void* __ap }.
16void test1() {
17 __builtin_va_list ptr;
18 ptr.__ap = "x";
19 *(ptr.__ap) = '0'; // expected-error {{incomplete type 'void' is not assignable}}
20}
21#else
22// va_list on ARM apcs-gnu is void*.
23void test1() {
24 __builtin_va_list ptr;
25 ptr.__ap = "x"; // expected-error {{member reference base type '__builtin_va_list' is not a structure or union}}
26 *(ptr.__ap) = '0';// expected-error {{member reference base type '__builtin_va_list' is not a structure or union}}
27}
28
John McCalle155a3d2011-05-09 02:19:37 +000029void test2() {
30 __builtin_va_list ptr = "x";
31 *ptr = '0'; // expected-error {{incomplete type 'void' is not assignable}}
32}
Logan Chien57086ce2012-10-10 06:56:20 +000033
34#endif