aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-fold.c
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2018-06-13 20:29:04 +0000
committerMartin Sebor <msebor@gcc.gnu.org>2018-06-13 14:29:04 -0600
commita7bf6c088934ef39a937069fca7408c7f540c551 (patch)
tree07550cd4b992b1eb84936c13801494f6fe66c2e1 /gcc/gimple-fold.c
parenteb04ee1d0f23b14c251a850f2a26429d324b1f6f (diff)
downloadgcc-a7bf6c088934ef39a937069fca7408c7f540c551.zip
gcc-a7bf6c088934ef39a937069fca7408c7f540c551.tar.gz
gcc-a7bf6c088934ef39a937069fca7408c7f540c551.tar.bz2
PR tree-optimization/86114 - ICE in gimple_fold_builtin_strlen with an invalid call to strnlen
gcc/testsuite/ChangeLog: PR tree-optimization/86114 * gcc.dg/pr86114.c: New test. gcc/ChangeLog: PR tree-optimization/86114 * gimple-fold.c (gimple_fold_builtin_strlen): Only handle LHS of integer types. * tree-ssa-strlen.c (maybe_set_strlen_range): Same. From-SVN: r261567
Diffstat (limited to 'gcc/gimple-fold.c')
-rw-r--r--gcc/gimple-fold.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index c1d8442..a01bce7 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -3538,9 +3538,10 @@ gimple_fold_builtin_strlen (gimple_stmt_iterator *gsi)
return true;
}
- tree lhs = gimple_call_lhs (stmt);
- if (lhs && TREE_CODE (lhs) == SSA_NAME)
- set_range_info (lhs, VR_RANGE, minlen, maxlen);
+ if (tree lhs = gimple_call_lhs (stmt))
+ if (TREE_CODE (lhs) == SSA_NAME
+ && INTEGRAL_TYPE_P (TREE_TYPE (lhs)))
+ set_range_info (lhs, VR_RANGE, minlen, maxlen);
return false;
}