> Am 24.09.2018 um 13:29 schrieb Richard Sandiford <richard.sandif...@arm.com>: > > Ilya Leoshkevich <i...@linux.ibm.com> writes: >> On S/390 there is a need to support more than 32 instruction >> alternatives per define_insn. Currently this is not explicitly >> prohibited or unsupported: MAX_RECOG_ALTERNATIVES is equal 35, and, >> futhermore, the related code uses uint64_t for bitmaps in most places. >> >> However, genattrtab contains the logic to convert (eq_attr "attribute" >> "value") RTXs to (eq_attr_alt bitmap) RTXs, where bitmap contains >> alternatives, whose "attribute" has the corresponding "value". >> Unfortunately, bitmap is only 32 bits. >> >> When adding the 33rd alternative, this led to (eq_attr "type" "larl") >> becoming (eq_attr_alt -1050625 1), where -1050625 == 0xffeff7ff. The >> cleared bits 12, 21 and 32 correspond to two existing and one newly >> added insn of type "larl". compute_alternative_mask sign extended this >> to 0xffffffffffeff7ff, which contained non-existent alternatives, and >> this made simplify_test_exp fail with "invalid alternative specified". >> >> I'm not sure why it didn't fail the same way before, since the top bit, >> which led to sign extension, should have been set even with 32 >> alternatives. Maybe simplify_test_exp was not called for "type" >> attribute for some reason? >> >> This patch widens EQ_ATTR_ALT bitmap to 64 bits, making it possible to >> gracefully handle up to 64 alternatives. It eliminates the problem with >> the 33rd alternative on S/390. > > Could you test this with --enable-checking=yes,rtl , if you haven't already, > to check that there are no mossing XINT->XWINT changes? > > OK if that passes, thanks.
I used only plain --enable-checking before, so I reran with your flags, and it passed too. I committed the patch as r264537.