On Thu, Dec 07, 2023 at 05:27:28PM +0100, Marc Poulhiès wrote:
> abort() is not always available, using the builtin as done in other
> tests.
>
> gcc/testsuite/ChangeLog:
>
> * g++.target/i386/excess-precision-12.C: call builtin_abort instead of
> abort.
> ---
> Tested on x86_64-linux and x86_64-elf.
>
> Ok for master?
>
> gcc/testsuite/g++.target/i386/excess-precision-12.C | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/gcc/testsuite/g++.target/i386/excess-precision-12.C
> b/gcc/testsuite/g++.target/i386/excess-precision-12.C
> index dff48c07c8b..e59f7c3b1fb 100644
> --- a/gcc/testsuite/g++.target/i386/excess-precision-12.C
> +++ b/gcc/testsuite/g++.target/i386/excess-precision-12.C
> @@ -13,8 +13,8 @@ main (void)
> unsigned long long int u = (1ULL << 63) + 1;
>
> if ((f <=> u) >= 0)
> - abort ();
> + __builtin_abort ();
>
> if ((u <=> f) <= 0)
> - abort ();
> + __builtin_abort ();
Why wouldn't they have abort and what else does __builtin_abort () expand
to?
There are 2000+ other tests in gcc.target/i386/ which call abort (),
not __builtin_abort (), after including <stdlib.h> directly or indirectly
or declaring it themselves. This test in particular includes <cstdlib>
Does whatever target you are running this into provide just std::abort ()
and not abort (); from <cstdlib>? If so, perhaps it should call
std::abort (); instead of abort ().
Jakub