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]

[Bug target/69416] [6 Regression] Nonsense rtl checking failure


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

--- Comment #3 from Richard Henderson <rth at gcc dot gnu.org> ---
(In reply to Wilco from comment #2)
> It doesn't list the substitution before simplification, but it should be:
> 
> (set (reg:SI 465)
>   (gtu:SI 
>       (if_then_else:CC (ne (reg:SI 1002 [ ref_309(D)->codeD.85066 ]) 
>                            (const_int 47 [0x2f]))
>         (compare:CC (const_int 29 [0x1d]) (const_int 1 [0x1]))
>         (const_int 8 [0x8])))
>       (const_int 0 [0])))
> 
> I don't see how it could simplify this unless it constant evaluates both the
> then and else (despite CCmode type being special and needing extra care) and
> decides they are both true, so the if-condition doesn't matter at all...

Combine's behaviour with CCmode is suspect, but I guess that the ELSE
portion of the inner IF needs more than a bare const_int.

I would write this as (unspec:CC [(const_int 8)] UNSPEC_NZCV).

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