Lines Matching refs:REG_EQUIV
2788 if (find_reg_note (insn, REG_EQUIV, x) == NULL_RTX)
2790 note = set_unique_reg_note (insn, REG_EQUIV, copy_rtx (x));
3036 /* Set when a REG_EQUIV note is found or created. Use to
3054 /* Nonzero if this had a preexisting REG_EQUIV note. */
3065 /* reg_equiv[N] (where N is a pseudo reg number) is the equivalence
3067 static struct equivalence *reg_equiv;
3129 const/pure. However, we can't set reg_equiv notes up for
3181 return reg_equiv[REGNO (x)].replace == 0 && rtx_varies_p (x, 0);
3239 return ((reg_equiv[REGNO (x)].loop_depth >= reg_equiv[regno].loop_depth
3240 && reg_equiv[REGNO (x)].replace)
3316 return (reg_equiv[REGNO (x)].replacement
3318 reg_equiv[REGNO (x)].replacement, read_p));
3412 with REG_EQUIV notes for this register; these notes will have to be
3427 reg_equiv[regno].no_equiv = 1;
3428 list = reg_equiv[regno].init_insns;
3431 reg_equiv[regno].init_insns = gen_rtx_INSN_LIST (VOIDmode, NULL_RTX, NULL);
3432 reg_equiv[regno].replacement = NULL_RTX;
3435 if (reg_equiv[regno].is_arg_equivalence)
3442 remove_note (insn, find_reg_note (insn, REG_EQUIV, NULL_RTX));
3460 reg_equiv[REGNO (reg)].pdx_subregs = true;
3475 return simplify_replace_fn_rtx (copy_rtx (*reg_equiv[REGNO (loc)].src_p),
3622 note = find_reg_note (insn, REG_EQUIV, NULL_RTX);
3631 reg_equiv[regno].is_arg_equivalence = 1;
3664 || (reg_equiv[regno].init_insns
3665 && reg_equiv[regno].init_insns->insn () == NULL)
3667 && MEM_P (src) && ! reg_equiv[regno].is_arg_equivalence))
3677 if (MEM_P (src) && reg_equiv[regno].pdx_subregs)
3703 if (reg_equiv[regno].no_equiv)
3708 || (reg_equiv[regno].replacement
3710 reg_equiv[regno].replacement)))
3716 list = reg_equiv[regno].init_insns;
3740 reg_equiv[regno].init_insns
3741 = gen_rtx_INSN_LIST (VOIDmode, insn, reg_equiv[regno].init_insns);
3759 set_unique_reg_note (insn, REG_EQUIV, note_value);
3772 If we don't have a REG_EQUIV note, see if this insn is loading
3774 MEM remains unchanged for the life of the register, add a REG_EQUIV
3776 note = find_reg_note (insn, REG_EQUIV, NULL_RTX);
3790 note = set_unique_reg_note (insn, REG_EQUIV, replacement);
3796 if (note && !reg_equiv[regno].is_arg_equivalence)
3803 reg_equiv[regno].replacement = replacement;
3804 reg_equiv[regno].src_p = &SET_SRC (set);
3805 reg_equiv[regno].loop_depth = (short) loop_depth;
3824 reg_equiv[regno].replace = 1;
3834 insn that sets REG is safe. If so, put a REG_EQUIV note on the
3859 /* Don't add a REG_EQUIV note if the insn already has one. The existing
3860 REG_EQUIV is likely more useful than the one we are adding. */
3865 && ! reg_equiv[regno].pdx_subregs
3866 && reg_equiv[regno].init_insns != NULL
3867 && (init_insn = reg_equiv[regno].init_insns->insn ()) != 0
3869 && ! find_reg_note (init_insn, REG_EQUIV, NULL_RTX)
3872 /* Attaching a REG_EQUIV note will fail if INIT_INSN has
3874 && set_unique_reg_note (init_insn, REG_EQUIV, copy_rtx (dest)))
3883 "Adding REG_EQUIV to insn %d for source of insn %d\n",
3905 if (!reg_equiv[regno].replace)
3953 *reg_equiv[regno].src_p, use_insn))
3977 reg_equiv[use_regno].replace = 0;
3982 reg_equiv[regno].init_insns = NULL;
4005 XEXP (reg_equiv[regno].init_insns, 0) = new_insn;
4022 if (find_reg_note (use_insn, REG_EQUIV, regno_reg_rtx[regno]))
4141 if ((x = find_reg_note (insn, REG_EQUIV, NULL_RTX)) != NULL)
4174 /* It can happen that a REG_EQUIV note contains a MEM
4178 legitimate, we ignore such REG_EQUIV notes. */
4821 if (REG_NOTE_KIND (note) == REG_EQUIV && MEM_P (XEXP (note, 0)))
5720 reg_equiv = XCNEWVEC (struct equivalence, max_reg_num ());
5739 free (reg_equiv);