On Wed, Nov 29, 2023 at 07:51:15AM +0100, Jose E. Marchesi wrote:
> > FAIL: gcc.c-torture/compile/libcall-2.c   -O1  (test for excess errors)
> > FAIL: gcc.c-torture/compile/libcall-2.c -O2 -flto
> > -fno-use-linker-plugin -flto-partition=none (test for excess errors)
> > FAIL: gcc.c-torture/compile/libcall-2.c -O2 -flto -fuse-linker-plugin
> > -fno-fat-lto-objects (test for excess errors)
> > FAIL: gcc.c-torture/compile/libcall-2.c   -O2  (test for excess errors)
> > FAIL: gcc.c-torture/compile/libcall-2.c   -O3 -g  (test for excess errors)
> > FAIL: gcc.c-torture/compile/libcall-2.c   -Os  (test for excess errors)
> 
> Sorry about the regression.
> 
> I installed the patch below to skip the test if the target is not x86_64
> in lp64, as obvious.  This should fix the issue.
> 
> >From 4ed0740c6e807460ce79a351094329fdeb551545 Mon Sep 17 00:00:00 2001
> From: "Jose E. Marchesi" <jose.march...@oracle.com>
> Date: Wed, 29 Nov 2023 07:44:59 +0100
> Subject: [PATCH] testsuite: fix gcc.c-torture/compile/libcall-2.c in -m32
> 
> This test relies on having __int128 in x86_64 targets, which is only
> available in -m64.
> 
> gcc/testsuite/ChangeLog
> 
>       * gcc.c-torture/compile/libcall-2.c: Skip test in -m32.
> ---
>  gcc/testsuite/gcc.c-torture/compile/libcall-2.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/gcc/testsuite/gcc.c-torture/compile/libcall-2.c 
> b/gcc/testsuite/gcc.c-torture/compile/libcall-2.c
> index b33944c83ff..9b889172025 100644
> --- a/gcc/testsuite/gcc.c-torture/compile/libcall-2.c
> +++ b/gcc/testsuite/gcc.c-torture/compile/libcall-2.c
> @@ -2,6 +2,8 @@
>     indirect calls.  */
>  
>  /* { dg-do compile } */
> +/* __int128 is not supported in x86 -m32.  */
> +/* { dg-skip-if "" { ! { x86_64-*-* && { ! ilp32 } } } } */
>  /* { dg-options "-O2 -mcmodel=large" { target x86_64-*-* } } */
>  /* { dg-final { scan-assembler "globl\t__divti3" } } */

This is not correct.
When a test uses __int128, it should be guarded with int128 effective
target.
But, as the test doesn't really test anything on non-x86 nor ia32,
it doesn't belong to gcc.c-torture/compile/ at all, it is x86 specific
test which should be moved to gcc.target/i386/libcall-1.c
And, should have
/* { dg-do compile { target int128 } } */
/* { dg-options "-O2 -mcmodel=large" } */
/* { dg-final { scan-assembler "globl\t__divti3" } } */
I guess no need to bother with the extra guard for -mcmodel=large,
because -m32/-mx32 don't have __int128 support, and x86_64-*-*
is incorrect anyway (because with that target one can have all
of -m32/-m64/-mx32).

        Jakub

Reply via email to