On 22/04/2020 17:43, Thomas Schwinge wrote:
In <https://gcc.gnu.org/PR94279> "[amdgcn] internal compiler error: RTL check: expected code 'const_int', have 'reg' in rtx_to_poly_int64, at rtl.h:2379", we recently found that that it's wrong to expect constant selectors, at least in the current code and its usage context. (Thanks, Richard Biener for the guidance!) Not too many actually, but of course, this code has seen some changes since 2013-12-04 (for example, r261530 "Use poly_int rtx accessors instead of hwi accessors"), and also the context may have changed that it's being used in -- so, I'm not sure whether the original code (as quoted above) is actually buggy already, but it already does contain the pattern that 'INTVAL' is used on something without making sure that we're actually dealing with a constant selector. (Has that maybe have been an impossible scenario back then?)
I think it was impossible. See https://gcc.gnu.org/legacy-ml/gcc-patches/2018-09/msg00273.html
Then, should this also be backported to release branches? GCC 9: same patch as for master branch. GCC 8: pre poly_int, so only need to guard 'INTVAL' (by 'CONST_INT_P', right?). Or, is that not worth it, given that nobody found this to be a problem until now (as far as I know), and/or it's maybe really specific to (or, exposed by) AMD GCN's vector instructions? (For AMD GCN offloading, we only care about master branch.)
I don't think it's needed prior to GCC 9, and then only for amdgcn which was probably not widely used.
Andrew