Lines Matching defs:insn

20 static void rewrite_load_instruction(struct instruction *insn, struct pseudo_list *dominators)
41 replace_with_pseudo(insn, new);
48 kill_use(&insn->src);
49 insn->opcode = OP_PHI;
50 insn->phi_list = dominators;
56 static int find_dominating_parents(struct instruction *insn,
71 if (one == insn)
73 dominance = dominates(insn, one, local);
88 if (!find_dominating_parents(insn, parent, dominators, local))
94 phisrc->phi_node = insn;
98 use_pseudo(insn, phi, add_pseudo(dominators, phi));
107 struct instruction *insn = pu->insn;
108 if (insn->bb && (insn->opcode != OP_LOAD && insn->opcode != OP_STORE))
110 if (pu->userp != &insn->src)
134 struct instruction *insn;
136 FOR_EACH_PTR_REVERSE(bb->insns, insn) {
137 if (!insn->bb)
139 if (insn->opcode == OP_LOAD) {
141 pseudo_t pseudo = insn->src;
145 if (insn->is_volatile)
148 if (!has_users(insn->target)) {
149 kill_instruction(insn);
153 RECURSE_PTR_REVERSE(insn, dom) {
157 dominance = dominates(insn, dom, local);
165 if (!compatible_loads(insn, dom))
168 replace_with_pseudo(insn, dom->target);
176 if (find_dominating_parents(insn, bb, &dominators, local)) {
181 replace_with_pseudo(insn, value_pseudo(0));
185 rewrite_load_instruction(insn, dominators);
197 } END_FOR_EACH_PTR_REVERSE(insn);
200 static bool try_to_kill_store(struct instruction *insn,
203 int dominance = dominates(insn, dom, local);
209 if (insn->target == dom->target && insn->bb == dom->bb) {
211 kill_instruction_force(insn);
226 struct instruction *insn;
228 FOR_EACH_PTR_REVERSE(bb->insns, insn) {
229 if (!insn->bb)
231 if (insn->opcode == OP_STORE) {
234 pseudo_t pseudo = insn->src;
237 if (!insn->type)
239 if (insn->is_volatile)
243 RECURSE_PTR_REVERSE(insn, dom) {
246 if (!try_to_kill_store(insn, dom, local))
258 if (dom == insn)
260 if (!try_to_kill_store(insn, dom, local))
269 } END_FOR_EACH_PTR_REVERSE(insn);