This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: optimization/8165: builtin string functions SEGV on alpha-pc-linux-gnu at -O2


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]