[pplus] Remove unnecesary code from determine_base_object

Zdenek Dvorak rakdver@kam.mff.cuni.cz
Mon May 14 10:24:00 GMT 2007


Hello,

replacing the FIXME code in determine_base_object wit gcc_unreachable no
longer triggers any cases when PLUS_EXPR or MINUS_EXPR would be used in
pointer types.  Bootstrapped & regtested on i686.

Zdenek

	* tree-ssa-loop-ivopts.c (determine_base_object): Abort for PLUS_EXPR
	in pointer type.

Index: tree-ssa-loop-ivopts.c
===================================================================
*** tree-ssa-loop-ivopts.c	(revision 124708)
--- tree-ssa-loop-ivopts.c	(working copy)
*************** static tree
*** 755,761 ****
  determine_base_object (tree expr)
  {
    enum tree_code code = TREE_CODE (expr);
!   tree base, obj, op0, op1;
  
    /* If this is a pointer casted to any type, we need to determine
       the base object for the pointer; so handle conversions before
--- 755,761 ----
  determine_base_object (tree expr)
  {
    enum tree_code code = TREE_CODE (expr);
!   tree base, obj;
  
    /* If this is a pointer casted to any type, we need to determine
       the base object for the pointer; so handle conversions before
*************** determine_base_object (tree expr)
*** 788,808 ****
      case POINTER_PLUS_EXPR:
        return determine_base_object (TREE_OPERAND (expr, 0));
  
-     /* FIXME: these should not exist.  */
      case PLUS_EXPR:
      case MINUS_EXPR:
!       op0 = determine_base_object (TREE_OPERAND (expr, 0));
!       op1 = determine_base_object (TREE_OPERAND (expr, 1));
!       
!       if (!op1)
! 	return op0;
! 
!       if (!op0)
! 	return (code == PLUS_EXPR
! 		? op1
! 		: fold_build1 (NEGATE_EXPR, ptr_type_node, op1));
! 
!       return fold_build2 (code, ptr_type_node, op0, op1);
  
      default:
        return fold_convert (ptr_type_node, expr);
--- 788,797 ----
      case POINTER_PLUS_EXPR:
        return determine_base_object (TREE_OPERAND (expr, 0));
  
      case PLUS_EXPR:
      case MINUS_EXPR:
!       /* Pointer adition is done solely using POINTER_PLUS_EXPR.  */
!       gcc_unreachable ();
  
      default:
        return fold_convert (ptr_type_node, expr);



More information about the Gcc-patches mailing list