15 lines
		
	
	
		
			466 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			15 lines
		
	
	
		
			466 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/gcc/fold-const.c
 | 
						|
+++ b/gcc/fold-const.c
 | 
						|
@@ -5339,7 +5339,10 @@ extract_muldiv_1 (tree t, tree c, enum t
 | 
						|
             }
 | 
						|
           break;
 | 
						|
         }
 | 
						|
-      /* FALLTHROUGH */
 | 
						|
+   /* If the constant is negative, we cannot simplify this.  */
 | 
						|
+   if (tree_int_cst_sgn (c) == -1)
 | 
						|
+     break;
 | 
						|
+   /* FALLTHROUGH */
 | 
						|
     case NEGATE_EXPR:
 | 
						|
       if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
 | 
						|
 	return fold_build1 (tcode, ctype, fold_convert (ctype, t1));
 |