[Bug c/77750] gcc build not working with -O0

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Sep 27 07:38:00 GMT 2016


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

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Comment on attachment 39694
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39694
Possible patch (correctly formatted magic "fall through" comments)

>Index: gcc/combine.c
>===================================================================
>--- gcc/combine.c	(revision 240520)
>+++ gcc/combine.c	(working copy)
>@@ -11370,6 +11370,8 @@ simplify_compare_const (enum rtx_code code, machin
>       else
> 	break;
> 
>+      /* fall through.  */
>+

Yes this is correct  but maybe it is better to rewrite this code slightly:
      if (const_op <= 0)
        break;

      const_op -= 1;
      code = LE;
      /* fall through.  */


>     case LE:
>       /* <= C is equivalent to < (C + 1); we do this for C < 0  */
>       if (const_op < 0)
>@@ -11399,6 +11401,8 @@ simplify_compare_const (enum rtx_code code, machin
>       else
> 	break;
> 
>+      /* fall through.  */

Likewise.

>+
>     case GT:
>       /* > C is equivalent to >= (C + 1); we do this for C < 0.  */
>       if (const_op < 0)
>@@ -11927,7 +11931,7 @@ simplify_comparison (enum rtx_code code, rtx *pop0
> 	  else
> 	    break;
> 
>-	  /* ... fall through ...  */
>+	  /* fall through.  */

Likewise.

> 
> 	case ZERO_EXTEND:
> 	  mode = GET_MODE (XEXP (op0, 0));
>@@ -12339,7 +12343,8 @@ simplify_comparison (enum rtx_code code, rtx *pop0
> 	      continue;
> 	    }
> 
>-	  /* ... fall through ...  */
>+	  /* fall through.  */

Do something similar:
          /* If the inner mode is narrower and we are extracting the low part,
             we can treat the SUBREG as if it were a ZERO_EXTEND.  */
          if (!subreg_lowpart_p (op0)
              &|| GET_MODE_PRECISION (GET_MODE (SUBREG_REG (op0))) >=
mode_width)
            break;

          /* fall through  */


>+
> 	case LSHIFTRT:
> 	  /* If we have (compare (xshiftrt FOO N) (const_int C)) and
> 	     the low order N bits of FOO are known to be zero, we can do this
>Index: gcc/fold-const.c
>===================================================================
>--- gcc/fold-const.c	(revision 240520)
>+++ gcc/fold-const.c	(working copy)
>@@ -6284,7 +6284,7 @@ extract_muldiv_1 (tree t, tree c, enum tree_code c
> 	  return omit_one_operand (type, integer_zero_node, op0);
> 	}
> 
>-      /* ... fall through ...  */
>+      /* fall through.  */

This one is obvious.

> 
>     case TRUNC_DIV_EXPR:  case CEIL_DIV_EXPR:  case FLOOR_DIV_EXPR:
>     case ROUND_DIV_EXPR:  case EXACT_DIV_EXPR:


More information about the Gcc-bugs mailing list