constraints after replacing a register address with an autoincrement
address for reload inheritance purposes.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@24449
138bc75d-0d04-0410-961f-
82ee72b054a4
Wed Dec 30 23:38:55 1998 Jeffrey A Law (law@cygnus.com)
+ * reload1.c (reload_as_needed): Verify that the insn satisfies its
+ constraints after replacing a register address with an autoincrement
+ address for reload inheritance purposes.
+
* i386.md (doubleword shifts): Avoid namespace pollution.
Wed Dec 30 23:00:28 1998 David O'Brien <obrien@NUXI.com>
if (! n)
continue;
if (n == 1)
- n = validate_replace_rtx (reload_reg,
- gen_rtx (code, mode,
- reload_reg), p);
+ {
+ n = validate_replace_rtx (reload_reg,
+ gen_rtx (code, mode,
+ reload_reg),
+ p);
+
+ /* We must also verify that the constraints
+ are met after the replacement. */
+ extract_insn (p);
+ if (n)
+ n = constrain_operands (1);
+ else
+ break;
+
+ /* If the constraints were not met, then
+ undo the replacement. */
+ if (!n)
+ {
+ validate_replace_rtx (gen_rtx (code, mode,
+ reload_reg),
+ reload_reg, p);
+ break;
+ }
+
+ }
break;
}
if (n == 1)