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)21foo (int a) 22 { 23 return a + ENDBR_IMMEDIATE; 24 } 25 26 int foo2(int a)27foo2 (int a) 28 { 29 return a - ENDBR_IMMEDIATE; 30 } 31 32 int foo3(int a)33foo3 (int a) 34 { 35 return a * ENDBR_IMMEDIATE; 36 } 37 38 int foo4(int a)39foo4 (int a) 40 { 41 return a | ENDBR_IMMEDIATE; 42 } 43 44 int foo5(int a)45foo5 (int a) 46 { 47 return a ^ ENDBR_IMMEDIATE; 48 } 49 50 int foo6(int a)51foo6 (int a) 52 { 53 return a & ENDBR_IMMEDIATE; 54 } 55 56 int foo7(int a)57foo7 (int a) 58 { 59 return a > ENDBR_IMMEDIATE; 60 } 61 62 int foo8(int a)63foo8 (int a) 64 { 65 return ENDBR_IMMEDIATE; 66 } 67 68 int foo9(int * p)69foo9 (int* p) 70 { 71 return *(p + ENDBR_IMMEDIATE); 72 } 73 74 int foo10(int * p)75foo10 (int* p) 76 { 77 return *(int*) ENDBR_IMMEDIATE; 78 } 79 80 long long foo11(long long a)81foo11 (long long a) 82 { 83 return a + EXTEND_ENDBR_IMMEDIATE; 84 } 85 86 long long foo12(long long a)87foo12 (long long a) 88 { 89 return a - EXTEND_ENDBR_IMMEDIATE; 90 } 91 92 long long foo13(long long a)93foo13 (long long a) 94 { 95 return a * EXTEND_ENDBR_IMMEDIATE; 96 } 97 98 long long foo14(long long a)99foo14 (long long a) 100 { 101 return a | EXTEND_ENDBR_IMMEDIATE; 102 } 103 104 long long foo15(long long a)105foo15 (long long a) 106 { 107 return a ^ EXTEND_ENDBR_IMMEDIATE; 108 } 109 110 long long foo16(long long a)111foo16 (long long a) 112 { 113 return a & EXTEND_ENDBR_IMMEDIATE; 114 } 115 116 long long foo17(long long a)117foo17 (long long a) 118 { 119 return a > EXTEND_ENDBR_IMMEDIATE; 120 } 121 122 long long foo18(long long a)123foo18 (long long a) 124 { 125 return EXTEND_ENDBR_IMMEDIATE; 126 } 127 128 long long foo19(long long * p)129foo19 (long long* p) 130 { 131 return *(p + EXTEND_ENDBR_IMMEDIATE); 132 } 133 134 long long foo20(long long * p)135foo20 (long long* p) 136 { 137 return *(long long*) EXTEND_ENDBR_IMMEDIATE; 138 } 139 140 long long foo21(int a)141foo21 (int a) 142 { 143 return a + ENDBR_IMMEDIATE; 144 } 145 146 long long foo22(int a)147foo22 (int a) 148 { 149 return a - ENDBR_IMMEDIATE; 150 } 151 152 long long foo23(long long a)153foo23 (long long a) 154 { 155 return a * ENDBR_IMMEDIATE; 156 } 157 158 long long foo24(int a)159foo24 (int a) 160 { 161 return a | ENDBR_IMMEDIATE; 162 } 163 164 long long foo25(int a)165foo25 (int a) 166 { 167 return a ^ ENDBR_IMMEDIATE; 168 } 169 170 long long foo26(int a)171foo26 (int a) 172 { 173 return a & ENDBR_IMMEDIATE; 174 } 175 176 long long foo27(int a)177foo27 (int a) 178 { 179 return a > ENDBR_IMMEDIATE; 180 } 181 182 long long foo28(int a)183foo28 (int a) 184 { 185 return ENDBR_IMMEDIATE; 186 } 187 188 long long foo29(int * p)189foo29 (int* p) 190 { 191 return *(p + ENDBR_IMMEDIATE); 192 } 193 194 long long foo30(int * p)195foo30 (int* p) 196 { 197 return *(long long*) ENDBR_IMMEDIATE; 198 } 199