if (type == TREE_TYPE (expr) || TREE_CODE (expr) == ERROR_MARK) return expr; if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (TREE_TYPE (expr))) return fold (build1 (NOP_EXPR, type, expr)); if (TREE_CODE (TREE_TYPE (expr)) == ERROR_MARK
if (type == TREE_TYPE (e) || TREE_CODE (e) == ERROR_MARK) return e; if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (TREE_TYPE (e))) return fold (build1 (NOP_EXPR, type, e)); if (TREE_CODE (TREE_TYPE (e)) == ERROR_MARK
convert (type, expr)     tree type, expr;{  register tree e = expr;  register enum tree_code code = TREE_CODE (type);  if (type == TREE_TYPE (expr)      || TREE_CODE (expr) == ERROR_MARK)    return expr;  if (TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (TREE_TYPE (expr)))    return fold (build1 (NOP_EXPR, type, expr));  if (TREE_CODE (TREE_TYPE (expr)) == ERROR_MARK      || code == ERROR_MARK)    return error_mark_node;  if (TREE_CODE (TREE_TYPE (expr)) == VOID_TYPE)    {      assert ("void value not ignored as it ought to be" == NULL);      return error_mark_node;    }  if (code == VOID_TYPE)    return build1 (CONVERT_EXPR, type, e);  if (code == INTEGER_TYPE || code == ENUMERAL_TYPE)    return fold (convert_to_integer (type, e));  if (code == POINTER_TYPE)    return fold (convert_to_pointer (type, e));  if (code == REAL_TYPE)    return fold (convert_to_real (type, e));  if (code == COMPLEX_TYPE)    return fold (convert_to_complex (type, e));  assert ("conversion to non-scalar type requested" == NULL);  return error_mark_node;}