From: Kyrylo Tkachov <[email protected]>

Several field comments in ifcvt.h do not match the field they document.
noce_multiple_sets_info::unmodified_insn holds the insn from the original
block, not an insn we emitted, and need_cmov is documented with the opposite
meaning: it is set when the destination is live out, that is, when a plain
move will not do.  noce_if_info::original_cost refers to a "next field" that
no longer exists.  Fix those, fix two typos, and make ce_if_block::and_and_p
a bool, which is what it holds and how both ifcvt.cc and the frv target hooks
read it.

gcc/ChangeLog:

        * ifcvt.h (struct ce_if_block): Make and_and_p a bool.
        (struct noce_multiple_sets_info): Correct the unmodified_insn and
        need_cmov comments.
        (struct noce_if_info): Correct the insn_a/insn_b, speed_p and
        original_cost comments.

Signed-off-by: Kyrylo Tkachov <[email protected]>
---
 gcc/ifcvt.h | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/gcc/ifcvt.h b/gcc/ifcvt.h
index 6d6521a51a2..806ad47158e 100644
--- a/gcc/ifcvt.h
+++ b/gcc/ifcvt.h
@@ -34,7 +34,7 @@ struct ce_if_block
   int num_and_and_blocks;              /* # of && blocks.  */
   int num_or_or_blocks;                        /* # of || blocks.  */
   int num_multiple_test_insns;         /* # of insns in && and || blocks.  */
-  int and_and_p;                       /* Complex test is &&.  */
+  bool and_and_p;                      /* Complex test is &&.  */
   int num_then_insns;                  /* # of insns in THEN block.  */
   int num_else_insns;                  /* # of insns in ELSE block.  */
   int pass;                            /* Pass number.  */
@@ -50,9 +50,10 @@ struct noce_multiple_sets_info
   /* The temporaries introduced to allow us to not consider register
      overlap.  */
   rtx temporary;
-  /* The insns we've emitted.  */
+  /* The insn from the original block that this entry describes.  */
   rtx_insn *unmodified_insn;
-  /* True if a simple move can be used instead of a conditional move.  */
+  /* True if the destination is live out of the block, so the value has to be
+     selected with a conditional move rather than moved unconditionally.  */
   bool need_cmov;
 };
 
@@ -80,7 +81,7 @@ struct noce_if_info
   rtx_insn *cond_earliest;
 
   /* Insns in the THEN and ELSE block.  There is always just this
-     one insns in those blocks.  The insns are single_set insns.
+     one insn in those blocks.  The insns are single_set insns.
      If there was no ELSE block, INSN_B is the last insn before
      COND_EARLIEST, or NULL_RTX.  In the former case, the insn
      operands are still valid, as if INSN_B was moved down below
@@ -115,14 +116,14 @@ struct noce_if_info
   bool then_simple;
   bool else_simple;
 
-  /* True if we're optimisizing the control block for speed, false if
+  /* True if we're optimizing the control block for speed, false if
      we're optimizing for size.  */
   bool speed_p;
 
-  /* An estimate of the original costs.  When optimizing for size, this is the
-     combined cost of COND, JUMP and the costs for THEN_BB and ELSE_BB.
-     When optimizing for speed, we use the costs of COND plus weighted average
-     of the costs for THEN_BB and ELSE_BB, as computed in the next field.  */
+  /* An estimate of the cost of the original, un-converted if-region.  It
+     covers COND and JUMP plus the arms: both arms when optimizing for size,
+     and their branch-probability-weighted average when optimizing for speed,
+     since then only one of them runs.  See noce_original_region_cost.  */
   unsigned int original_cost;
 
   /* Maximum permissible cost for the unconditional sequence we should
-- 
2.50.1 (Apple Git-155)

Reply via email to