https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118673
--- Comment #1 from Sam James <sjames at gcc dot gnu.org> --- If I drop the prints I added to getIntegerDotProductCapabilities, the difference goes back to: ``` │ Disassembly of section .text._ZN4mlir5spirv6SDotOp15getCapabilitiesEv: │ │ 0000000000000000 <mlir::spirv::SDotOp::getCapabilities()>: │ mlir::spirv::SDotOp::getCapabilities(): │ push %r14 │ - lea 0x0(%rip),%rax │ - R_X86_64_PC32 .rodata._ZZN4mlir5spirvL32getIntegerDotProductCapabilitiesINS0_6SDotOpEEEN4llvm11SmallVectorINS3_8ArrayRefINS0_10CapabilityEEELj1EEEPNS_9OperationEE13dotProductCap-0x4 │ mov $0x1,%edx │ push %r13 │ push %r12 │ push %rbp │ push %rbx │ mov %rdi,%rbx │ - sub $0x10,%rsp │ + sub $0x20,%rsp │ mov (%rsi),%r13 │ - mov %rsp,%r12 │ - mov %rax,(%rsp) │ - movq $0x1,0x8(%rsp) │ + lea 0x10(%rsp),%r12 │ + lea 0xc(%rsp),%rax │ + movl $0x1783,0xc(%rsp) │ mov %r12,%rsi │ - call 36 <mlir::spirv::SDotOp::getCapabilities()+0x36> │ + mov %rax,0x10(%rsp) │ + movq $0x1,0x18(%rsp) │ + call 3f <mlir::spirv::SDotOp::getCapabilities()+0x3f> [...] ``` But it clearly affects the loads of the constants, anyway.