Lines Matching refs:insn
77 static void kill_store(struct instruction *insn)
79 remove_use(&insn->src);
80 remove_use(&insn->target);
81 insn->bb = NULL;
98 struct instruction *insn;
104 FOR_EACH_PTR(bb->insns, insn) {
106 if (!insn->bb || insn->src != addr)
108 switch (insn->opcode) {
111 replace_with_pseudo(insn, undef_pseudo());
112 else if (same_memop(store, insn))
113 replace_with_pseudo(insn, store->target);
118 store = insn;
122 } END_FOR_EACH_PTR(insn);
163 struct instruction *insn = pu->insn;
164 struct basic_block *bb = insn->bb;
166 switch (insn->opcode) {
216 struct instruction *insn = phi_map_lookup(bb->phi_map, var);
217 if (insn)
218 return insn;
227 static bool matching_load(struct instruction *def, struct instruction *insn)
229 if (insn->size != def->size)
234 if (insn->offset != def->offset)
244 static void ssa_rename_insn(struct basic_block *bb, struct instruction *insn)
251 switch (insn->opcode) {
253 addr = insn->src;
259 phi_map_update(&bb->phi_map, var, insn);
260 add_instruction(&stores, insn);
263 addr = insn->src;
272 } else if (!matching_load(def, insn)) {
278 replace_with_pseudo(insn, val);
281 var = insn->type;
284 phi_map_update(&bb->phi_map, var, insn);
285 add_instruction(&phis_all, insn);
295 struct instruction *insn;
296 FOR_EACH_PTR(bb->insns, insn) {
297 if (!insn->bb)
299 ssa_rename_insn(bb, insn);
300 } END_FOR_EACH_PTR(insn);
319 static void ssa_rename_phi(struct instruction *insn)
324 if (!insn->phi_var)
326 var = insn->phi_var->sym;
329 FOR_EACH_PTR(insn->bb->parents, par) {
336 link_phi(insn, phi);