optimization/8165: builtin string functions SEGV on alpha-pc-linux-gnu at -O2
Glen Nakamura
glen@imodulo.com
Tue Oct 8 16:13:00 GMT 2002
On Tue, Oct 08, 2002 at 03:20:53PM -0700, Richard Henderson wrote:
> I get the feeling this is simply papering over the problem.
> I'll continue to investigate...
Thanks, you are quite possibly right.
There was a bunch of things happening, and I don't fully understand
the semantics of REG_EQUAL notes. I don't have the original rtx dumps,
but from memory things looked like this before gcse:
SET A
...
BEGIN_LOOP
...
SET B
USE B REG_EQUAL B
After gcse USE B is replaced with USE A, but REG_EQUAL still refers to B:
SET A
...
BEGIN_LOOP
...
SET B
USE A REG_EQUAL B
Then I think the loop pass moved USE A out of the loop (above SET B):
SET A
...
USE A REG_EQUAL B
BEGIN_LOOP
...
SET B
Eventually, SET B is determined dead and removed but the REG_EQUAL
referring to it still exists... Then for some reason, the REG_EQUAL note
gets used and bad things happen. One bad side-effect is that life-analysis
determines B is live at the entry of basic block 0. I hope this helps.
- glen
More information about the Gcc-bugs
mailing list