Commit 4fa48eae by Jeffrey A Law Committed by Richard Henderson

Jeffrey A Law (law@cygnus.com)

        * function.c (purge_addressof): Unshare any shared rtl created by
        purge_addressof and its children.

From-SVN: r33133
parent aea0083a
2000-04-12 Jeffrey A Law (law@cygnus.com)
* function.c (purge_addressof): Unshare any shared rtl created by
purge_addressof and its children.
2000-04-12 Mark Mitchell <mark@codesourcery.com>
* function.c (aggregate_value_p): VOID_TYPE nodes are never
......
......@@ -3330,6 +3330,20 @@ purge_addressof (insns)
hash_table_free (&ht);
purge_bitfield_addressof_replacements = 0;
purge_addressof_replacements = 0;
/* REGs are shared. purge_addressof will destructively replace a REG
with a MEM, which creates shared MEMs.
Unfortunately, the children of put_reg_into_stack assume that MEMs
referring to the same stack slot are shared (fixup_var_refs and
the associated hash table code).
So, we have to do another unsharing pass after we have flushed any
REGs that had their address taken into the stack.
It may be worth tracking whether or not we converted any REGs into
MEMs to avoid this overhead when it is not needed. */
unshare_all_rtl_again (get_insns ());
}
/* Pass through the INSNS of function FNDECL and convert virtual register
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment