This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Confusing code in regrename.c
- From: Steven Bosscher <stevenb at suse dot de>
- To: rth at redhat dot com
- Cc: gcc at gcc dot gnu dot org
- Date: Sun, 26 Jun 2005 17:27:31 +0200
- Subject: Confusing code in regrename.c
Hi,
You added some code to regrename in revision 1.28 for which I don't
understand the need:
1.26 rth 1595: /* For each earlyclobber operand, zap the value data. */
1596: for (i = 0; i < n_ops; i++)
1597: if (recog_op_alt[i][alt].earlyclobber)
1598: kill_value (recog_data.operand[i], vd);
1599:
1600: /* Within asms, a clobber cannot overlap inputs or outputs.
1601: I wouldn't think this were true for regular insns, but
1602: scan_rtx treats them like that... */
1603: note_stores (PATTERN (insn), kill_clobbered_value, vd);
1604:
1605: /* Kill all auto-incremented values. */
1606: /* ??? REG_INC is useless, since stack pushes aren't done that way. */
1607: for_each_rtx (&PATTERN (insn), kill_autoinc_value, vd);
1.28 rth 1608:
1609: /* Kill all early-clobbered operands. */
1610: for (i = 0; i < n_ops; i++)
1611: if (recog_op_alt[i][alt].earlyclobber)
1612: kill_value (recog_data.operand[i], vd);
The stuff added in 1.28 (lines 1608-1612) to kill early-clobbered
operands is precisely the same as what is done just a few lines
earlier (lines 1595-1598). Is this a thinko or is this necessary for
some non-obvious reason??
Gr.
Steven