| /* 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; |
| } |