diff options
author | Martin Liska <mliska@suse.cz> | 2018-02-19 19:29:52 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-02-19 18:29:52 +0000 |
commit | 6a5aca53278dd43bea2618126f282125c5ca3e02 (patch) | |
tree | 0faf090d04bbffe5e6dd904eeb72d6e34234cb3e /gcc | |
parent | a197d3406c4c2c472b8f38fb5de2bdc4e3db9476 (diff) | |
download | gcc-6a5aca53278dd43bea2618126f282125c5ca3e02.zip gcc-6a5aca53278dd43bea2618126f282125c5ca3e02.tar.gz gcc-6a5aca53278dd43bea2618126f282125c5ca3e02.tar.bz2 |
Fix ubsan in gimple-fold.c (PR tree-optimization/82491).
2018-02-19 Martin Liska <mliska@suse.cz>
Richard Sandiford <richard.sandiford@linaro.org>
PR tree-optimization/82491
* gimple-fold.c (get_base_constructor): Make earlier bail out
to prevent ubsan.
Co-Authored-By: Richard Sandiford <richard.sandiford@linaro.org>
From-SVN: r257816
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/gimple-fold.c | 10 |
2 files changed, 10 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6b59722..7a37db7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2018-02-19 Martin Liska <mliska@suse.cz> + Richard Sandiford <richard.sandiford@linaro.org> + + PR tree-optimization/82491 + * gimple-fold.c (get_base_constructor): Make earlier bail out + to prevent ubsan. + 2018-02-19 Carl Love <cel@us.ibm.com> * config/rs6000/rs6000-builtin.def: Change NEG macro expansions from diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index e556f05..c9dad6f 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -6442,13 +6442,9 @@ get_base_constructor (tree base, poly_int64_pod *bit_offset, if (TREE_CODE (base) == MEM_REF) { - if (!integer_zerop (TREE_OPERAND (base, 1))) - { - if (!tree_fits_shwi_p (TREE_OPERAND (base, 1))) - return NULL_TREE; - *bit_offset += (mem_ref_offset (base).force_shwi () - * BITS_PER_UNIT); - } + poly_offset_int boff = *bit_offset + mem_ref_offset (base) * BITS_PER_UNIT; + if (!boff.to_shwi (bit_offset)) + return NULL_TREE; if (valueize && TREE_CODE (TREE_OPERAND (base, 0)) == SSA_NAME) |