This is the mail archive of the gcc-patches@gcc.gnu.org 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]

loop-invariant.c patch: Use validate_change to avoid breaking match_dup


This is another bug I came across while working on the ARM ldm/stm
peephole patch.  In loop-invariant.c, we currently replace RTL directly
without ensuring that this produces valid insns.  As a result, insn
patterns that use match_dup to match inputs to outputs can get broken.

Fixed by this patch, which uses validate_change instead of directly
replacing things.  It's slightly convoluted (doing the changes twice) in
order to avoid changing anything until the moment we know everything is OK.

Tested on arm-eabi{,mthumb}.  I'm nearly certain it was also in an
i686-linux tree I bootstrapped and tested, but I'll repeat that test to
be sure.  Ok for 4.6?


Bernd

Attachment: loop-inv.diff
Description: Text document


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