From: Richard Kenner Date: Mon, 31 Oct 1994 13:11:19 +0000 (-0500) Subject: (expand_expr, COND_EXPR case): Don't use original target as a temp if it's a volatile... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2d444001636edc9408e8e847585dc6a9ef1e279b;p=gcc.git (expand_expr, COND_EXPR case): Don't use original target as a temp if it's a volatile mem ref. (expand_expr, COND_EXPR case): Don't use original target as a temp if it's a volatile mem ref. Finish previous patch (don't expand "X ? A & 1 : A" as "A & (X != 0)"). From-SVN: r8369 --- diff --git a/gcc/expr.c b/gcc/expr.c index 55940920445..de656b63e17 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -5534,7 +5534,9 @@ expand_expr (exp, target, tmode, modifier) temp = 0; else if (original_target && safe_from_p (original_target, TREE_OPERAND (exp, 0)) - && GET_MODE (original_target) == mode) + && GET_MODE (original_target) == mode + && ! (GET_CODE (original_target) == MEM + && MEM_VOLATILE_P (original_target))) temp = original_target; else if (mode == BLKmode) { @@ -5590,8 +5592,7 @@ expand_expr (exp, target, tmode, modifier) optab boptab = (TREE_CODE (binary_op) == PLUS_EXPR ? add_optab : TREE_CODE (binary_op) == MINUS_EXPR ? sub_optab : TREE_CODE (binary_op) == BIT_IOR_EXPR ? ior_optab - : TREE_CODE (binary_op) == BIT_XOR_EXPR ? xor_optab - : and_optab); + : xor_optab); /* If we had X ? A : A + 1, do this as A + (X == 0).