public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] Some PRE cleanups
@ 2016-07-15 10:53 Richard Biener
  0 siblings, 0 replies; only message in thread
From: Richard Biener @ 2016-07-15 10:53 UTC (permalink / raw)
  To: gcc-patches


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

Richard.

2016-07-15  Richard Biener  <rguenther@suse.de>

	* tree-ssa-pre.c (get_representative_for): Make sure to return
	the value number of SSA names.
	(phi_translate_1): get_representative_for cannot return NULL.
	(do_pre_regular_insertion): Remove redundant call to
	fully_constant_expression.
	(do_pre_partial_partial_insertion): Likewise.

Index: gcc/tree-ssa-pre.c
===================================================================
*** gcc/tree-ssa-pre.c	(revision 238369)
--- gcc/tree-ssa-pre.c	(working copy)
*************** get_representative_for (const pre_expr e
*** 1365,1371 ****
    switch (e->kind)
      {
      case NAME:
!       return PRE_EXPR_NAME (e);
      case CONSTANT:
        return PRE_EXPR_CONSTANT (e);
      case NARY:
--- 1365,1371 ----
    switch (e->kind)
      {
      case NAME:
!       return VN_INFO (PRE_EXPR_NAME (e))->valnum;
      case CONSTANT:
        return PRE_EXPR_CONSTANT (e);
      case NARY:
*************** get_representative_for (const pre_expr e
*** 1380,1386 ****
  	  {
  	    pre_expr rep = expression_for_id (i);
  	    if (rep->kind == NAME)
! 	      return PRE_EXPR_NAME (rep);
  	    else if (rep->kind == CONSTANT)
  	      return PRE_EXPR_CONSTANT (rep);
  	  }
--- 1380,1386 ----
  	  {
  	    pre_expr rep = expression_for_id (i);
  	    if (rep->kind == NAME)
! 	      return VN_INFO (PRE_EXPR_NAME (rep))->valnum;
  	    else if (rep->kind == CONSTANT)
  	      return PRE_EXPR_CONSTANT (rep);
  	  }
*************** phi_translate_1 (pre_expr expr, bitmap_s
*** 1448,1459 ****
  		leader = find_leader_in_sets (op_val_id, set1, set2);
                  result = phi_translate (leader, set1, set2, pred, phiblock);
  		if (result && result != leader)
! 		  {
! 		    tree name = get_representative_for (result);
! 		    if (!name)
! 		      return NULL;
! 		    newnary->op[i] = name;
! 		  }
  		else if (!result)
  		  return NULL;
  
--- 1448,1454 ----
  		leader = find_leader_in_sets (op_val_id, set1, set2);
                  result = phi_translate (leader, set1, set2, pred, phiblock);
  		if (result && result != leader)
! 		  newnary->op[i] = get_representative_for (result);
  		else if (!result)
  		  return NULL;
  
*************** phi_translate_1 (pre_expr expr, bitmap_s
*** 1543,1561 ****
  		  }
  		op_val_id = VN_INFO (op[n])->value_id;
  		leader = find_leader_in_sets (op_val_id, set1, set2);
- 		if (!leader)
- 		  break;
  		opresult = phi_translate (leader, set1, set2, pred, phiblock);
! 		if (!opresult)
! 		  break;
! 		if (opresult != leader)
  		  {
  		    tree name = get_representative_for (opresult);
- 		    if (!name)
- 		      break;
  		    changed |= name != op[n];
  		    op[n] = name;
  		  }
  	      }
  	    if (n != 3)
  	      {
--- 1538,1552 ----
  		  }
  		op_val_id = VN_INFO (op[n])->value_id;
  		leader = find_leader_in_sets (op_val_id, set1, set2);
  		opresult = phi_translate (leader, set1, set2, pred, phiblock);
! 		if (opresult && opresult != leader)
  		  {
  		    tree name = get_representative_for (opresult);
  		    changed |= name != op[n];
  		    op[n] = name;
  		  }
+ 		else if (!opresult)
+ 		  break;
  	      }
  	    if (n != 3)
  	      {
*************** do_pre_regular_insertion (basic_block bl
*** 3198,3204 ****
  		  break;
  		}
  
- 	      eprime = fully_constant_expression (eprime);
  	      vprime = get_expr_value_id (eprime);
  	      edoubleprime = bitmap_find_leader (AVAIL_OUT (bprime),
  						 vprime);
--- 3189,3194 ----
*************** do_pre_partial_partial_insertion (basic_
*** 3357,3363 ****
  		  break;
  		}
  
- 	      eprime = fully_constant_expression (eprime);
  	      vprime = get_expr_value_id (eprime);
  	      edoubleprime = bitmap_find_leader (AVAIL_OUT (bprime), vprime);
  	      avail[pred->dest_idx] = edoubleprime;
--- 3347,3352 ----

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2016-07-15 10:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-15 10:53 [PATCH] Some PRE cleanups Richard Biener

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).