diff options
author | Anatoly Sokolov <aesok@post.ru> | 2011-04-09 23:10:45 +0400 |
---|---|---|
committer | Anatoly Sokolov <aesok@gcc.gnu.org> | 2011-04-09 23:10:45 +0400 |
commit | d108e67950032622d9debad3fd95bc5fc8838bca (patch) | |
tree | 25f13b9423e5b01037286bbf2f8b57fd290f7e28 /gcc/expr.c | |
parent | 3411bc59c6a0a9d6d0f6899f1072565a346afacd (diff) | |
download | gcc-d108e67950032622d9debad3fd95bc5fc8838bca.zip gcc-d108e67950032622d9debad3fd95bc5fc8838bca.tar.gz gcc-d108e67950032622d9debad3fd95bc5fc8838bca.tar.bz2 |
expr.c (expand_expr_real_1): Use add_to_hard_reg_set function instead of loop.
* expr.c (expand_expr_real_1): Use add_to_hard_reg_set function
instead of loop.
* sel-sched.c (mark_unavailable_hard_regs): Likewise.
* function.c (record_hard_reg_sets): Likewise.
* ira.c (compute_regs_asm_clobbered): Likewise.
* sched-deps.c (sched_analyze_1): Likewise.
* reload1.c (mark_reload_reg_in_use, choose_reload_regs): Likewise.
From-SVN: r172231
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 17 |
1 files changed, 5 insertions, 12 deletions
@@ -8451,18 +8451,11 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, gcc_assert (decl_rtl); decl_rtl = copy_rtx (decl_rtl); /* Record writes to register variables. */ - if (modifier == EXPAND_WRITE && REG_P (decl_rtl) - && REGNO (decl_rtl) < FIRST_PSEUDO_REGISTER) - { - int i = REGNO (decl_rtl); - int nregs = hard_regno_nregs[i][GET_MODE (decl_rtl)]; - while (nregs) - { - SET_HARD_REG_BIT (crtl->asm_clobbers, i); - i++; - nregs--; - } - } + if (modifier == EXPAND_WRITE + && REG_P (decl_rtl) + && HARD_REGISTER_P (decl_rtl)) + add_to_hard_reg_set (&crtl->asm_clobbers, + GET_MODE (decl_rtl), REGNO (decl_rtl)); /* Ensure variable marked as used even if it doesn't go through a parser. If it hasn't be used yet, write out an external |