mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			re PR tree-optimization/88444 (ICE: tree check: expected ssa_name, have integer_cst in live_on_edge, at tree-vrp.c:468; or ICE: tree check: expected ssa_name, have integer_cst in get_value_range, at vr-values.c:84)
PR tree-optimization/88444 * tree-vrp.c (register_edge_assert_for_2): Only register assertions for conversions if rhs1 is a SSA_NAME. * gcc.dg/pr88444.c: New test. From-SVN: r267026
This commit is contained in:
		
							parent
							
								
									5b238a4591
								
							
						
					
					
						commit
						ccef67160c
					
				|  | @ -1,3 +1,9 @@ | |||
| 2018-12-11  Jakub Jelinek  <jakub@redhat.com> | ||||
| 
 | ||||
| 	PR tree-optimization/88444 | ||||
| 	* tree-vrp.c (register_edge_assert_for_2): Only register assertions | ||||
| 	for conversions if rhs1 is a SSA_NAME. | ||||
| 
 | ||||
| 2018-12-11  Dimitar Dimitrov  <dimitar@dinux.eu> | ||||
| 
 | ||||
| 	* cfgexpand.c (asm_clobber_reg_is_valid): Also produce | ||||
|  |  | |||
|  | @ -1,3 +1,8 @@ | |||
| 2018-12-11  Jakub Jelinek  <jakub@redhat.com> | ||||
| 
 | ||||
| 	PR tree-optimization/88444 | ||||
| 	* gcc.dg/pr88444.c: New test. | ||||
| 
 | ||||
| 2018-12-11  Dimitar Dimitrov  <dimitar@dinux.eu> | ||||
| 
 | ||||
| 	* gcc.target/i386/pr52813.c: New test. | ||||
|  |  | |||
|  | @ -0,0 +1,30 @@ | |||
| /* PR tree-optimization/88444 */ | ||||
| /* { dg-do compile } */ | ||||
| /* { dg-options "-O1 -ftree-vrp -fno-tree-ccp -fno-tree-forwprop -fno-tree-fre" } */ | ||||
| 
 | ||||
| int v; | ||||
| 
 | ||||
| int | ||||
| foo (int, int); | ||||
| 
 | ||||
| static inline int | ||||
| bar (long int x) | ||||
| { | ||||
|   return !!x ? x : 1; | ||||
| } | ||||
| 
 | ||||
| static inline void | ||||
| baz (int x) | ||||
| { | ||||
|   v += foo (0, 0) + bar (x); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| qux (void) | ||||
| { | ||||
|   int a = 0; | ||||
|   v = v || foo (0, 0); | ||||
|   v = v || foo (0, 0); | ||||
|   v = v || foo (0, 0); | ||||
|   baz (a); | ||||
| } | ||||
|  | @ -2894,6 +2894,7 @@ register_edge_assert_for_2 (tree name, edge e, | |||
| 	{ | ||||
| 	  name2 = gimple_assign_rhs1 (def_stmt); | ||||
| 	  if (CONVERT_EXPR_CODE_P (rhs_code) | ||||
| 	      && TREE_CODE (name2) == SSA_NAME | ||||
| 	      && INTEGRAL_TYPE_P (TREE_TYPE (name2)) | ||||
| 	      && TYPE_UNSIGNED (TREE_TYPE (name2)) | ||||
| 	      && prec == TYPE_PRECISION (TREE_TYPE (name2)) | ||||
|  | @ -2990,6 +2991,7 @@ register_edge_assert_for_2 (tree name, edge e, | |||
| 	  wide_int rmin, rmax; | ||||
| 	  tree rhs1 = gimple_assign_rhs1 (def_stmt); | ||||
| 	  if (INTEGRAL_TYPE_P (TREE_TYPE (rhs1)) | ||||
| 	      && TREE_CODE (rhs1) == SSA_NAME | ||||
| 	      /* Make sure the relation preserves the upper/lower boundary of
 | ||||
| 	         the range conservatively.  */ | ||||
| 	      && (comp_code == NE_EXPR | ||||
|  | @ -3054,6 +3056,7 @@ register_edge_assert_for_2 (tree name, edge e, | |||
| 		{ | ||||
| 		  names[1] = gimple_assign_rhs1 (def_stmt2); | ||||
| 		  if (!CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def_stmt2)) | ||||
| 		      || TREE_CODE (names[1]) != SSA_NAME | ||||
| 		      || !INTEGRAL_TYPE_P (TREE_TYPE (names[1])) | ||||
| 		      || (TYPE_PRECISION (TREE_TYPE (name2)) | ||||
| 			  != TYPE_PRECISION (TREE_TYPE (names[1])))) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Jakub Jelinek
						Jakub Jelinek