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