rtx tmp = find_base_term (XEXP (x, 0)); if (tmp) return tmp; return find_base_term (XEXP (x, 1));
rtx tmp1 = XEXP (x, 0); rtx tmp2 = XEXP (x, 1);     if (REG_P (tmp1) && REGNO_POINTER_FLAG (REGNO (tmp1))) return find_base_term (tmp1);  if (REG_P (tmp2) && REGNO_POINTER_FLAG (REGNO (tmp2))) return find_base_term (tmp2);   tmp1 = find_base_term (tmp1); tmp2 = find_base_term (tmp2);   if (tmp1 && (GET_CODE (tmp1) == SYMBOL_REF || GET_CODE (tmp1) == LABEL_REF || (GET_CODE (tmp1) == ADDRESS && GET_MODE (tmp1) != VOIDmode))) return tmp1;  if (tmp2 && (GET_CODE (tmp2) == SYMBOL_REF || GET_CODE (tmp2) == LABEL_REF || (GET_CODE (tmp2) == ADDRESS && GET_MODE (tmp2) != VOIDmode))) return tmp2;   return 0;
find_base_term (x)     register rtx x;{  switch (GET_CODE (x))    {    case REG:      return REG_BASE_VALUE (x);    case ZERO_EXTEND:    case SIGN_EXTEND:	/* Used for Alpha/NT pointers */    case HIGH:    case PRE_INC:    case PRE_DEC:    case POST_INC:    case POST_DEC:      return find_base_term (XEXP (x, 0));    case CONST:      x = XEXP (x, 0);      if (GET_CODE (x) != PLUS && GET_CODE (x) != MINUS)	return 0;      /* fall through */    case LO_SUM:    case PLUS:    case MINUS:      {	rtx tmp = find_base_term (XEXP (x, 0));	if (tmp)	  return tmp;	return find_base_term (XEXP (x, 1));      }    case AND:      if (GET_CODE (XEXP (x, 0)) == REG && GET_CODE (XEXP (x, 1)) == CONST_INT)	return REG_BASE_VALUE (XEXP (x, 0));      return 0;    case SYMBOL_REF:    case LABEL_REF:      return x;    default:      return 0;    }}