[Bug rtl-optimization/24760] -d option changes generated code
amylaar at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Wed Nov 9 20:56:00 GMT 2005
------- Comment #5 from amylaar at gcc dot gnu dot org 2005-11-09 20:56 -------
(In reply to comment #4)
> -da without -quiet generally produces code that is larger than any of the above
> scenarios, but sometimes it produces identical code to -quiet (without -da).
>
I have now captured four different sets of debugging dumps (with different
code generated) for -da, and the first dump where they differ in things other
than mere pointers is 21.loop2_unroll . Allocation of registers that
appear new in this dump appears to be different.
I think these statements are to blame:
87487 rakdver /* Allocate the basic variables (i0). */
89197 hagog if (opt_info->insns_to_split)
89197 hagog htab_traverse (opt_info->insns_to_split,
allocate_basic_va
89197 hagog if (opt_info->insns_with_var_to_expand)
89197 hagog {
89197 hagog htab_traverse (opt_info->insns_with_var_to_expand,
89197 hagog insert_var_expansion_initialization,
89197 hagog opt_info->loop_preheader);
89197 hagog htab_traverse (opt_info->insns_with_var_to_expand,
89197 hagog combine_var_copies_in_loop_exit,
89197 hagog opt_info->loop_exit);
89197 hagog }
Unless you want to sort the insns that are found during a hash table traversal,
you have to fix the hash functions to be address-independent.
I think ve_info_hash and si_info_hash should use the uid of the insn rather
than its address.
--
amylaar at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |rakdver at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24760
More information about the Gcc-bugs
mailing list