Commit 68557e14 by Martin v. Löwis Committed by Martin v. Löwis

* expr.c (expand_expr): Handle ERROR_MARK much earlier.

From-SVN: r25864
parent 89004479
Fre Mar 19 23:26:29 1999 Martin von Lwis <loewis@informatik.hu-berlin.de>
* expr.c (expand_expr): Handle ERROR_MARK much earlier.
Fri Mar 19 15:28:38 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> Fri Mar 19 15:28:38 1999 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* cccp.c (create_definition): Cast to U_CHAR* when assigning to one. * cccp.c (create_definition): Cast to U_CHAR* when assigning to one.
......
...@@ -5471,21 +5471,34 @@ expand_expr (exp, target, tmode, modifier) ...@@ -5471,21 +5471,34 @@ expand_expr (exp, target, tmode, modifier)
register rtx op0, op1, temp; register rtx op0, op1, temp;
tree type = TREE_TYPE (exp); tree type = TREE_TYPE (exp);
int unsignedp = TREE_UNSIGNED (type); int unsignedp = TREE_UNSIGNED (type);
register enum machine_mode mode = TYPE_MODE (type); register enum machine_mode mode;
register enum tree_code code = TREE_CODE (exp); register enum tree_code code = TREE_CODE (exp);
optab this_optab; optab this_optab;
/* Use subtarget as the target for operand 0 of a binary operation. */ rtx subtarget, original_target;
rtx subtarget = (target != 0 && GET_CODE (target) == REG ? target : 0); int ignore;
rtx original_target = target;
int ignore = (target == const0_rtx
|| ((code == NON_LVALUE_EXPR || code == NOP_EXPR
|| code == CONVERT_EXPR || code == REFERENCE_EXPR
|| code == COND_EXPR)
&& TREE_CODE (type) == VOID_TYPE));
tree context; tree context;
/* Used by check-memory-usage to make modifier read only. */ /* Used by check-memory-usage to make modifier read only. */
enum expand_modifier ro_modifier; enum expand_modifier ro_modifier;
/* Handle ERROR_MARK before anybody tries to access its type. */
if (TREE_CODE (exp) == ERROR_MARK)
{
op0 = CONST0_RTX (tmode);
if (op0 != 0)
return op0;
return const0_rtx;
}
mode = TYPE_MODE (type);
/* Use subtarget as the target for operand 0 of a binary operation. */
subtarget = (target != 0 && GET_CODE (target) == REG ? target : 0);
original_target = target;
ignore = (target == const0_rtx
|| ((code == NON_LVALUE_EXPR || code == NOP_EXPR
|| code == CONVERT_EXPR || code == REFERENCE_EXPR
|| code == COND_EXPR)
&& TREE_CODE (type) == VOID_TYPE));
/* Make a read-only version of the modifier. */ /* Make a read-only version of the modifier. */
if (modifier == EXPAND_NORMAL || modifier == EXPAND_SUM if (modifier == EXPAND_NORMAL || modifier == EXPAND_SUM
|| modifier == EXPAND_CONST_ADDRESS || modifier == EXPAND_INITIALIZER) || modifier == EXPAND_CONST_ADDRESS || modifier == EXPAND_INITIALIZER)
...@@ -8144,12 +8157,6 @@ expand_expr (exp, target, tmode, modifier) ...@@ -8144,12 +8157,6 @@ expand_expr (exp, target, tmode, modifier)
return const0_rtx; return const0_rtx;
} }
case ERROR_MARK:
op0 = CONST0_RTX (tmode);
if (op0 != 0)
return op0;
return const0_rtx;
default: default:
return (*lang_expand_expr) (exp, original_target, tmode, modifier); return (*lang_expand_expr) (exp, original_target, tmode, modifier);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment