[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