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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
           Keywords|needs-bisection,            |
                   |needs-reduction             |
             Status|ASSIGNED                    |RESOLVED

--- Comment #18 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Uroš Bizjak from comment #17)
> (In reply to Richard Biener from comment #16)
> 
> > There's still a correctness (IMO) patch pending.  Possibly, as FLAGS_REG
> > should not be live across edges and the relevant hardregs should only
> 
> IIRC, compare-elim.cc can make flags reg live across edges.

Indeed.  The gcc.target/i386/pr121572-1a.c testcase shows one example.

Other cases of iteration would likely involve "invalid" source using
a register __asm__("rdx") or similar, using a caller save register.
DF likely tracks that in live-in, so we'd refuse to insert the TLS
call.  But we are not doing proper local liveness compute for those
given note_stores -> ix86_check_flags_reg only ever makes FLAGS_REG
live.

I'll leave the patch to fixup the iteration point computation up for
review - it's still prone to never make progress and possibly slow
due to many CC setters in a function.

But closing this bug as all known testcases are fixed.

Reply via email to