re PR rtl-optimization/78812 (Wrong code generation due to hoisting memory load acros...
authorJeff Law <law@redhat.com>
Thu, 5 Jan 2017 07:38:48 +0000 (00:38 -0700)
committerJeff Law <law@gcc.gnu.org>
Thu, 5 Jan 2017 07:38:48 +0000 (00:38 -0700)
commitd80c6d02fdf0c37596e51392ade43414a350373a
tree8e37be87c8ec04e67bbf7f825c453fd039b46d57
parent0f9cf7ff836bbc7d4f68e47918c878983c08e386
re PR rtl-optimization/78812 (Wrong code generation due to hoisting memory load across function call)

PR tree-optimizatin/78812
* rtl.h (contains_mem_rtx_p): Prototype.
* ifcvt.c (containts_mem_rtx_p): Move from here to...
* rtlanal.c (contains_mem_rtx_p): Here and remvoe static linkage.
* gcse.c (prune_expressions): Use contains_mem_rtx_p to discover
and prune MEMs that are not at the toplevel of a SET_SRC rtx.  Look
through ZERO_EXTEND and SIGN_EXTEND when trying to avoid pruning
MEMs.

PR tree-optimization/78812
* g++.dg/torture/pr78812.C: New test.

From-SVN: r244093
gcc/ChangeLog
gcc/gcse.c
gcc/ifcvt.c
gcc/rtl.h
gcc/rtlanal.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/torture/pr78812.C [new file with mode: 0644]