Lines Matching refs:insn

53 #include "insn-config.h"
1342 matches the predicate for insn CODE operand OPERAND. */
1360 registers present inside of insn. The result will be a valid insn. */
1363 instantiate_virtual_regs_in_insn (rtx insn)
1371 set = single_set (insn);
1393 emit_insn_before (seq, insn);
1394 delete_insn (insn);
1399 new add insn. The difference between this and falling through
1401 move insn in the initial rtl stream. */
1418 emit_insn_before (seq, insn);
1419 delete_insn (insn);
1423 extract_insn (insn);
1424 insn_code = INSN_CODE (insn);
1447 emit_insn_before (seq, insn);
1448 delete_insn (insn);
1471 extract_insn (insn);
1472 insn_code = INSN_CODE (insn);
1496 emit_insn_before (seq, insn);
1521 emit_insn_before (seq, insn);
1537 emit_insn_before (seq, insn);
1548 Validate the new value vs the insn predicate. Note that
1557 emit_insn_before (seq, insn);
1572 INSN_CODE (insn) = -1;
1575 if (asm_noperands (PATTERN (insn)) >= 0)
1577 if (!check_asm_operands (PATTERN (insn)))
1579 error_for_asm (insn, "impossible constraint in %<asm%>");
1580 delete_insn (insn);
1585 if (recog_memoized (insn) < 0)
1586 fatal_insn_not_found (insn);
1694 rtx insn;
1712 for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
1713 if (INSN_P (insn))
1717 if (GET_CODE (PATTERN (insn)) == USE
1718 || GET_CODE (PATTERN (insn)) == CLOBBER
1719 || GET_CODE (PATTERN (insn)) == ADDR_VEC
1720 || GET_CODE (PATTERN (insn)) == ADDR_DIFF_VEC
1721 || GET_CODE (PATTERN (insn)) == ASM_INPUT)
1724 instantiate_virtual_regs_in_insn (insn);
1726 if (INSN_DELETED_P (insn))
1729 for_each_rtx (&REG_NOTES (insn), instantiate_virtual_regs_in_rtx, NULL);
1732 if (GET_CODE (insn) == CALL_INSN)
1733 for_each_rtx (&CALL_INSN_FUNCTION_USAGE (insn),
3637 rtx insn;
3639 for (insn = insns; insn; insn = NEXT_INSN (insn))
3641 if (NOTE_P (insn))
3643 if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_BEG)
3645 tree block = NOTE_BLOCK (insn);
3663 NOTE_BLOCK (insn) = new_block;
3684 else if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_BLOCK_END)
3686 NOTE_BLOCK (insn) = VEC_pop (tree, *p_block_stack);
3925 /* Make sure first insn is a note even if we don't want linenums.
3926 This makes sure the first insn will never be deleted.
4006 rtx insn = gen_stack_protect_set (x, y);
4007 if (insn)
4009 emit_insn (insn);
4348 rtx insn, seq;
4350 for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
4351 if (CALL_P (insn))
4378 If control reaches this insn, the function can drop through
4435 However, not all machine descriptions define a blockage insn, so
4648 /* Set the locator of the insn chain starting at INSN to LOC. */
4650 set_insn_locators (rtx insn, int loc)
4652 while (insn != NULL_RTX)
4654 if (INSN_P (insn))
4655 INSN_LOCATOR (insn) = loc;
4656 insn = NEXT_INSN (insn);
4664 contains (rtx insn, VEC(int,heap) **vec)
4668 if (NONJUMP_INSN_P (insn)
4669 && GET_CODE (PATTERN (insn)) == SEQUENCE)
4672 for (i = XVECLEN (PATTERN (insn), 0) - 1; i >= 0; i--)
4674 if (INSN_UID (XVECEXP (PATTERN (insn), 0, i))
4682 if (INSN_UID (insn) == VEC_index (int, *vec, j))
4689 prologue_epilogue_contains (rtx insn)
4691 if (contains (insn, &prologue))
4693 if (contains (insn, &epilogue))
4699 sibcall_epilogue_contains (rtx insn)
4702 return contains (insn, &sibcall_epilogue);
4738 We must be sure of what a relevant epilogue insn is doing. We also
4746 of the SP equivalence, one for use during the insn we are
4747 processing and one for use in the next insn. The difference is
4755 rtx new_sp_equiv_reg; /* REG to be used at end of insn. */
4756 HOST_WIDE_INT new_sp_offset; /* Offset to be used at end of insn. */
4776 rtx insn, next;
4793 insn = insns;
4795 while (insn != NULL_RTX)
4797 next = NEXT_INSN (insn);
4799 if (!INSN_P (insn))
4801 add_insn (insn);
4802 insn = next;
4806 /* If this insn references the register that SP is equivalent to and
4810 && reg_referenced_p (info.sp_equiv_reg, PATTERN (insn)))
4821 if (GET_CODE (PATTERN (insn)) == RETURN
4822 || (GET_CODE (PATTERN (insn)) == PARALLEL
4823 && GET_CODE (XVECEXP (PATTERN (insn), 0, 0)) == RETURN))
4830 /* If the return address is in a register, we can emit the insn
4837 add_insn (insn);
4838 insn = next;
4907 /* Show the SET in the above insn is a RETURN. */
4915 replace the reference to SP and emit the insn. If none of those are
4917 else if (!reg_mentioned_p (stack_pointer_rtx, PATTERN (insn))
4919 || !reg_set_p (info.sp_equiv_reg, insn)))
4920 add_insn (insn);
4921 else if (! reg_set_p (stack_pointer_rtx, insn)
4923 || !reg_set_p (info.sp_equiv_reg, insn)))
4930 insn);
4933 add_insn (insn);
4935 else if (GET_CODE (PATTERN (insn)) == SET)
4936 handle_epilogue_set (PATTERN (insn), &info);
4937 else if (GET_CODE (PATTERN (insn)) == PARALLEL)
4939 for (j = 0; j < XVECLEN (PATTERN (insn), 0); j++)
4940 if (GET_CODE (XVECEXP (PATTERN (insn), 0, j)) == SET)
4941 handle_epilogue_set (XVECEXP (PATTERN (insn), 0, j), &info);
4944 add_insn (insn);
4949 /* Now update any constants this insn sets. */
4950 note_stores (PATTERN (insn), update_epilogue_consts, &info);
4951 insn = next;
4959 /* SET is a SET from an insn in the epilogue. P is a pointer to the epi_info
5008 insn. But use the old offset for any updates within this insn.
5025 /* Otherwise, replace any references to SP in the insn to its new value
5026 and emit the insn. */
5078 /* Emit an insn to do the load shown in p->equiv_reg_src, if needed. */
5111 - It finds the first such prologue insn.
5112 - It finds the last such prologue insn.
5113 - It changes the insn locator of all such prologue insns to
5118 after the last prologue insn it finds, and if so, returns
5119 the last prologue insn (otherwise it returns NULL).
5123 prologue insn it finds. If ALL of the checks succeed then it
5128 first prologue insn.
5130 prologue insn, the non-prologue insns do not outnumber the
5132 - The first prologue insn & the last prologue insn are in the
5149 /* Go through all the insns and find the first prologue insn, the
5150 last prologue insn, the source line location note, and whether or
5152 prologue insn. Re-set the insn locator for prologue insns to the
5196 /* Count the number of insns between the first prologue insn and the
5197 last prologue insn; also count the number of non-prologue insns
5198 between the first prologue insn and the last prologue insn. */
5405 /* Emit a return insn for the exit fallthru block. Whether
5486 rtx insn = BB_END (bb);
5488 if (!CALL_P (insn)
5489 || ! SIBLING_CALL_P (insn))
5506 emit_insn_before (seq, insn);
5515 rtx insn, prev;
5530 for (insn = prologue_end; insn; insn = prev)
5532 prev = PREV_INSN (insn);
5533 if (NOTE_P (insn) && NOTE_LINE_NUMBER (insn) > 0)
5535 /* Note that we cannot reorder the first insn in the
5540 reorder_insns (insn, insn, prologue_end);
5545 for (insn = BB_END (ENTRY_BLOCK_PTR->next_bb);
5546 insn != prologue_end && insn;
5547 insn = PREV_INSN (insn))
5548 if (NOTE_P (insn) && NOTE_LINE_NUMBER (insn) > 0)
5553 if (! insn)
5555 for (insn = next_active_insn (prologue_end);
5556 insn;
5557 insn = PREV_INSN (insn))
5558 if (NOTE_P (insn) && NOTE_LINE_NUMBER (insn) > 0)
5560 emit_note_copy_after (insn, prologue_end);
5569 rtx insn, next;
5576 for (insn = epilogue_end; insn; insn = next)
5578 next = NEXT_INSN (insn);
5579 if (NOTE_P (insn)
5580 && (NOTE_LINE_NUMBER (insn) > 0
5581 || NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_BEG
5582 || NOTE_LINE_NUMBER (insn) == NOTE_INSN_FUNCTION_END))
5583 reorder_insns (insn, insn, PREV_INSN (epilogue_end));
5596 rtx insn, last, note;
5603 /* Scan from the beginning until we reach the last prologue insn.
5606 for (insn = f; insn; insn = NEXT_INSN (insn))
5608 if (NOTE_P (insn))
5610 if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_PROLOGUE_END)
5611 note = insn;
5613 else if (contains (insn, &prologue))
5615 last = insn;
5624 move it to just after the last prologue insn. */
5644 /* Scan from the end until we reach the first epilogue insn.
5647 for (insn = get_last_insn (); insn; insn = PREV_INSN (insn))
5649 if (NOTE_P (insn))
5651 if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_EPILOGUE_BEG)
5652 note = insn;
5654 else if (contains (insn, &epilogue))
5656 last = insn;
5665 move it to just before the first epilogue insn. */
5668 for (note = insn; (note = PREV_INSN (note));)
5720 check_block_change (rtx insn, tree *block)
5722 unsigned uid = INSN_UID (insn);