diff options
author | Marek Polacek <polacek@redhat.com> | 2018-02-08 16:18:04 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2018-02-08 16:18:04 +0000 |
commit | c6ba596b58e458391ed015e26b763e72ec725600 (patch) | |
tree | db118338713f091c7af541415bf7da87e6a40dea /gcc/tree-ssa-strlen.c | |
parent | a4296998322d3bb3b53c7412715cc2169f1d4f61 (diff) | |
download | gcc-c6ba596b58e458391ed015e26b763e72ec725600.zip gcc-c6ba596b58e458391ed015e26b763e72ec725600.tar.gz gcc-c6ba596b58e458391ed015e26b763e72ec725600.tar.bz2 |
re PR tree-optimization/84238 (ICE tree check: expected integer_cst, have plus_expr in to_wide, at tree.h:5527)
PR tree-optimization/84238
* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Verify the result of
get_range_strlen.
* gcc.dg/Wstringop-overflow-3.c: New test.
From-SVN: r257497
Diffstat (limited to 'gcc/tree-ssa-strlen.c')
-rw-r--r-- | gcc/tree-ssa-strlen.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c index f0f6535..94ed2be 100644 --- a/gcc/tree-ssa-strlen.c +++ b/gcc/tree-ssa-strlen.c @@ -1899,7 +1899,10 @@ maybe_diag_stxncpy_trunc (gimple_stmt_iterator gsi, tree src, tree cnt) { tree range[2]; get_range_strlen (src, range); - if (range[0]) + if (range[0] != NULL_TREE + && TREE_CODE (range[0]) == INTEGER_CST + && range[1] != NULL_TREE + && TREE_CODE (range[1]) == INTEGER_CST) { lenrange[0] = wi::to_wide (range[0], prec); lenrange[1] = wi::to_wide (range[1], prec); |