On Sat, Jul 26, 2025 at 10:37:35AM -0700, H.J. Lu wrote:
> __tls_get_addr doesn't preserve vector registers.  When a function
> with no_caller_saved_registers attribute calls __tls_get_addr, YMM
> and ZMM registers will be clobbered.  Issue an error and suggest
> -mtls-dialect=gnu2 in this case.
> 
> gcc/
> 
>       PR target/121208
>       * config/i386/i386.cc (ix86_tls_get_addr): Issue an error for
>       -mtls-dialect=gnu with no_caller_saved_registers attribute and
>       suggest -mtls-dialect=gnu2.
> 
> gcc/testsuite/
> 
>       PR target/121208
>       * gcc.target/i386/pr121208-1a.c: New test.
>       * gcc.target/i386/pr121208-1b.c: Likewise.

The above 2 tests FAIL on i686-linux:
spawn -ignore SIGHUP /home/jakub/src/gcc/obj91/gcc/xgcc 
-B/home/jakub/src/gcc/obj91/gcc/ 
/home/jakub/src/gcc/gcc/testsuite/gcc.target/i386/pr121208-1a.c 
-fdiagnostics-plain-output -O2 -fPIC -mtls-dialect=gnu -S -o pr121208-1a.s
/home/jakub/src/gcc/gcc/testsuite/gcc.target/i386/pr121208-1a.c: In function 
'foo':
/home/jakub/src/gcc/gcc/testsuite/gcc.target/i386/pr121208-1a.c:10:1: sorry, 
unimplemented: 80387 instructions aren't allowed in a function with the 
'no_caller_saved_registers' attribute
compiler exited with status 1
FAIL: gcc.target/i386/pr121208-1a.c  (test for errors, line 11)
FAIL: gcc.target/i386/pr121208-1a.c (test for excess errors)
Excess errors:
/home/jakub/src/gcc/gcc/testsuite/gcc.target/i386/pr121208-1a.c:10:1: sorry, 
unimplemented: 80387 instructions aren't allowed in a function with the 
'no_caller_saved_registers' attribute

Executing on host: /home/jakub/src/gcc/obj91/gcc/xgcc 
-B/home/jakub/src/gcc/obj91/gcc/  
/home/jakub/src/gcc/gcc/testsuite/gcc.target/i386/pr121208-1b.c    
-fdiagnostics-plain-output   -O2 -fPIC -mtls-dialect=gnu2 -S -o pr121208-1b.s   
 (timeout = 300)
spawn -ignore SIGHUP /home/jakub/src/gcc/obj91/gcc/xgcc 
-B/home/jakub/src/gcc/obj91/gcc/ 
/home/jakub/src/gcc/gcc/testsuite/gcc.target/i386/pr121208-1b.c 
-fdiagnostics-plain-output -O2 -fPIC -mtls-dialect=gnu2 -S -o pr121208-1b.s
In file included from 
/home/jakub/src/gcc/gcc/testsuite/gcc.target/i386/pr121208-1b.c:4:
/home/jakub/src/gcc/gcc/testsuite/gcc.target/i386/pr121208-1a.c: In function 
'foo':
/home/jakub/src/gcc/gcc/testsuite/gcc.target/i386/pr121208-1a.c:10:1: sorry, 
unimplemented: 80387 instructions aren't allowed in a function with the 
'no_caller_saved_registers' attribute
compiler exited with status 1
FAIL: gcc.target/i386/pr121208-1b.c (test for excess errors)
Excess errors:
/home/jakub/src/gcc/gcc/testsuite/gcc.target/i386/pr121208-1a.c:10:1: sorry, 
unimplemented: 80387 instructions aren't allowed in a function with the 
'no_caller_saved_registers' attribute

Dunno if you want to add -msse to dg-options or tweak those tests
in some different way.

        Jakub

Reply via email to