------- Additional Comments From geoffk at gcc dot gnu dot org 2005-04-29 22:11 ------- I have a fix for this.
The problem is like this: - Sometimes, assign_stack_temp can generate an invalid memory address. Even if the address was always valid, it's not always offsettable, which is what this pattern needs. - instantiate_virtual_regs_1 might not be supposed to be making the address valid, but it's not unreasonable for it or something else to try. If the address isn't valid, the insn can't be recognized, so it's not like we can try to keep the invalid address around until reload. - After reload, the address had better be offsettable, since it's "=o". Before reload, it might be offsettable, or we might be able to offset it anyway (if no_new_pseudos is clear). I was mistaken earlier, it was a regression in my patch. The regression was caused by a line which I didn't notice in a define_insn_and_split, changing '&& reload_completed' to '&& 1'. (That's now two stray changes in that patch that shouldn't have been there, sorry about that.) -- What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |geoffk at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20813