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] |
I found a number of bugs while testing an ARM patch that rewrites the ldm/stm peepholes. In eliminate_regs_in_insn, we substitute new operands in the insn create a copy (new_body) of the insn's body (old_body) set the insn's PATTERN to new_body replace the subtituted operands with their original values The last step ensures that old_body returns to its unchanged form. However, if one of the operands' location is &PATTERN (insn), as can happen with a top-level match_parallel, we'll also undo the replacement of new_body for the pattern, which later confuses find_reloads. Fixed by only undoing substitutions for operands that aren't the whole pattern. Bootstrapped and regression tested on i686-linux, together with some other fixes. Ok? Bernd
Attachment:
p2-elim.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |