projects
/
mono.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement support for single-precision args on ARM hard float.
[mono.git]
/
mono
/
mini
/
ssa.c
diff --git
a/mono/mini/ssa.c
b/mono/mini/ssa.c
index de70440903ed1268787b5d795ff67177614c59ad..023d2778009bebb9a1002239cba36ec82a2427ee 100644
(file)
--- a/
mono/mini/ssa.c
+++ b/
mono/mini/ssa.c
@@
-1424,19
+1424,22
@@
mono_ssa_loop_invariant_code_motion (MonoCompile *cfg)
else
sreg = -1;
if (sreg != -1) {
else
sreg = -1;
if (sreg != -1) {
+ MonoInst *tins;
+
skip = FALSE;
skip = FALSE;
-
MONO_BB_FOR_EACH_INS (bb, tins
) {
+
for (tins = ins->prev; tins; tins = tins->prev
) {
const char *spec = INS_INFO (tins->opcode);
if (tins->opcode == OP_MOVE && tins->dreg == sreg) {
sreg = tins->sreg1;
const char *spec = INS_INFO (tins->opcode);
if (tins->opcode == OP_MOVE && tins->dreg == sreg) {
sreg = tins->sreg1;
- }
else if (spec [MONO_INST_DEST] != ' ' && tins->dreg == ins->sreg1
) {
+ }
if (spec [MONO_INST_DEST] != ' ' && tins->dreg == sreg
) {
skip = TRUE;
break;
}
}
if (skip)
continue;
skip = TRUE;
break;
}
}
if (skip)
continue;
+ ins->sreg1 = sreg;
}
if (cfg->verbose_level > 1) {
}
if (cfg->verbose_level > 1) {