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 bootstrap/66801] [6 Regression] gcc miscompiled during PGO/LTO bootstrap


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66801

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot gnu.org

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hmpf.  Can't see why it should - I suppose the only "questionable" hunk _may_
be


+      /* Visit the statement only if its block is marked executable.
+         If it is not executable then it will be visited when we simulate
+        all statements in the block as soon as an incoming edge gets
+        marked executable.  */
+      if (!bitmap_bit_p (executable_blocks, bb->index))
+       {
+         if (dump_file && (dump_flags & TDF_DETAILS))
+           {
+             fprintf (dump_file, "\nDropping statement from SSA worklist: ");
+             print_gimple_stmt (dump_file, stmt, 0, dump_flags);
+           }
+         continue;
...
+      simulate_stmt (stmt);

-      /* PHI nodes are always visited, regardless of whether or not
-        the destination block is executable.  Otherwise, visit the
-        statement only if its block is marked executable.  */
-      if (gimple_code (stmt) == GIMPLE_PHI
-         || bitmap_bit_p (executable_blocks, bb->index))
-       simulate_stmt (stmt);
+      return true;

Thus, does the following fix it? (I'd have to try reproducing it first)

Index: gcc/tree-ssa-propagate.c
===================================================================
--- gcc/tree-ssa-propagate.c    (revision 225534)
+++ gcc/tree-ssa-propagate.c    (working copy)
@@ -444,7 +444,8 @@ process_ssa_edge_worklist (vec<gimple> *
          If it is not executable then it will be visited when we simulate
         all statements in the block as soon as an incoming edge gets
         marked executable.  */
-      if (!bitmap_bit_p (executable_blocks, bb->index))
+      if (gimple_code (stmt) != GIMPLE_PHI
+         && !bitmap_bit_p (executable_blocks, bb->index))
        {
          if (dump_file && (dump_flags & TDF_DETAILS))
            {

not that I have an idea _why_ it should fix something.


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