From: jakub Date: Thu, 10 Dec 2015 10:14:38 +0000 (+0000) Subject: PR tree-optimization/68785 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=522ea93ca08b3ce43179c69f1b821a837bf66f8f;p=thirdparty%2Fgcc.git PR tree-optimization/68785 * gimple-fold.c (fold_ctor_reference): Pass return value from native_encode_expr to native_interpret_expr. * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Likewise. * gcc.dg/pr68785.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231499 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eac591761082..50e6e7a39a61 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2015-12-10 Jakub Jelinek + + PR tree-optimization/68785 + * gimple-fold.c (fold_ctor_reference): Pass return value from + native_encode_expr to native_interpret_expr. + * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Likewise. + 2015-12-10 Richard Biener PR ipa/68331 diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 6ff5e266d420..6f8ec6f90a62 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -5495,9 +5495,10 @@ fold_ctor_reference (tree type, tree ctor, unsigned HOST_WIDE_INT offset, && size <= MAX_BITSIZE_MODE_ANY_MODE) { unsigned char buf[MAX_BITSIZE_MODE_ANY_MODE / BITS_PER_UNIT]; - if (native_encode_expr (ctor, buf, size / BITS_PER_UNIT, - offset / BITS_PER_UNIT) > 0) - return native_interpret_expr (type, buf, size / BITS_PER_UNIT); + int len = native_encode_expr (ctor, buf, size / BITS_PER_UNIT, + offset / BITS_PER_UNIT); + if (len > 0) + return native_interpret_expr (type, buf, len); } if (TREE_CODE (ctor) == CONSTRUCTOR) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6141624b7b90..fd5fc3e5913e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-12-10 Jakub Jelinek + + PR tree-optimization/68785 + * gcc.dg/pr68785.c: New test. + 2015-12-10 Richard Biener PR ipa/68331 diff --git a/gcc/testsuite/gcc.dg/pr68785.c b/gcc/testsuite/gcc.dg/pr68785.c new file mode 100644 index 000000000000..f4257da4dd8e --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr68785.c @@ -0,0 +1,9 @@ +/* PR tree-optimization/68785 */ +/* { dg-do compile } */ +/* { dg-options "-O3" } */ + +int +foo (void) +{ + return *(int *) ""; +} diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index 2014ee7a7ebf..3086f84f39e7 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -1370,8 +1370,9 @@ fully_constant_vn_reference_p (vn_reference_t ref) else { unsigned char buf[MAX_BITSIZE_MODE_ANY_MODE / BITS_PER_UNIT]; - if (native_encode_expr (ctor, buf, size, off) > 0) - return native_interpret_expr (ref->type, buf, size); + int len = native_encode_expr (ctor, buf, size, off); + if (len > 0) + return native_interpret_expr (ref->type, buf, len); } } }