annotate gcc/testsuite/gcc.dg/darwin-cfstring-1.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* Test whether the __builtin__CFStringMakeConstantString
kono
parents:
diff changeset
2 "function" fails gracefully when handed a non-constant
kono
parents:
diff changeset
3 argument. This will only work on MacOS X 10.1.2 and later. */
kono
parents:
diff changeset
4 /* Developed by Ziemowit Laski <zlaski@apple.com>. */
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 /* { dg-do compile { target *-*-darwin* } } */
kono
parents:
diff changeset
7 /* { dg-options "-mconstant-cfstrings" } */
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 typedef const struct __CFString *CFStringRef;
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 #ifdef __CONSTANT_CFSTRINGS__
kono
parents:
diff changeset
12 #define CFSTR(STR) ((CFStringRef) __builtin___CFStringMakeConstantString (STR))
kono
parents:
diff changeset
13 #else
kono
parents:
diff changeset
14 #error __CONSTANT_CFSTRINGS__ not defined
kono
parents:
diff changeset
15 #endif
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 extern int cond;
kono
parents:
diff changeset
18 extern const char *func(void);
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 const CFStringRef s0 = CFSTR("Hello" "there");
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 int main(void) {
kono
parents:
diff changeset
23 CFStringRef s1 = CFSTR("Str1");
kono
parents:
diff changeset
24 CFStringRef s2 = CFSTR(cond? "Str2": "Str3"); /* { dg-error "CFString literal expression is not a string constant" } */
kono
parents:
diff changeset
25 CFStringRef s3 = CFSTR(func()); /* { dg-error "CFString literal expression is not a string constant" } */
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 return 0;
kono
parents:
diff changeset
28 }