Lines Matching refs:pseudo
2 * Register - track pseudo usage, maybe eventually try to do register
38 use(bb, entry->pseudo);
43 use(bb, entry->pseudo);
45 def(bb, entry->pseudo);
53 pseudo_t pseudo;
120 FOR_EACH_PTR(insn->arguments, pseudo) {
121 use(bb, pseudo);
122 } END_FOR_EACH_PTR(pseudo);
143 static void add_pseudo_exclusive(struct pseudo_list **list, pseudo_t pseudo)
145 if (!pseudo_in_list(*list, pseudo)) {
147 add_pseudo(list, pseudo);
151 static inline int trackable_pseudo(pseudo_t pseudo)
153 return pseudo && (pseudo->type == PSEUDO_REG || pseudo->type == PSEUDO_ARG);
156 static void insn_uses(struct basic_block *bb, pseudo_t pseudo)
158 if (trackable_pseudo(pseudo)) {
159 struct instruction *def = pseudo->def;
160 if (pseudo->type != PSEUDO_REG || def->bb != bb || def->opcode == OP_PHI)
161 add_pseudo_exclusive(&bb->needs, pseudo);
165 static void insn_defines(struct basic_block *bb, pseudo_t pseudo)
167 assert(trackable_pseudo(pseudo));
168 add_pseudo(&bb->defines, pseudo);
200 * Track inter-bb pseudo liveness. The intra-bb case
207 /* Add all the bb pseudo usage */
245 pseudo_t pseudo;
246 FOR_EACH_PTR(src, pseudo) {
247 add_pseudo_exclusive(dest, pseudo);
248 } END_FOR_EACH_PTR(pseudo);
275 static void death_def(struct basic_block *bb, pseudo_t pseudo)
279 static void death_use(struct basic_block *bb, pseudo_t pseudo)
281 if (trackable_pseudo(pseudo) && !pseudo_in_list(*live_list, pseudo)) {
282 add_pseudo(&dead_list, pseudo);
283 add_pseudo(live_list, pseudo);