(TYPE_CODE (type1) == TYPE_CODE_INT || TYPE_CODE (type2) == TYPE_CODE_INT))
(is_integral_type (type1) || is_integral_type (type2)))
value_add (struct value *arg1, struct value *arg2){  struct value *valint;  struct value *valptr;  LONGEST sz;  struct type *type1, *type2, *valptrtype;  COERCE_NUMBER (arg1);  COERCE_NUMBER (arg2);  type1 = check_typedef (VALUE_TYPE (arg1));  type2 = check_typedef (VALUE_TYPE (arg2));  if ((TYPE_CODE (type1) == TYPE_CODE_PTR       || TYPE_CODE (type2) == TYPE_CODE_PTR)      &&      (TYPE_CODE (type1) == TYPE_CODE_INT       || TYPE_CODE (type2) == TYPE_CODE_INT))    /* Exactly one argument is a pointer, and one is an integer.  */    {      struct value *retval;      if (TYPE_CODE (type1) == TYPE_CODE_PTR)	{	  valptr = arg1;	  valint = arg2;	  valptrtype = type1;	}      else	{	  valptr = arg2;	  valint = arg1;	  valptrtype = type2;	}      sz = find_size_for_pointer_math (valptrtype);      retval = value_from_pointer (valptrtype,				   value_as_address (valptr)				   + (sz * value_as_long (valint)));      VALUE_BFD_SECTION (retval) = VALUE_BFD_SECTION (valptr);      return retval;    }  return value_binop (arg1, arg2, BINOP_ADD);}