diff mbox series

compile gcc.target/arm/{pr78255-2.c, memset-inline-2.c} with -mno-long-calls

Message ID orpn31fqs4.fsf@lxoliva.fsfla.org
State New
Headers show
Series compile gcc.target/arm/{pr78255-2.c, memset-inline-2.c} with -mno-long-calls | expand

Commit Message

Alexandre Oliva Dec. 22, 2020, 9:56 p.m. UTC
If the target is configured such that -mlong-call is passed
by default, the function calls these tests are trying to detect
by scanning the assembly file are performed using long calls,
like so:

    | foo:
    |     @ memset-inline-2.c:12:   memset (a, -1, 14);
    |         mov     r2, #14 @,
    |         mvn     r1, #0  @,
    |         ldr     r0, .L2 @,
    |         ldr     r3, .L2+4       @ tmp112,
    |         bx      r3              @ tmp112

Looking at .L2 (and in particular at .L2+4):

    | .L2:
    |         .word   a
    |         .word   memset   <<<---

This change adds -mno-long-calls to the list of compiler options
to make sure we generate short call code, allowing the assembly
matching to pass.

This is added unconditionally to the dg-options (as opposed to using
dg-additional-options) because this test is already specific to ARM
targets, and -mno-long-calls is available on all ARM targets.

Regstrapped on x86_64-linux-gnu, and tested with -x-arm-wrs-vxworks7r2.
Ok to install?


from Joel Brobecker <brobecker@adacore.com>
for  gcc/testsuite/ChangeLog

	* gcc.target/arm/memset-inline-2.c: Add -mno-long-calls to
        the test's dg-options.
        * gcc.target/arm/pr78255-2.c: Likewise.
---
 gcc/testsuite/gcc.target/arm/memset-inline-2.c |    2 +-
 gcc/testsuite/gcc.target/arm/pr78255-2.c       |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Mike Stump Dec. 29, 2020, 6:50 p.m. UTC | #1
On Dec 22, 2020, at 1:56 PM, Alexandre Oliva <oliva@adacore.com> wrote:
> 
> This change adds -mno-long-calls to the list of compiler options
> to make sure we generate short call code, allowing the assembly
> matching to pass.
> 
> This is added unconditionally to the dg-options (as opposed to using
> dg-additional-options) because this test is already specific to ARM
> targets, and -mno-long-calls is available on all ARM targets.
> 
> Regstrapped on x86_64-linux-gnu, and tested with -x-arm-wrs-vxworks7r2.
> Ok to install?

Ok.
diff mbox series

Patch

diff --git a/gcc/testsuite/gcc.target/arm/memset-inline-2.c b/gcc/testsuite/gcc.target/arm/memset-inline-2.c
index b8195cab8a67c..ba1f7ed1f1e35 100644
--- a/gcc/testsuite/gcc.target/arm/memset-inline-2.c
+++ b/gcc/testsuite/gcc.target/arm/memset-inline-2.c
@@ -1,5 +1,5 @@ 
 /* { dg-do run } */
-/* { dg-options "-save-temps -Os -fno-inline" } */
+/* { dg-options "-save-temps -Os -fno-inline -mno-long-calls" } */
 
 #include <string.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/gcc.target/arm/pr78255-2.c b/gcc/testsuite/gcc.target/arm/pr78255-2.c
index cc1c1801c37ee..fd379aecf9c75 100644
--- a/gcc/testsuite/gcc.target/arm/pr78255-2.c
+++ b/gcc/testsuite/gcc.target/arm/pr78255-2.c
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-options "-O2" }  */
+/* { dg-options "-O2 -mno-long-calls" }  */
 
 extern int bar (void *);