/* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
-/* { dg-final { scan-assembler-times "\n\t\call\t_Z3foov\n" 1 } } */
+/* { dg-final { scan-assembler-times "\n\t\call\t_Z3foov(?:@plt)?\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__zba__zbb:\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
-/* { dg-final { scan-assembler-times "\n\t\call\t_Z3fooi\n" 1 } } */
+/* { dg-final { scan-assembler-times "\n\t\call\t_Z3fooi(?:@plt)?\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
-/* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov\n" 1 } } */
+/* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov(?:@plt)?\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__zba__zbb:\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
-/* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi\n" 0 } } */
+/* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi(?:@plt)?\n" 0 } } */
/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 0 } } */
/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
-/* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov\n" 1 } } */
+/* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov(?:@plt)?\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__zba__zbb:\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
-/* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi\n" 0 } } */
+/* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi(?:@plt)?\n" 0 } } */
/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 0 } } */
/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
-/* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov\n" 1 } } */
+/* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov(?:@plt)?\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__zba__zbb:\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 0 } } */
-/* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi\n" 0 } } */
+/* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi(?:@plt)?\n" 0 } } */
/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 0 } } */
/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
-/* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov\n" 1 } } */
+/* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov(?:@plt)?\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__zba__zbb:\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
-/* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi\n" 1 } } */
+/* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi(?:@plt)?\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.arch__v:\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.arch__zba__zbb:\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3foov\.resolver:\n" 1 } } */
-/* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov\n" 1 } } */
+/* { dg-final { scan-assembler-times "\n\tcall\t_Z3foov(?:@plt)?\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3foov, @gnu_indirect_function\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3foov,_Z3foov\.resolver\n" 1 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__v:\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.arch__zba__zbb:\n" 0 } } */
/* { dg-final { scan-assembler-times "\n_Z3fooi\.resolver:\n" 1 } } */
-/* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi\n" 1 } } */
+/* { dg-final { scan-assembler-times "\n\tcall\t_Z3fooi(?:@plt)?\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.type\t_Z3fooi, @gnu_indirect_function\n" 1 } } */
/* { dg-final { scan-assembler-times "\n\t\.set\t_Z3fooi,_Z3fooi\.resolver\n" 1 } } */
**sum:
** ...
** cm.mvsa01 s1,s2
-** call func
+** call func(?:@plt)?
** mv s0,a0
** cm.mva01s s1,s2
-** call func
+** call func(?:@plt)?
** ...
*/
int
/*
**copy_15:
** ...
-** (call|tail)\tmemcpy
+** (call|tail)\tmemcpy(?:@plt)?
** ...
*/
COPY_N(15)
/*
**copy_27:
** ...
-** (call|tail)\tmemcpy
+** (call|tail)\tmemcpy(?:@plt)?
** ...
*/
COPY_N(27)
/* { dg-final { scan-assembler-not "\tfmax\\.d\t" } } */
/* { dg-final { scan-assembler-not "\tfge\\.d\t" } } */
-/* { dg-final { scan-assembler "\t(call|tail)\tfmax\t" } } */
+/* { dg-final { scan-assembler "\t(call|tail)\tfmax(?:@plt)?\t" } } */
/* { dg-final { scan-assembler-not "\tfmax\\.s\t" } } */
/* { dg-final { scan-assembler-not "\tfge\\.s\t" } } */
-/* { dg-final { scan-assembler "\t(call|tail)\tfmaxf\t" } } */
+/* { dg-final { scan-assembler "\t(call|tail)\tfmaxf(?:@plt)?\t" } } */
/* { dg-final { scan-assembler-not "\tfmin\\.d\t" } } */
/* { dg-final { scan-assembler-not "\tfle\\.d\t" } } */
-/* { dg-final { scan-assembler "\t(call|tail)\tfmin\t" } } */
+/* { dg-final { scan-assembler "\t(call|tail)\tfmin(?:@plt)?\t" } } */
/* { dg-final { scan-assembler-not "\tfmin\\.s\t" } } */
/* { dg-final { scan-assembler-not "\tfle\\.s\t" } } */
-/* { dg-final { scan-assembler "\t(call|tail)\tfminf\t" } } */
+/* { dg-final { scan-assembler "\t(call|tail)\tfminf(?:@plt)?\t" } } */
/* { dg-do compile } */
-/* { dg-options "-march=rv64gc -mabi=lp64 -fno-section-anchors -mcmodel=large" } */
+/* { dg-options "-march=rv64gc -mabi=lp64 -fno-section-anchors -mcmodel=large -fno-pie" } */
/* { dg-skip-if "" { *-*-* } {"-O0"} } */
int a, b;
int foo1()
/* { dg-do compile } */
-/* { dg-options "-march=rv32i -mabi=ilp32 -mcmodel=medlow" } */
+/* { dg-options "-march=rv32i -mabi=ilp32 -mcmodel=medlow -fno-pie" } */
int main () {
#if !defined(__riscv)
/* { dg-do compile } */
-/* { dg-options "-march=rv64ia -mabi=lp64 -mcmodel=medlow" } */
+/* { dg-options "-march=rv64ia -mabi=lp64 -mcmodel=medlow -fno-pie" } */
int main () {
#if !defined(__riscv)
/* { dg-do compile } */
-/* { dg-options "-march=rv32em -mabi=ilp32e -mno-div -mcmodel=medlow" } */
+/* { dg-options "-march=rv32em -mabi=ilp32e -mno-div -mcmodel=medlow -fno-pie" } */
int main () {
#if !defined(__riscv)
/* { dg-do compile } */
-/* { dg-options "-march=rv64em -mabi=lp64e -mno-div -mcmodel=medlow" } */
+/* { dg-options "-march=rv64em -mabi=lp64e -mno-div -mcmodel=medlow -fno-pie" } */
/* { dg-warning "LP64E ABI is marked for deprecation in GCC" "" { target *-*-* } 0 } */
/* { dg-note "if you need LP64E please notify the GCC project via PR116152" "" { target *-*-* } 0 } */
/*
**foo:
** cm.push {ra}, -16
-** call f1
+** call f1(?:@plt)?
** cm.pop {ra}, 16
-** tail f2
+** tail f2(?:@plt)?
*/
void
foo (void)
/*
**test_popretz:
** cm.push {ra}, -16
-** call f1
+** call f1(?:@plt)?
** li a0,0
** cm.popret {ra}, 16
*/
/*
**foo:
** cm.push {ra}, -16
-** call f1
+** call f1(?:@plt)?
** cm.pop {ra}, 16
-** tail f2
+** tail f2(?:@plt)?
*/
void
foo (void)
/*
**test_popretz:
** cm.push {ra}, -16
-** call f1
+** call f1(?:@plt)?
** li a0,0
** cm.popret {ra}, 16
*/
** vs1r\.v\tv30,0\(sp\)
** sub\tsp,sp,t0
** vs1r\.v\tv31,0\(sp\)
-** call\tbar2
+** call\tbar2(?:@plt)?
** csrr\tt0,vlenb
** vl1re64\.v\tv31,0\(sp\)
** add\tsp,sp,t0
** foo3:
** call\tt0,__riscv_save_0
** vl1re8\.v\tv8,0\(a0\)
-** call\tbar1
-** call\tbar2
+** call\tbar1(?:@plt)?
+** call\tbar2(?:@plt)?
** tail\t__riscv_restore_0
*/
void
/*
** foo1:
** cm.push\t{ra},\s*-16
-** call\tbar1
+** call\tbar1(?:@plt)?
** cm.popret\t{ra},\s*16
*/
void
** vs1r\.v\tv30,0\(sp\)
** sub\tsp,sp,t0
** vs1r\.v\tv31,0\(sp\)
-** call\tbar2
+** call\tbar2(?:@plt)?
** csrr\tt0,vlenb
** vl1re64\.v\tv31,0\(sp\)
** add\tsp,sp,t0
** foo3:
** cm.push\t{ra},\s*-16
** vl1re8\.v\tv8,0\(a0\)
-** call\tbar1
+** call\tbar1(?:@plt)?
** cm.popret\t{ra},\s*16
*/
void
** foo1:
** addi\tsp,sp,-16
** sd\tra,8\(sp\)
-** call\tbar1
+** call\tbar1(?:@plt)?
** ld\tra,8\(sp\)
** addi\tsp,sp,16
** jr\tra
** vs1r\.v\tv30,0\(sp\)
** sub\tsp,sp,t0
** vs1r\.v\tv31,0\(sp\)
-** call\tbar2
+** call\tbar2(?:@plt)?
** csrr\tt0,vlenb
** vl1re64\.v\tv31,0\(sp\)
** add\tsp,sp,t0
** addi\tsp,sp,-16
** sd\tra,8\(sp\)
** vl1re8\.v\tv8,0\(a0\)
-** call\tbar1
+** call\tbar1(?:@plt)?
** ld\tra,8\(sp\)
** addi\tsp,sp,16
** jr\tra
/* Tiny __builtin_memcmp should use libc.
** f2:
** li\s+a\d,\d+
-** tail\s+memcmp
+** tail\s+memcmp(?:@plt)?
*/
int
f2 (void *a, void *b)
/* Don't inline if the length is too large for one operation.
** f6:
** li\s+a2,\d+
-** tail\s+memcmp
+** tail\s+memcmp(?:@plt)?
*/
int
f6 (void *a, void *b)
/* Tiny __builtin_memcmp should use libc.
** f1:
** li\s+a\d,\d+
-** tail\s+memcmp
+** tail\s+memcmp(?:@plt)?
*/
int
f1 (void *a, void *b)
/* Don't inline if the length is too large for one operation.
** f3:
** li\s+a2,\d+
-** tail\s+memcmp
+** tail\s+memcmp(?:@plt)?
*/
int
f3 (void *a, void *b)
/* Tiny __builtin_memcmp should use libc.
** f1:
** li\s+a\d,\d+
-** tail\s+memcmp
+** tail\s+memcmp(?:@plt)?
*/
int
f1 (void *a, void *b)
/* Don't inline if the length is too large for one operation.
** f4:
** li\s+a2,\d+
-** tail\s+memcmp
+** tail\s+memcmp(?:@plt)?
*/
int
f4 (void *a, void *b)
/* { dg-do compile { target { ! riscv_abi_e } } } */
-/* { dg-additional-options "-O1 -fno-schedule-insns -fno-schedule-insns2" } */
+/* { dg-additional-options "-O1 -fno-schedule-insns -fno-schedule-insns2 -fno-pie" } */
/* { dg-add-options riscv_v } */
/* { dg-final { check-function-bodies "**" "" } } */
memcpy (&a_a, &a_b, sizeof a_a);
}
-/* { dg-final { scan-assembler-not {\m(tail|call)\s+memcpy\M} } } */
+/* { dg-final { scan-assembler-not {\m(tail|call)\s+memcpy(?:@plt)?\M} } } */
/* Don't vectorise if the move is too large for one operation
** f4:
** li\s+a2,\d+
-** tail\s+memmove
+** tail\s+memmove(?:@plt)?
*/
char *
f4 (char *a, char const *b)
/*
** test_6:
** ...
-** call\s+__extendhfsf2
+** call\s+__extendhfsf2(?:@plt)?
** ...
-** call\s+__truncsfhf2
+** call\s+__truncsfhf2(?:@plt)?
** ...
*/
void
/* Don't vectorise if the move is too large for one operation.
** f7:
** li\s+a2,\d+
-** tail\s+memset
+** tail\s+memset(?:@plt)?
*/
void *
f7 (void *a, int const b)
/* Don't vectorise if the move is too large for requested lmul.
** f3:
** li\s+a2,\d+
-** tail\s+memset
+** tail\s+memset(?:@plt)?
*/
void *
f3 (void *a, int const b)
/* Don't vectorise if the move is too large for requested lmul.
** f4:
** li\s+a2,\d+
-** tail\s+memset
+** tail\s+memset(?:@plt)?
*/
void *
f4 (void *a, int const b)
** ...
** addi\ta0,sp,15
** andi\ta0,a0,-16
-** call\tf
+** call\tf(?:@plt)?
** ...
** lw\tra,12\(sp\)
** lw\ts0,8\(sp\)
**fool_rv32e:
** cm.push {ra}, -32
** ...
-** call bar
+** call bar(?:@plt)?
** ...
** lw a[0-5],32\(sp\)
** ...