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/58574] [4.8/4.9 Regression] Wrong code due to s390x machine reorg pass


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58574

--- Comment #5 from Andreas Krebbel <krebbel at gcc dot gnu.org> ---
Thanks for tracking this down!

(In reply to Jakub Jelinek from comment #2)
> I'd say the bug is in s390_chunkify_start:
>           if (GET_CODE (pat) == PARALLEL && XVECLEN (pat, 0) > 2)
>             pat = XVECEXP (pat, 0, 0);
> Dunno what exactly the > 2 condition has been added for, JUMP_INSNs with

The more complex loop jumps might have more than 2 I think.

> PARALLEL with XVECLEN (pat, 0) == 2 are:
> 1) casesi_jump
> 2) *cmp_and_br_signed_<mode>, *cmp_and_br_unsigned_<mode>,
> *icmp_and_br_signed_<mode>, *icmp_and_br_unsigned_<mode>
> 3) *ccraw_to_int
> I can understand why you wouldn't want to handle 1) in there, and supposedly
> 3) should be split before machine reorg or worst case at the start of it. 
> But 2), this case, it looks wrong not to do anything here.
> 
> Note that similar condition is in s390_split_branches, no idea what do you
> want to do there.  But perhaps TARGET_Z10 implies TARGET_ZARCH and thus
> s390_split_branches would be never called.

Exactly.


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