https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68990

--- Comment #6 from Vladimir Makarov <vmakarov at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #4)
> I think the problem is:
> ********** Pseudos coalescing #1: **********
> 
>   Coalescing move 5:r91(91)-r103(103) (freq=1)
>          Removing move 5 (freq=1)
> deleting insn with uid = 5.
>          Make unique value for inheritance r256
>          Make unique value for inheritance r257
>          Make unique value for inheritance r258
>          Make unique value for inheritance r259
>          Make unique value for inheritance r260
>          Make unique value for inheritance r262
>          Make unique value for inheritance r264
> Coalesced Moves = 1
> 
> in the other spot where insn 5 is it is perhaps possible to coalesce the two
> pseudos, but not at the
>   int m = -b;
>   if (m < b)
> comparison, where it breaks it.

I've reproduced the bug and checked the coalescing.   The coalescing seems the
right transformation as p91 becomes dead right before insn#30 and actually its
value before insn#30 through an inheritance pseudo is used in insn #31.  The
problem actually occurs later in pseudo assignment sub-pass.

I suspect that something is wrong with pseudo values.  Changes affecting pseudo
values much affect the performance much.  So when I have the patch, I need to
check the performance impact too.  I think if it is everything ok, the patch
will be ready at the end of week.

Reply via email to