This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
More /u conflicts
- To: gcc at gcc dot gnu dot org
- Subject: More /u conflicts
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- Date: Wed, 14 Feb 01 18:48:11 EST
We discussed this before, but I think we really *do* have to allow a
/u object to be written more than once.
Here's a case that came up compiling part of GNAT for the x86.
The args are marked as readonly, but as assigned to pseudos.
We have two uses of an arg. The first is to store it into a structure
passed via a pointer and the second is to compute it's value - 14 for
testing.
regmove changes the second reference so the output is also the pseudo,
thus adding a second assignment, but so far all is OK.
Now that pseudo doesn't get a hard register, so all occurrences get convered
to use the MEM equiv, which is /u.
*Now* we have two stores into a /u value, the second one being originally
inserted by regmove.
I think the only way to deal with this is to view two /u references as
always conflicting.
Note also that this does not show up without -g, meaning that register
allocation or something depends on -g and that's very bad news!