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