From 634e03d3b84e77a4ff15f6271016dcb309eb0f95 Mon Sep 17 00:00:00 2001 From: Alexander Ivchenko Date: Fri, 24 May 2013 09:08:45 +0000 Subject: [PATCH] re PR tree-optimization/57385 ([tree-ssa] Possible segfault in fully_constant_vn_reference_p) gcc/ChangeLog PR tree-ssa/57385 * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Check that index is not negative. gcc/testsuite/ChangeLog PR tree-ssa/57385 * gcc.dg/tree-ssa/pr57385.c: New test. From-SVN: r199282 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/tree-ssa-sccvn.c | 1 + 3 files changed, 12 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ae1d9b5c0f7..01f77cbfa87 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2013-05-24 Alexander Ivchenko + + PR tree-ssa/57385 + * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Check + that index is not negative. + 2013-05-24 Eric Botcazou PR rtl-optimization/55177 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f9ef3c062a7..ca359e4ef68 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-05-24 Alexander Ivchenko + + PR tree-ssa/57385 + * gcc.dg/tree-ssa/pr57385.c: New test. + 2013-05-24 Eric Botcazou * gnat.dg/derived_type4.adb: New test. diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index 49d61b0c239..0e7a74c2a9c 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -1294,6 +1294,7 @@ fully_constant_vn_reference_p (vn_reference_t ref) == TYPE_MODE (TREE_TYPE (TREE_TYPE (arg0->op0)))) && GET_MODE_CLASS (TYPE_MODE (op->type)) == MODE_INT && GET_MODE_SIZE (TYPE_MODE (op->type)) == 1 + && tree_int_cst_sgn (op->op0) >= 0 && compare_tree_int (op->op0, TREE_STRING_LENGTH (arg0->op0)) < 0) return build_int_cst_type (op->type, (TREE_STRING_POINTER (arg0->op0)