diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2017-03-16 23:31:01 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2017-03-16 23:31:01 +0000 |
commit | 50b6d6761b1a265ced9c471a81da6b91d8b1931a (patch) | |
tree | 7905059192c02cdbcd9b49414ebc7f6cc04d07ae /gcc/DATESTAMP | |
parent | 2e92d7ada96c875356c56ebc336f9b0def0041e2 (diff) | |
download | gcc-50b6d6761b1a265ced9c471a81da6b91d8b1931a.zip gcc-50b6d6761b1a265ced9c471a81da6b91d8b1931a.tar.gz gcc-50b6d6761b1a265ced9c471a81da6b91d8b1931a.tar.bz2 |
stabilize store merging
Don't let pointer randomization change the order in which we process
store chains. This may cause SSA_NAMEs to be released in different
order, and if they're reused later, they may cause differences in SSA
partitioning, leading to differences in expand, and ultimately to
different code.
bootstrap-debug-lean (-fcompare-debug) on i686-linux-gnu has failed in
haifa-sched.c since r245196 exposed the latent ordering problem in
store merging. In this case, the IR differences (different SSA names
selected for copies in out-of-SSA, resulting in some off-by-one
differences in pseudos) were not significant enough to be visible in
the compiler output.
for gcc/ChangeLog
* gimple-ssa-store-merging.c (struct imm_store_chain_info):
Add linked-list forward and backlinks. Insert on
construction, remove on destruction.
(class pass_store_merging): Add m_stores_head field.
(pass_store_merging::terminate_and_process_all_chains):
Iterate over m_stores_head list.
(pass_store_merging::terminate_all_aliasing_chains):
Likewise.
(pass_store_merging::execute): Check for debug stmts first.
Push new chains onto the m_stores_head stack.
From-SVN: r246213
Diffstat (limited to 'gcc/DATESTAMP')
0 files changed, 0 insertions, 0 deletions