mstorsjo wrote: I managed to reduce the breakage to the following snippet: ```c long double powl(long double a, long double b); long double a() { return powl(2.0L, 2.0L); } ``` Compiled like this: ``` $ clang -target x86_64-w64-mingw32 -S -O2 -o out.s repro.c ``` The output between before and after this change differs like this: ```diff --- out-good.s 2024-09-16 13:45:09.505125890 +0300 +++ out-bad.s 2024-09-16 13:45:09.533125294 +0300 @@ -10,12 +10,7 @@ .scl 2; .type 32; .endef - .section .rdata,"dr" - .p2align 2, 0x0 # -- Begin function a -.LCPI0_0: - .long 0x40000000 # float 2 - .text - .globl a + .globl a # -- Begin function a .p2align 4, 0x90 a: # @a .seh_proc a @@ -26,16 +21,10 @@ .seh_stackalloc 80 .seh_endprologue movq %rcx, %rsi - flds .LCPI0_0(%rip) - fld %st(0) - fstpt 48(%rsp) - fstpt 32(%rsp) leaq 64(%rsp), %rcx leaq 48(%rsp), %rdx leaq 32(%rsp), %r8 callq powl - fldt 64(%rsp) - fstpt (%rsi) movq %rsi, %rax addq $80, %rsp popq %rsi ```
I'll push a revert shortly. https://github.com/llvm/llvm-project/pull/108575 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits