https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58416
--- Comment #26 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Martin Jambor <jamb...@gcc.gnu.org>: https://gcc.gnu.org/g:f577959f420ae404f99f630dadc1c0370734d0da commit r15-3070-gf577959f420ae404f99f630dadc1c0370734d0da Author: Martin Jambor <mjam...@suse.cz> Date: Wed Aug 21 14:49:11 2024 +0200 sra: Avoid risking x87 magling binary representation of a replacement (PR 58416) PR 58416 shows that storing non-floating point data to floating point scalar registers can lead to miscompilations when the data is normalized or otherwise processed upon loading to a register. To avoid that risk, this patch detects situations where we have multiple types and a we decide to represent the data in a type with a mode that is known to not be able to transfer actual bits reliably using the new TARGET_MODE_CAN_TRANSFER_BITS hook. gcc/ChangeLog: 2024-08-19 Martin Jambor <mjam...@suse.cz> PR target/58416 * tree-sra.cc (types_risk_mangled_binary_repr_p): New function. (sort_and_splice_var_accesses): Use it. (propagate_subaccesses_from_rhs): Likewise. gcc/testsuite/ChangeLog: 2024-08-19 Martin Jambor <mjam...@suse.cz> PR target/58416 * gcc.dg/torture/pr58416.c: New test.