Lines Matching refs:insn
46 struct instruction *insn;
48 FOR_EACH_PTR(bb->insns, insn) {
50 if (!insn->bb)
52 if (insn->opcode != OP_CONTEXT)
54 val = insn->increment;
55 if (insn->check) {
62 warning(insn->pos, "context check failure");
66 } END_FOR_EACH_PTR(insn);
83 struct instruction *insn;
86 insn = last_instruction(bb->insns);
87 if (!insn)
89 if (insn->opcode == OP_RET)
118 static void check_cast_instruction(struct instruction *insn)
120 struct symbol *orig_type = insn->orig_type;
123 int new = insn->size;
125 int newsigned = insn->opcode == OP_SEXT;
132 warning(insn->pos, "cast loses sign");
136 warning(insn->pos, "cast drops bits");
140 warning(insn->pos, "cast wasn't removed");
143 warning(insn->pos, "cast changes sign");
147 static void check_range_instruction(struct instruction *insn)
149 warning(insn->pos, "value out of range");
152 static void check_byte_count(struct instruction *insn, pseudo_t count)
159 warning(insn->pos, "%s with byte count of %llu",
160 show_ident(insn->func->sym->ident), val);
166 static void check_memset(struct instruction *insn)
168 check_byte_count(insn, ptr_list_nth(insn->arguments, 3));
177 void (*check)(struct instruction *insn);
180 static void check_call_instruction(struct instruction *insn)
182 pseudo_t fn = insn->func;
200 check_fn[i].check(insn);
205 static void check_one_instruction(struct instruction *insn)
207 switch (insn->opcode) {
211 check_cast_instruction(insn);
214 check_range_instruction(insn);
217 check_call_instruction(insn);
226 struct instruction *insn;
227 FOR_EACH_PTR(bb->insns, insn) {
228 if (!insn->bb)
230 check_one_instruction(insn);
231 } END_FOR_EACH_PTR(insn);