aboutsummaryrefslogtreecommitdiff
path: root/src/correct.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/correct.c')
-rw-r--r--src/correct.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/correct.c b/src/correct.c
index 5db40dd..8c0b249 100644
--- a/src/correct.c
+++ b/src/correct.c
@@ -68,6 +68,14 @@ static size_t correct_relations(struct blk *b, size_t ii, struct insn i,
return ri;
}
+static size_t correct_store(struct blk *b, size_t ii, struct insn i, size_t ri)
+{
+ if (i.in[1].class == IMM)
+ return spill_imm(b, ii, i, 1, ri);
+
+ return ri;
+}
+
static size_t correct_insn(struct blk *b, size_t ii, struct insn i, size_t ri)
{
/* replace references with instructions */
@@ -109,6 +117,9 @@ static size_t correct_insn(struct blk *b, size_t ii, struct insn i, size_t ri)
case NE:
return correct_relations(b, ii, i, ri);
+ case STORE:
+ return correct_store(b, ii, i, ri);
+
default:
}