Hi This patch fixes the push_minipool_fix ICE, which occurs when the ARM backend encounters a zero/sign extending load from a constant pool.
I don't have a current test case for trunk, lp1296601 has a test case which affects the linaro-4.8 branch. As far as I know, there has been no fix for this on trunk. The approach taken in this patch is to extend each pattern where this can occur, so that it triggers a define_split to synthesise a constant move instead. Some but not all extend patterns have previously added pool_range attributes to work-around this problem, this patch removes those, and also fixes the remaining patterns. Some patterns have slightly more complex workarounds, which I have not yet analysed, but it seems worth posting the patch at this stage to get feedback on the general approach. Tested on arm-unknown-linux-gnueabihf (qemu), bootstrap in progress. If this looks good, I'll clean it up for a more detailed review. Thanks Charles
0001-initial-attempt-at-fixing-push_minipool_fix-ICE.patch
Description: application/download