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

--- Comment #3 from louis.krupp at zoho dot com ---
I agree.  But in the interests of reporting the bug and proposing a patch as
soon as possible, I decided to minimize the risk of unintended consequences by
keeping things as simple as I could.

If you like, I could follow your suggestions and clean this up and check it in,
but I wouldn't be able to do it tonight.  I believe I'm an hour ahead of you,
and I've learned that when I try to do things in a hurry, I usually regret it.

Louis


 ---- On Tue, 27 Sep 2016 00:38:29 -0700 pinskia at gcc dot gnu.org
<gcc-bugzi...@gcc.gnu.org> wrote ---- 
 > 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: 
 >  
 > --  
 > You are receiving this mail because: 
 > You reported the bug.

Reply via email to