[PATCH] Fix valtrack ICE (PR debug/53923)

Alexandre Oliva aoliva@redhat.com
Wed Sep 5 22:21:00 GMT 2012


On Aug 20, 2012, Jakub Jelinek <jakub@redhat.com> wrote:

> On the testcase from this PR on AVR (from libgcc, thus not including
> it into testsuite/) we ICE, because dead_debug_insert_temp is called
> several times on the same insn, for multi-register hard register for each
> regno in it (except the first which doesn't seem to be dead).
> In the first call dead_debug_insert_temp changes *DF_REF_REAL_LOC
> to DEBUG_EXPR, and in the next call for the next consecutive hard register
> we set reg variable to *DF_REF_REAL_LOC and rely on it to be a REG,
> when it is a DEBUG_EXPR already instead.

This scenario sounds awfully familiar.  (looks at personal notes) Yeah,
PR53740.  Does it look like the same problem, perhaps incompletely fixed
there?

I'm just concerned whether the multi-register HW reg should have been
handled differently elsewhere, and this patch of yours is treating the
symptom rather than the underlying issue.  Do you have more
recollections on whether the multi-reg refs made sense there?  I ask
because, when I debugged 53740, what I found out was that it didn't, we
had regs marked as requiring dead_debug handling that really didn't.

Now, if you didn't examine that possibility or don't recall the details
(sorry it took me so long to get back to you), I'll be glad to have a
look myself.

> 2012-08-20  Jakub Jelinek  <jakub@redhat.com>

> 	PR debug/53923
> 	* valtrack.c (dead_debug_insert_temp): Drop non-reg uses
> 	from the chain.

-- 
Alexandre Oliva, freedom fighter    http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/   FSF Latin America board member
Free Software Evangelist      Red Hat Brazil Compiler Engineer



More information about the Gcc-patches mailing list