aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-threadedge.c
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2021-09-03 10:11:28 +0200
committerAldy Hernandez <aldyh@redhat.com>2021-09-03 15:42:22 +0200
commitb237eb9dfdada49d3f2bdfa98aa4a0b67fc1829d (patch)
tree881b26fd2ca68e63c748be2118ac727fd3bc84fb /gcc/tree-ssa-threadedge.c
parent9fa5ba4c56ef558bc740e56654622d70f4166e48 (diff)
downloadgcc-b237eb9dfdada49d3f2bdfa98aa4a0b67fc1829d.zip
gcc-b237eb9dfdada49d3f2bdfa98aa4a0b67fc1829d.tar.gz
gcc-b237eb9dfdada49d3f2bdfa98aa4a0b67fc1829d.tar.bz2
Do not release state location until after path registry.
We are popping state and then calling the registry code. This causes the registry to have incorrect information. This isn't visible in current trunk, but will be an issue when I submit further enhancements to the threading code. However, it is a cleanup on its own so I am pushing it now. Tested on x86-64 Linux. gcc/ChangeLog: * tree-ssa-threadedge.c (jump_threader::thread_across_edge): Move pop until after a thread is registered.
Diffstat (limited to 'gcc/tree-ssa-threadedge.c')
-rw-r--r--gcc/tree-ssa-threadedge.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c
index 37ee5c1..8a48512 100644
--- a/gcc/tree-ssa-threadedge.c
+++ b/gcc/tree-ssa-threadedge.c
@@ -1155,9 +1155,9 @@ jump_threader::thread_across_edge (edge e)
{
propagate_threaded_block_debug_into (path->last ()->e->dest,
e->dest);
- m_state->pop ();
BITMAP_FREE (visited);
m_registry->register_jump_thread (path);
+ m_state->pop ();
return;
}
else