From 7c09e7e24b0d04857d5880197959e75bda0c489e Mon Sep 17 00:00:00 2001 From: Richard Ball Date: Tue, 1 Aug 2023 16:57:02 +0100 Subject: [PATCH] [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. --- gcc/gimple-fold.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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) -- 2.47.2