From: Richard Ball Date: Tue, 1 Aug 2023 15:57:02 +0000 (+0100) Subject: [PATCH] Add POLY_INT_CST support to fold_ctor_reference in gimple-fold.cc X-Git-Tag: basepoints/gcc-15~7230 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7c09e7e24b0d04857d5880197959e75bda0c489e;p=thirdparty%2Fgcc.git [PATCH] Add POLY_INT_CST support to fold_ctor_reference in gimple-fold.cc Add POLY_INT_CST support to code within fold_ctor_reference. This code previously only supported INTEGER_CST which caused a bug when using VEC_PERM_EXPR with SVE vectors. gcc/ChangeLog: * gimple-fold.cc (fold_ctor_reference): Add support for poly_int. --- diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc index 86b83472a616..fd01810581ad 100644 --- a/gcc/gimple-fold.cc +++ b/gcc/gimple-fold.cc @@ -8159,8 +8159,8 @@ fold_ctor_reference (tree type, tree ctor, const poly_uint64 &poly_offset, result. */ if (!AGGREGATE_TYPE_P (TREE_TYPE (ctor)) && !offset /* VIEW_CONVERT_EXPR is defined only for matching sizes. */ - && !compare_tree_int (TYPE_SIZE (type), size) - && !compare_tree_int (TYPE_SIZE (TREE_TYPE (ctor)), size)) + && known_eq (wi::to_poly_widest (TYPE_SIZE (type)), size) + && known_eq (wi::to_poly_widest (TYPE_SIZE (TREE_TYPE (ctor))), size)) { ret = canonicalize_constructor_val (unshare_expr (ctor), from_decl); if (ret)