From: Martin Liska Date: Tue, 3 Jan 2017 12:08:10 +0000 (+0100) Subject: Fix tree-optimization/78886. X-Git-Tag: releases/gcc-5.5.0~613 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b998b0057ac0f0ef2275509470d80d4c8dcebcd6;p=thirdparty%2Fgcc.git Fix tree-optimization/78886. 2017-01-03 Martin Liska Backport from mainline 2016-12-22 Martin Liska PR tree-optimization/78886 * tree-ssa-strlen.c (handle_builtin_malloc): Return when LHS is equal to NULL. 2017-01-03 Martin Liska Backport from mainline 2016-12-22 Martin Liska PR tree-optimization/78886 * gcc.dg/tree-ssa/pr78886.c: New test. From-SVN: r244019 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e918175c46b2..5d5ff83669de 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2017-01-03 Martin Liska + + Backport from mainline + 2016-12-22 Martin Liska + + PR tree-optimization/78886 + * tree-ssa-strlen.c (handle_builtin_malloc): Return when LHS + is equal to NULL. + 2017-01-03 Martin Liska Backport from mainline diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 89bd178d9878..a2d2c68bda3c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2017-01-03 Martin Liska + + Backport from mainline + 2016-12-22 Martin Liska + + PR tree-optimization/78886 + * gcc.dg/tree-ssa/pr78886.c: New test. + 2017-01-03 Martin Liska Backport from mainline diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr78886.c b/gcc/testsuite/gcc.dg/tree-ssa/pr78886.c new file mode 100644 index 000000000000..97799301547b --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr78886.c @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-O2" } */ +void *malloc(unsigned long x); + +void foo(void) +{ + volatile int i; + malloc(1); + i; +} diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c index e6eaad43a95d..732f3b4d671f 100644 --- a/gcc/tree-ssa-strlen.c +++ b/gcc/tree-ssa-strlen.c @@ -1891,6 +1891,9 @@ handle_builtin_malloc (enum built_in_function bcode, gimple_stmt_iterator *gsi) { gimple stmt = gsi_stmt (*gsi); tree lhs = gimple_call_lhs (stmt); + if (lhs == NULL_TREE) + return; + gcc_assert (get_stridx (lhs) == 0); int idx = new_stridx (lhs); tree length = NULL_TREE;