https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89746
--- Comment #7 from Segher Boessenkool <segher at gcc dot gnu.org> --- Author: segher Date: Tue Mar 19 16:58:42 2019 New Revision: 269802 URL: https://gcc.gnu.org/viewcvs?rev=269802&root=gcc&view=rev Log: rs6000: Unaligned stfiwx on older CPUs (PR89746) The "classic" PowerPCs (6xx/7xx) are not STRICT_ALIGNMENT, but their floating point units are. This is not normally a problem, the ABIs make everything FP aligned. The RTL patterns converting FP to integer however get a potentially unaligned destination, and we do not want to do an stfiwx on that on such older CPUs. This fixes it. It does not change anything for TARGET_MFCRF targets (POWER4 and later). It also won't change anything for strict-alignment targets, or CPUs without hardware FP of course, or CPUs that do not implement stfiwx (older 4xx/5xx/8xx). It does not change the corresponding fixuns* pattern, because that can not be enabled on any CPU that cannot handle unaligned FP well. PR target/89746 * config/rs6000/rs6000.md (fix_trunc<mode>si2_stfiwx): If we have a non-TARGET_MFCRF target, and the dest is memory but not 32-bit aligned, go via a stack temporary. Modified: trunk/gcc/ChangeLog trunk/gcc/config/rs6000/rs6000.md