diff options
author | Jakub Jelinek <jakub@redhat.com> | 2019-11-05 11:17:29 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2019-11-05 11:17:29 +0100 |
commit | f05b372429ba6fa6e2bba0f4145a11e8e4aee5cd (patch) | |
tree | c10d0f620692a606831b5a38c9ddb69da11443ce /gcc | |
parent | 81012684569cfb64b0274f117d68740cde52ffdd (diff) | |
download | gcc-f05b372429ba6fa6e2bba0f4145a11e8e4aee5cd.zip gcc-f05b372429ba6fa6e2bba0f4145a11e8e4aee5cd.tar.gz gcc-f05b372429ba6fa6e2bba0f4145a11e8e4aee5cd.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/builtins.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr91945.f90 | 5 |
4 files changed, 18 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 87b1080..39832ef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/builtins.c b/gcc/builtins.c index 5d811f1..c8fa86f 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9be2ab4..8a12ddc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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. diff --git a/gcc/testsuite/gfortran.dg/pr91945.f90 b/gcc/testsuite/gfortran.dg/pr91945.f90 new file mode 100644 index 0000000..d417a8b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr91945.f90 @@ -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' |