summaryrefslogtreecommitdiff
path: root/move-if-change
diff options
context:
space:
mode:
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2016-05-18 14:01:31 +0000
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>2016-05-18 14:01:31 +0000
commit8ba6639c945969f51e51f9650f0ffb5a22245fc0 (patch)
treea8b6d0e0b1940214a97b2c5e39a0e3fd1e099cf9 /move-if-change
parentcba29c3a752c60978a9ffb4713e426d8e5b82f88 (diff)
downloadgcc-8ba6639c945969f51e51f9650f0ffb5a22245fc0.tar.gz
To: gcc-patches@gcc.gnu.org
Subject: PR 71020: Handle abnormal PHIs in tree-call-cdce.c From: Richard Sandiford <richard.sandiford@arm.com> Gcc: private.sent --text follows this line-- The PR is about a case where tree-call-cdce.c causes two abnormal PHIs for the same variable to be live at the same time, leading to a coalescing failure. It seemed like getting rid of these kinds of input would be generally useful, so I added a utility to tree-dfa.c. Tested on x86_64-linux-gnu. gcc/ PR middle-end/71020 * tree-dfa.h (replace_abnormal_ssa_names): Declare. * tree-dfa.c (replace_abnormal_ssa_names): New function. * tree-call-cdce.c: Include tree-dfa.h. (can_guard_call_p): New function, extracted from... (can_use_internal_fn): ...here. (shrink_wrap_one_built_in_call_with_conds): Remove failure path and return void. (shrink_wrap_one_built_in_call): Likewise. (use_internal_fn): Likewise. (shrink_wrap_conditional_dead_built_in_calls): Update accordingly and return void. Call replace_abnormal_ssa_names. (pass_call_cdce::execute): Check can_guard_call_p during the initial walk. Assume shrink_wrap_conditional_dead_built_in_calls will always change something. gcc/testsuite/ * gcc.dg/torture/pr71020.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236393 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'move-if-change')
0 files changed, 0 insertions, 0 deletions