This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [patch] Loop reversal (merge from killloop-branch)


On Thu, 2006-01-26 at 18:30 +0100, Zdenek Dvorak wrote:
> Hello,
> 
> > > Changes to ivopts improve handling of loop exit conditions a bit, so
> > > that it takes advantage of the reversed loop a bit better (some
> > > improvements will follow in further patches).
> > > 
> > > The patch also fixes several bugs in tree-data-ref revealed by it.  Most
> > > importantly, tree-data-ref used to check whether two objects alias just
> > > by comparing their tags for equality, not taking may_aliases into
> > > account. 
> > 
> > Testcases for these bugs?
> 
> gcc.target/i386/pr20204.c, gcc.c-torture/execute/stdarg-3.c, and two or
> three other I haven't investigated, but got fixed by the changes to
> tree-data-ref.
> 
> > (Also, the fixes for this should be submitted seperately)
> 
> Why exactly?  I think it is quite common practice to send fixes for
> bugs revealed by a patch together with it.

So they can be reviewed separately, since they are bugs separate from
your pass?

Or at least, please comment on what each thing is fixing, preferabbly in
the source code.


For example,

*************** find_data_references_in_loop (struct loo
*** 3698,3703 ****
--- 3744,3751 ----
                        one_inserted = true;
                      }
                  }
+               else if (TREE_CODE (opnd0) != SSA_NAME)
+                 goto insert_dont_know_node;
  
                if (TREE_CODE (opnd1) == ARRAY_REF 
                    || TREE_CODE (opnd1) == INDIRECT_REF)
*************** find_data_references_in_loop (struct loo
*** 3709,3714 ****
--- 3757,3766 ----
                        one_inserted = true;
                      }
                  }
+               else if (handled_component_p (opnd1)
+                        || (SSA_VAR_P (opnd1)
+                            && TREE_CODE (opnd1) != SSA_NAME))
+                 goto insert_dont_know_node;
  
                if (!one_inserted)
                  goto insert_dont_know_node;

Why are these necessary when it should fall into the (!one_inserted)
case?




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]