Home | History | Annotate | Download | only in gcc

Lines Matching defs:def_insn

411    DEF_INSN is the if_then_else insn.  */
414 transform_ifelse (ext_cand *cand, rtx_insn *def_insn)
416 rtx set_insn = PATTERN (def_insn);
441 if (validate_change (def_insn, &PATTERN (def_insn), new_set, true)
442 && update_reg_equal_equiv_notes (def_insn, cand->mode, GET_MODE (dstreg),
449 print_rtl_single (dump_file, def_insn);
630 rtx_insn *def_insn = state->work_list.pop ();
633 gcc_assert (INSN_UID (def_insn) < max_insn_uid);
635 if (is_insn_visited[INSN_UID (def_insn)])
637 is_insn_visited[INSN_UID (def_insn)] = true;
639 if (is_cond_copy_insn (def_insn, &reg1, &reg2))
642 state->copies_list.safe_push (def_insn);
645 if (!get_defs (def_insn, reg1, &state->work_list)
646 || !get_defs (def_insn, reg2, &state->work_list))
653 state->defs_list.safe_push (def_insn);
661 /* If DEF_INSN has single SET expression with a register
667 get_sub_rtx (rtx_insn *def_insn)
669 enum rtx_code code = GET_CODE (PATTERN (def_insn));
674 for (int i = 0; i < XVECLEN (PATTERN (def_insn), 0); i++)
676 rtx s_expr = XVECEXP (PATTERN (def_insn), 0, i);
683 sub_rtx = &XVECEXP (PATTERN (def_insn), 0, i);
693 rtx s_expr = PATTERN (def_insn);
695 sub_rtx = &PATTERN (def_insn);
701 /* Merge the DEF_INSN with an extension. Calls combine_set_extension
705 merge_def_and_ext (ext_cand *cand, rtx_insn *def_insn, ext_state *state)
711 sub_rtx = get_sub_rtx (def_insn);
717 || ((state->modified[INSN_UID (def_insn)].kind
720 && state->modified[INSN_UID (def_insn)].mode
726 /* If def_insn is already scheduled to be deleted, don't attempt
728 if (state->modified[INSN_UID (def_insn)].deleted)
730 if (combine_set_extension (cand, def_insn, sub_rtx))
732 if (state->modified[INSN_UID (def_insn)].kind == EXT_MODIFIED_NONE)
733 state->modified[INSN_UID (def_insn)].mode = ext_src_mode;
765 rtx_insn *def_insn;
837 rtx_insn *def_insn = state->defs_list[0];
840 if (state->modified[INSN_UID (def_insn)].kind != EXT_MODIFIED_NONE)
848 if (bb != BLOCK_FOR_INSN (def_insn)
849 || DF_INSN_LUID (def_insn) > DF_INSN_LUID (cand->insn))
852 /* If there is an overlap between the destination of DEF_INSN and
855 rtx *dest_sub_rtx = get_sub_rtx (def_insn);
866 read its value in a larger mode because DEF_INSN implicitly sets it
872 struct df_link *uses = get_uses (def_insn, src_reg);
884 used or set between the def_insn and cand->insn exclusive. */
885 if (reg_used_between_p (SET_DEST (set), def_insn, cand->insn)
886 || reg_set_between_p (SET_DEST (set), def_insn, cand->insn))
932 = get_defs (def_insn, SET_SRC (*dest_sub_rtx), NULL);
944 block and def_insn follows def_insn2. */
946 || DF_INSN_LUID (def_insn2) > DF_INSN_LUID (def_insn))
955 uses, which may read its value in a larger mode because DEF_INSN
975 used or set between the def_insn2 and def_insn exclusive.
978 if (reg_used_between_p (SET_DEST (set), def_insn2, def_insn)
979 || reg_set_between_p (SET_DEST (set), def_insn2, def_insn)
980 || reg_used_between_p (src_reg, def_insn2, def_insn)
981 || reg_set_between_p (src_reg, def_insn2, def_insn))
1012 FOR_EACH_VEC_ELT (state->defs_list, defs_ix, def_insn)
1014 if (merge_def_and_ext (cand, def_insn, state))
1015 state->modified_list.safe_push (def_insn);
1027 FOR_EACH_VEC_ELT (state->copies_list, i, def_insn)
1029 if (transform_ifelse (cand, def_insn))
1030 state->modified_list.safe_push (def_insn);
1051 FOR_EACH_VEC_ELT (state->modified_list, i, def_insn)
1053 ext_modified *modified = &state->modified[INSN_UID (def_insn)];
1072 FOR_EACH_VEC_ELT (state->modified_list, i, def_insn)
1073 print_rtl_single (dump_file, def_insn);
1348 rtx_insn *def_insn = reinsn_copy_list[i + 1];
1354 rtx sub_rtx = *get_sub_rtx (def_insn);
1361 emit_insn_after (new_set, def_insn);