------- 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

Reply via email to