Commit 8129842c by Richard Stallman

*** empty log message ***

From-SVN: r772
parent 41e8363a
...@@ -358,11 +358,10 @@ emit_call_1 (funexp, funtype, stack_size, struct_value_size, next_arg_reg, ...@@ -358,11 +358,10 @@ emit_call_1 (funexp, funtype, stack_size, struct_value_size, next_arg_reg,
If IGNORE is nonzero, then we ignore the value of the function call. */ If IGNORE is nonzero, then we ignore the value of the function call. */
rtx rtx
expand_call (exp, target, ignore, modifier) expand_call (exp, target, ignore)
tree exp; tree exp;
rtx target; rtx target;
int ignore; int ignore;
enum expand_modifier modifier;
{ {
/* List of actual parameters. */ /* List of actual parameters. */
tree actparms = TREE_OPERAND (exp, 1); tree actparms = TREE_OPERAND (exp, 1);
......
...@@ -2791,6 +2791,11 @@ safe_from_p (x, exp) ...@@ -2791,6 +2791,11 @@ safe_from_p (x, exp)
exp_rtl = SAVE_EXPR_RTL (exp); exp_rtl = SAVE_EXPR_RTL (exp);
break; break;
case BIND_EXPR:
/* The only operand we look at is operand 1. The rest aren't
part of the expression. */
return safe_from_p (x, TREE_OPERAND (exp, 1));
case METHOD_CALL_EXPR: case METHOD_CALL_EXPR:
/* This takes a rtx argument, but shouldn't appear here. */ /* This takes a rtx argument, but shouldn't appear here. */
abort (); abort ();
...@@ -3503,7 +3508,7 @@ expand_expr (exp, target, tmode, modifier) ...@@ -3503,7 +3508,7 @@ expand_expr (exp, target, tmode, modifier)
just return the result we got. */ just return the result we got. */
if (CALL_EXPR_RTL (exp) != 0) if (CALL_EXPR_RTL (exp) != 0)
return CALL_EXPR_RTL (exp); return CALL_EXPR_RTL (exp);
return expand_call (exp, target, ignore, modifier); return expand_call (exp, target, ignore);
case NON_LVALUE_EXPR: case NON_LVALUE_EXPR:
case NOP_EXPR: case NOP_EXPR:
...@@ -4799,7 +4804,7 @@ expand_builtin (exp, target, subtarget, mode, ignore) ...@@ -4799,7 +4804,7 @@ expand_builtin (exp, target, subtarget, mode, ignore)
/* The argument was not in the domain; do this via library call. /* The argument was not in the domain; do this via library call.
Pop the arguments right away in case the call gets deleted. */ Pop the arguments right away in case the call gets deleted. */
NO_DEFER_POP; NO_DEFER_POP;
expand_call (exp, target, 0, 0); expand_call (exp, target, 0);
OK_DEFER_POP; OK_DEFER_POP;
/* Branch around open coded version */ /* Branch around open coded version */
...@@ -5536,7 +5541,7 @@ preexpand_calls (exp) ...@@ -5536,7 +5541,7 @@ preexpand_calls (exp)
if (TREE_CODE (TREE_OPERAND (exp, 0)) != ADDR_EXPR if (TREE_CODE (TREE_OPERAND (exp, 0)) != ADDR_EXPR
|| TREE_CODE (TREE_OPERAND (TREE_OPERAND (exp, 0), 0)) != FUNCTION_DECL || TREE_CODE (TREE_OPERAND (TREE_OPERAND (exp, 0), 0)) != FUNCTION_DECL
|| ! DECL_BUILT_IN (TREE_OPERAND (TREE_OPERAND (exp, 0), 0))) || ! DECL_BUILT_IN (TREE_OPERAND (TREE_OPERAND (exp, 0), 0)))
CALL_EXPR_RTL (exp) = expand_call (exp, 0, 0, 0); CALL_EXPR_RTL (exp) = expand_call (exp, 0, 0);
return; return;
case COMPOUND_EXPR: case COMPOUND_EXPR:
......
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