re PR tree-optimization/91945 (ICE: tree check: expected integer_cst, have var_decl in get_len, at tree.h:5837 since r274997)

PR tree-optimization/91945
	* builtins.c (compute_objsize): For ARRAY_REF, only multiply off
	by tpsize if it is both non-NULL and INTEGER_CST, otherwise punt.
	Formatting fix.

	* gfortran.dg/pr91945.f90: New test.

From-SVN: r277820
This commit is contained in:
Jakub Jelinek 2019-11-05 11:17:29 +01:00 committed by Jakub Jelinek
parent 8101268456
commit f05b372429
4 changed files with 18 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2019-11-05 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/91945
* builtins.c (compute_objsize): For ARRAY_REF, only multiply off
by tpsize if it is both non-NULL and INTEGER_CST, otherwise punt.
Formatting fix.
2019-11-05 Aldy Hernandez <aldyh@redhat.com>
* range-op.cc (wi_set_zero_nonzero_bits): Remove static qualifier.

View File

@ -3626,7 +3626,7 @@ compute_objsize (tree dest, int ostype, tree *pdecl /* = NULL */)
}
}
else if (TREE_CODE (off) == SSA_NAME
&& INTEGRAL_TYPE_P (TREE_TYPE (off)))
&& INTEGRAL_TYPE_P (TREE_TYPE (off)))
{
wide_int min, max;
enum value_range_kind rng = get_range_info (off, &min, &max);
@ -3680,7 +3680,8 @@ compute_objsize (tree dest, int ostype, tree *pdecl /* = NULL */)
if (TREE_CODE (dest) == ARRAY_REF)
{
tree eltype = TREE_TYPE (dest);
if (tree tpsize = TYPE_SIZE_UNIT (eltype))
tree tpsize = TYPE_SIZE_UNIT (eltype);
if (tpsize && TREE_CODE (tpsize) == INTEGER_CST)
off = fold_build2 (MULT_EXPR, size_type_node, off, tpsize);
else
return NULL_TREE;

View File

@ -1,5 +1,8 @@
2019-11-05 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/91945
* gfortran.dg/pr91945.f90: New test.
PR c++/92343
* g++.dg/cpp2a/attr-likely6.C: New test.

View File

@ -0,0 +1,5 @@
! PR tree-optimization/91945
! { dg-do compile }
! { dg-options "-O3 -fstack-arrays -fno-guess-branch-probability" }
include 'result_in_spec_1.f90'