Jeffrey A Law (law@cygnus.com)
* function.c (purge_addressof): Unshare any shared rtl created by purge_addressof and its children. From-SVN: r33133
This commit is contained in:
parent
aea0083a2d
commit
4fa48eaefa
@ -1,3 +1,8 @@
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user