This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] [ARM] [RFC] Fix longstanding push_minipool_fix ICE (PR49423, lp1296601)


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.


Attachment: 0001-initial-attempt-at-fixing-push_minipool_fix-ICE.patch
Description: application/download

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]