diff options
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -9159,8 +9159,13 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, base variable. This unnecessarily allocates a pseudo, see how we can reuse it, if partition base vars have it set already. */ if (!currently_expanding_to_rtl) - return expand_expr_real_1 (SSA_NAME_VAR (exp), target, tmode, modifier, - NULL); + { + tree var = SSA_NAME_VAR (exp); + if (var && DECL_RTL_SET_P (var)) + return DECL_RTL (var); + return gen_raw_REG (TYPE_MODE (TREE_TYPE (exp)), + LAST_VIRTUAL_REGISTER + 1); + } g = get_gimple_for_ssa_name (exp); /* For EXPAND_INITIALIZER try harder to get something simpler. */ |