This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: REG_EH_REGION notes and substitutions into insn
- To: rth at redhat dot com
- Subject: Re: REG_EH_REGION notes and substitutions into insn
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- Date: Wed, 7 Nov 01 15:25:30 EST
- Cc: gcc at gcc dot gnu dot org
You mean e.g. something of the form
(insn (set (reg)
(mem/u (lo_sum (reg) (symbol_ref ".LC0"))))
(REG_EH_REGION (const_int)
(REG_EQUAL (const_double))))
Or just the MEM's address being a SYMBOL_REF and the REG_EQUIV note
being the MEM.
Ideally cse or combine or whatever would have noticed that the memory
doesn't trap -- possibly by the fact that it added a REG_EQUAL note,
as if it doesn't change the form of the mem, may_trap_p may still
return true.
Once the REG_EH_REGION note is removed, the edge removal would
be taken care of by purge_dead_edges.
But who is supposed to remove the note? I see no code to do that and that's
what appears to be the problem.