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" <[email protected]>
> 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