This is the mail archive of the gcc-bugs@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]

[Bug middle-end/25248] [4.1/4.2 Regression] 2.6.15-rc4 arch/powerpc/mm/hash_utils_64.c miscompiled



------- Comment #20 from rakdver at gcc dot gnu dot org  2005-12-06 15:43 -------
This patch should fix the problem:

Index: tree-scalar-evolution.c
===================================================================
*** tree-scalar-evolution.c     (revision 108078)
--- tree-scalar-evolution.c     (working copy)
*************** follow_ssa_edge_in_rhs (struct loop *loo
*** 1042,1047 ****
--- 1042,1048 ----
    t_bool res = t_false;
    tree rhs0, rhs1;
    tree type_rhs = TREE_TYPE (rhs);
+   tree evol;

    /* The RHS is one of the following cases:
       - an SSA_NAME,
*************** follow_ssa_edge_in_rhs (struct loop *loo
*** 1084,1097 ****
            {
              /* Match an assignment under the form:
                 "a = b + c".  */
              res = follow_ssa_edge
                (loop, SSA_NAME_DEF_STMT (rhs0), halting_phi,
!                evolution_of_loop, limit);

              if (res == t_true)
                *evolution_of_loop = add_to_evolution
                  (loop->num,
!                  chrec_convert (type_rhs, *evolution_of_loop, at_stmt),
                   PLUS_EXPR, rhs1);

              else if (res == t_false)
--- 1085,1099 ----
            {
              /* Match an assignment under the form:
                 "a = b + c".  */
+             evol = *evolution_of_loop;
              res = follow_ssa_edge
                (loop, SSA_NAME_DEF_STMT (rhs0), halting_phi,
!                &evol, limit);

              if (res == t_true)
                *evolution_of_loop = add_to_evolution
                  (loop->num,
!                  chrec_convert (type_rhs, evol, at_stmt),
                   PLUS_EXPR, rhs1);

              else if (res == t_false)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25248


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