diff mbox series

Remove some useless work in PRE

Message ID alpine.LSU.2.20.1711171004080.12252@zhemvz.fhfr.qr
State New
Headers show
Series Remove some useless work in PRE | expand

Commit Message

Richard Biener Nov. 17, 2017, 9:05 a.m. UTC
VN already sees if an expresion is fully constant so there's no reason
to duplicate that work during PHI translation.  I've verified with
an assert the paths are indeed unreachable.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2017-11-17  Richard Biener  <rguenther@suse.de>

	* tree-ssa-pre.c (phi_translate_1): Remove redundant constant
	folding of references.
diff mbox series

Patch

Index: gcc/tree-ssa-pre.c
===================================================================
--- gcc/tree-ssa-pre.c	(revision 254797)
+++ gcc/tree-ssa-pre.c	(working copy)
@@ -1566,7 +1566,6 @@  phi_translate_1 (pre_expr expr, bitmap_s
 	if (changed || newvuse != vuse)
 	  {
 	    unsigned int new_val_id;
-	    pre_expr constant;
 
 	    tree result = vn_reference_lookup_pieces (newvuse, ref->set,
 						      ref->type,
@@ -1611,15 +1610,7 @@  phi_translate_1 (pre_expr expr, bitmap_s
 	    expr->id = 0;
 
 	    if (newref)
-	      {
-		PRE_EXPR_REFERENCE (expr) = newref;
-		constant = fully_constant_expression (expr);
-		if (constant != expr)
-		  return constant;
-
-		new_val_id = newref->value_id;
-		get_or_alloc_expression_id (expr);
-	      }
+	      new_val_id = newref->value_id;
 	    else
 	      {
 		if (changed || !same_valid)
@@ -1637,12 +1628,9 @@  phi_translate_1 (pre_expr expr, bitmap_s
 						     newoperands,
 						     result, new_val_id);
 		newoperands = vNULL;
-		PRE_EXPR_REFERENCE (expr) = newref;
-		constant = fully_constant_expression (expr);
-		if (constant != expr)
-		  return constant;
-		get_or_alloc_expression_id (expr);
 	      }
+	    PRE_EXPR_REFERENCE (expr) = newref;
+	    get_or_alloc_expression_id (expr);
 	    add_to_value (new_val_id, expr);
 	  }
 	newoperands.release ();