1 /* PR target/96350 */
2 /* { dg-do compile } */
3 /* { dg-options "-fcf-protection -O2" } */
4 /* { dg-final { scan-assembler-not "$-81915917" { target { ia32 } } } } */
5 /* { dg-final { scan-assembler-not "$-98693133" { target { ! ia32 } } } } *
6 /* { dg-final { scan-assembler-not "$-423883778574778368" { target { ! ia32 } } } } */
7 /* { dg-final { scan-assembler "\[ \t\]*-81915917" { target { ia32 } } } } */
8 /* { dg-final { scan-assembler "\[ \t\]*-98693133" { target { ! ia32 } } } } */
9 /* { dg-final { scan-assembler "\[ \t\]*-423883778574778368" { target { ! ia32 } } } } */
10 
11 
12 #ifdef __x86_64__
13 #define ENDBR_IMMEDIATE 0xfa1e0ff3
14 #define EXTEND_ENDBR_IMMEDIATE 0xfa1e0ff300000000
15 #else
16 #define ENDBR_IMMEDIATE 0xfb1e0ff3
17 #define EXTEND_ENDBR_IMMEDIATE 0xfffb1e0ff300
18 #endif
19 
20 int
foo(int a)21 foo (int a)
22 {
23   return a + ENDBR_IMMEDIATE;
24 }
25 
26 int
foo2(int a)27 foo2 (int a)
28 {
29   return a - ENDBR_IMMEDIATE;
30 }
31 
32 int
foo3(int a)33 foo3 (int a)
34 {
35   return a * ENDBR_IMMEDIATE;
36 }
37 
38 int
foo4(int a)39 foo4 (int a)
40 {
41   return a | ENDBR_IMMEDIATE;
42 }
43 
44 int
foo5(int a)45 foo5 (int a)
46 {
47   return a ^ ENDBR_IMMEDIATE;
48 }
49 
50 int
foo6(int a)51 foo6 (int a)
52 {
53   return a & ENDBR_IMMEDIATE;
54 }
55 
56 int
foo7(int a)57 foo7 (int a)
58 {
59   return a > ENDBR_IMMEDIATE;
60 }
61 
62 int
foo8(int a)63 foo8 (int a)
64 {
65   return ENDBR_IMMEDIATE;
66 }
67 
68 int
foo9(int * p)69 foo9 (int* p)
70 {
71   return *(p + ENDBR_IMMEDIATE);
72 }
73 
74 int
foo10(int * p)75 foo10 (int* p)
76 {
77   return *(int*) ENDBR_IMMEDIATE;
78 }
79 
80 long long
foo11(long long a)81 foo11 (long long a)
82 {
83   return a + EXTEND_ENDBR_IMMEDIATE;
84 }
85 
86 long long
foo12(long long a)87 foo12 (long long a)
88 {
89   return a - EXTEND_ENDBR_IMMEDIATE;
90 }
91 
92 long long
foo13(long long a)93 foo13 (long long a)
94 {
95   return a * EXTEND_ENDBR_IMMEDIATE;
96 }
97 
98 long long
foo14(long long a)99 foo14 (long long a)
100 {
101   return a | EXTEND_ENDBR_IMMEDIATE;
102 }
103 
104 long long
foo15(long long a)105 foo15 (long long a)
106 {
107   return a ^ EXTEND_ENDBR_IMMEDIATE;
108 }
109 
110 long long
foo16(long long a)111 foo16 (long long a)
112 {
113   return a & EXTEND_ENDBR_IMMEDIATE;
114 }
115 
116 long long
foo17(long long a)117 foo17 (long long a)
118 {
119   return a > EXTEND_ENDBR_IMMEDIATE;
120 }
121 
122 long long
foo18(long long a)123 foo18 (long long a)
124 {
125   return EXTEND_ENDBR_IMMEDIATE;
126 }
127 
128 long long
foo19(long long * p)129 foo19 (long long* p)
130 {
131   return *(p + EXTEND_ENDBR_IMMEDIATE);
132 }
133 
134 long long
foo20(long long * p)135 foo20 (long long* p)
136 {
137   return *(long long*) EXTEND_ENDBR_IMMEDIATE;
138 }
139 
140 long long
foo21(int a)141 foo21 (int a)
142 {
143   return a + ENDBR_IMMEDIATE;
144 }
145 
146 long long
foo22(int a)147 foo22 (int a)
148 {
149   return a - ENDBR_IMMEDIATE;
150 }
151 
152 long long
foo23(long long a)153 foo23 (long long a)
154 {
155   return a * ENDBR_IMMEDIATE;
156 }
157 
158 long long
foo24(int a)159 foo24 (int a)
160 {
161   return a | ENDBR_IMMEDIATE;
162 }
163 
164 long long
foo25(int a)165 foo25 (int a)
166 {
167   return a ^ ENDBR_IMMEDIATE;
168 }
169 
170 long long
foo26(int a)171 foo26 (int a)
172 {
173   return a & ENDBR_IMMEDIATE;
174 }
175 
176 long long
foo27(int a)177 foo27 (int a)
178 {
179   return a > ENDBR_IMMEDIATE;
180 }
181 
182 long long
foo28(int a)183 foo28 (int a)
184 {
185   return ENDBR_IMMEDIATE;
186 }
187 
188 long long
foo29(int * p)189 foo29 (int* p)
190 {
191   return *(p + ENDBR_IMMEDIATE);
192 }
193 
194 long long
foo30(int * p)195 foo30 (int* p)
196 {
197   return *(long long*) ENDBR_IMMEDIATE;
198 }
199