annotate clang/test/PCH/exprs.h @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // Header for PCH test exprs.c
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 // DeclRefExpr
anatofuz
parents:
diff changeset
4 int i = 17;
anatofuz
parents:
diff changeset
5 enum Enum { Enumerator = 18 };
anatofuz
parents:
diff changeset
6 typedef typeof(i) int_decl_ref;
anatofuz
parents:
diff changeset
7 typedef typeof(Enumerator) enum_decl_ref;
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 // IntegerLiteral
anatofuz
parents:
diff changeset
10 typedef typeof(17) integer_literal;
anatofuz
parents:
diff changeset
11 typedef typeof(17l) long_literal;
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13 // FloatingLiteral and ParenExpr
anatofuz
parents:
diff changeset
14 typedef typeof((42.5)) floating_literal;
anatofuz
parents:
diff changeset
15
anatofuz
parents:
diff changeset
16 // ImaginaryLiteral
anatofuz
parents:
diff changeset
17 typedef typeof(17.0i) imaginary_literal;
anatofuz
parents:
diff changeset
18
anatofuz
parents:
diff changeset
19 // StringLiteral
anatofuz
parents:
diff changeset
20 const char *hello = "Hello" "PCH" "World";
anatofuz
parents:
diff changeset
21
anatofuz
parents:
diff changeset
22 // CharacterLiteral
anatofuz
parents:
diff changeset
23 typedef typeof('a') char_literal;
anatofuz
parents:
diff changeset
24
anatofuz
parents:
diff changeset
25 // UnaryOperator
anatofuz
parents:
diff changeset
26 typedef typeof(-Enumerator) negate_enum;
anatofuz
parents:
diff changeset
27
anatofuz
parents:
diff changeset
28 // OffsetOfExpr
anatofuz
parents:
diff changeset
29 struct X {
anatofuz
parents:
diff changeset
30 int member;
anatofuz
parents:
diff changeset
31 };
anatofuz
parents:
diff changeset
32 struct Y {
anatofuz
parents:
diff changeset
33 struct X array[5];
anatofuz
parents:
diff changeset
34 };
anatofuz
parents:
diff changeset
35 struct Z {
anatofuz
parents:
diff changeset
36 struct Y y;
anatofuz
parents:
diff changeset
37 };
anatofuz
parents:
diff changeset
38 typedef typeof(__builtin_offsetof(struct Z, y.array[1 + 2].member))
anatofuz
parents:
diff changeset
39 offsetof_type;
anatofuz
parents:
diff changeset
40
anatofuz
parents:
diff changeset
41 // UnaryExprOrTypeTraitExpr
anatofuz
parents:
diff changeset
42 typedef typeof(sizeof(int)) typeof_sizeof;
anatofuz
parents:
diff changeset
43 typedef typeof(sizeof(Enumerator)) typeof_sizeof2;
anatofuz
parents:
diff changeset
44
anatofuz
parents:
diff changeset
45 // ArraySubscriptExpr
anatofuz
parents:
diff changeset
46 extern double values[];
anatofuz
parents:
diff changeset
47 typedef typeof(values[2]) array_subscript;
anatofuz
parents:
diff changeset
48
anatofuz
parents:
diff changeset
49 // CallExpr
anatofuz
parents:
diff changeset
50 double dplus(double x, double y);
anatofuz
parents:
diff changeset
51 double d0, d1;
anatofuz
parents:
diff changeset
52 typedef typeof((&dplus)(d0, d1)) call_returning_double;
anatofuz
parents:
diff changeset
53
anatofuz
parents:
diff changeset
54 // MemberExpr
anatofuz
parents:
diff changeset
55 struct S {
anatofuz
parents:
diff changeset
56 double x;
anatofuz
parents:
diff changeset
57 };
anatofuz
parents:
diff changeset
58 typedef typeof(((struct S*)0)->x) member_ref_double;
anatofuz
parents:
diff changeset
59
anatofuz
parents:
diff changeset
60 // BinaryOperator
anatofuz
parents:
diff changeset
61 typedef typeof(i + Enumerator) add_result;
anatofuz
parents:
diff changeset
62
anatofuz
parents:
diff changeset
63 // CompoundAssignOperator
anatofuz
parents:
diff changeset
64 typedef typeof(i += Enumerator) addeq_result;
anatofuz
parents:
diff changeset
65
anatofuz
parents:
diff changeset
66 // ConditionalOperator
anatofuz
parents:
diff changeset
67 typedef typeof(i? : d0) conditional_operator;
anatofuz
parents:
diff changeset
68
anatofuz
parents:
diff changeset
69 // CStyleCastExpr
anatofuz
parents:
diff changeset
70 typedef typeof((void *)0) void_ptr;
anatofuz
parents:
diff changeset
71
anatofuz
parents:
diff changeset
72 // CompoundLiteral
anatofuz
parents:
diff changeset
73 typedef typeof((struct S){.x = 3.5}) compound_literal;
anatofuz
parents:
diff changeset
74
anatofuz
parents:
diff changeset
75 typedef typeof(i + sizeof(int[i + Enumerator])) add_result_with_typeinfo;
anatofuz
parents:
diff changeset
76
anatofuz
parents:
diff changeset
77 // ExtVectorElementExpr
anatofuz
parents:
diff changeset
78 typedef __attribute__(( ext_vector_type(2) )) double double2;
anatofuz
parents:
diff changeset
79 extern double2 vec2, vec2b;
anatofuz
parents:
diff changeset
80 typedef typeof(vec2.x) ext_vector_element;
anatofuz
parents:
diff changeset
81
anatofuz
parents:
diff changeset
82 // InitListExpr
anatofuz
parents:
diff changeset
83 double double_array[3] = { 1.0, 2.0 };
anatofuz
parents:
diff changeset
84
anatofuz
parents:
diff changeset
85 // DesignatedInitExpr
anatofuz
parents:
diff changeset
86 struct {
anatofuz
parents:
diff changeset
87 int x;
anatofuz
parents:
diff changeset
88 float y;
anatofuz
parents:
diff changeset
89 } designated_inits[3] = { [0].y = 17,
anatofuz
parents:
diff changeset
90 [2].x = 12.3, // expected-warning {{implicit conversion from 'double' to 'int' changes value from 12.3 to 12}}
anatofuz
parents:
diff changeset
91 3.5 };
anatofuz
parents:
diff changeset
92
anatofuz
parents:
diff changeset
93 // TypesCompatibleExpr
anatofuz
parents:
diff changeset
94 typedef typeof(__builtin_types_compatible_p(float, double)) types_compatible;
anatofuz
parents:
diff changeset
95
anatofuz
parents:
diff changeset
96 // ChooseExpr
anatofuz
parents:
diff changeset
97 typedef typeof(__builtin_choose_expr(17 > 19, d0, 1)) choose_expr;
anatofuz
parents:
diff changeset
98
anatofuz
parents:
diff changeset
99 // GNUNullExpr FIXME: needs C++
anatofuz
parents:
diff changeset
100 // typedef typeof(__null) null_type;
anatofuz
parents:
diff changeset
101
anatofuz
parents:
diff changeset
102 // ShuffleVectorExpr
anatofuz
parents:
diff changeset
103 typedef typeof(__builtin_shufflevector(vec2, vec2b, 2, 1)) shuffle_expr;
anatofuz
parents:
diff changeset
104
anatofuz
parents:
diff changeset
105 // ConvertVectorExpr
anatofuz
parents:
diff changeset
106 typedef __attribute__(( ext_vector_type(2) )) float float2;
anatofuz
parents:
diff changeset
107 typedef typeof(__builtin_convertvector(vec2, float2)) convert_expr;
anatofuz
parents:
diff changeset
108
anatofuz
parents:
diff changeset
109 // GenericSelectionExpr
anatofuz
parents:
diff changeset
110 typedef typeof(_Generic(i, char*: 0, int: 0., default: hello))
anatofuz
parents:
diff changeset
111 generic_selection_expr;