[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