diff options
| author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-12-09 17:53:05 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-07 21:05:48 -0700 |
| commit | dd51633ebee9deff9928e570c376b7e22af6c93c (patch) | |
| tree | 98848827b53f5eff5f3d98a8f02b1dc6204fb15b /example.c | |
| parent | ff7a53553105a28b1e70e59401e24c2243c3e867 (diff) | |
| download | sparse-dev-dd51633ebee9deff9928e570c376b7e22af6c93c.tar.gz | |
Generate some kind of code for OP_RET
Diffstat (limited to 'example.c')
| -rw-r--r-- | example.c | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -440,6 +440,17 @@ static void generate_branch(struct bb_state *state, struct instruction *br) printf("\tjmp .L%p\n", br->bb_true); } +static void generate_ret(struct bb_state *state, struct instruction *ret) +{ + if (ret->src && ret->src != VOID) { + struct hardreg *wants = hardregs+0; + struct hardreg *reg = getreg(state, ret->src, NULL); + if (reg != wants) + printf("\tmovl %s,%s\n", reg->name, wants->name); + } + printf("\tret\n"); +} + static void generate_one_insn(struct instruction *insn, struct bb_state *state) { switch (insn->opcode) { @@ -493,6 +504,10 @@ static void generate_one_insn(struct instruction *insn, struct bb_state *state) generate_branch(state, insn); break; + case OP_RET: + generate_ret(state, insn); + break; + default: show_instruction(insn); return; |
