GCN vector sizes range between 64 and 512 bytes, none of which have correspondingly sized integer modes. This breaks a number of assumptions throughout the compiler, but I don't really want to create modes just for this purpose. Instead, this patch fixes up the cases that I've found, so far, such that the compiler tries something else, or fails to optimize, rather than just ICE. 2018-09-05 Andrew Stubbs Kwok Cheung Yeung Jan Hubicka Martin Jambor gcc/ * combine.c (gen_lowpart_or_truncate): Return clobber if there is not a integer mode if the same size as x. (gen_lowpart_for_combine): Fail if there is no integer mode of the same size. * expr.c (expand_expr_real_1): Force first operand to be in memory if it is a vector register and the result is in BLKmode. * tree-vect-stmts.c (vectorizable_store): Don't ICE when int_mode_for_size fails. (vectorizable_load): Likewise. --- gcc/combine.c | 13 ++++++++++++- gcc/expr.c | 8 ++++++++ gcc/tree-vect-stmts.c | 8 ++++---- 3 files changed, 24 insertions(+), 5 deletions(-)