diff options
author | Richard Biener <rguenther@suse.de> | 2019-11-28 12:26:50 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2019-11-28 12:26:50 +0000 |
commit | 68578d6efa09a5e5d3e7eca4de48f03b21f701c0 (patch) | |
tree | 4a1bdee96188de03b1806cdaee39d144f5802f3a /gcc/tree-inline.c | |
parent | 78307657cf9675bc4aa2e77561c823834714b4c8 (diff) | |
download | gcc-68578d6efa09a5e5d3e7eca4de48f03b21f701c0.zip gcc-68578d6efa09a5e5d3e7eca4de48f03b21f701c0.tar.gz gcc-68578d6efa09a5e5d3e7eca4de48f03b21f701c0.tar.bz2 |
re PR tree-optimization/92645 (Hand written vector code is 450 times slower when compiled with GCC compared to Clang)
2019-11-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/92645
* tree-inline.c (remap_gimple_stmt): When the return value
is not wanted, elide GIMPLE_RETURN.
* gcc.dg/tree-ssa/inline-12.c: New testcase.
From-SVN: r278807
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r-- | gcc/tree-inline.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index eecf5c6..720f50e 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -1541,9 +1541,12 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id) assignment to the equivalent of the original RESULT_DECL. If RETVAL is just the result decl, the result decl has already been set (e.g. a recent "foo (&result_decl, ...)"); - just toss the entire GIMPLE_RETURN. */ + just toss the entire GIMPLE_RETURN. Likewise for when the + call doesn't want the return value. */ if (retval && (TREE_CODE (retval) != RESULT_DECL + && (!id->call_stmt + || gimple_call_lhs (id->call_stmt) != NULL_TREE) && (TREE_CODE (retval) != SSA_NAME || ! SSA_NAME_VAR (retval) || TREE_CODE (SSA_NAME_VAR (retval)) != RESULT_DECL))) |