X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fdecompose.c;h=89d17c3328c1f093460248cc1ea08559ba7a0d47;hb=986ee2362b6308539968e84b1269d64bb21c8576;hp=8fa6bb3eb3c00b8d2165ed54cc2eef8dcee851d6;hpb=2d23bfcbce7a3f7e54dcd5911adb88b244baca35;p=mono.git diff --git a/mono/mini/decompose.c b/mono/mini/decompose.c index 8fa6bb3eb3c..89d17c3328c 100644 --- a/mono/mini/decompose.c +++ b/mono/mini/decompose.c @@ -1301,13 +1301,16 @@ mono_decompose_array_access_opts (MonoCompile *cfg) for (ins = bb->code; ins; ins = ins->next) { switch (ins->opcode) { case OP_LDLEN: - NEW_LOAD_MEMBASE_FAULT (cfg, dest, OP_LOADI4_MEMBASE, ins->dreg, ins->sreg1, - G_STRUCT_OFFSET (MonoArray, max_length)); + NEW_LOAD_MEMBASE_FLAGS (cfg, dest, OP_LOADI4_MEMBASE, ins->dreg, ins->sreg1, + G_STRUCT_OFFSET (MonoArray, max_length), ins->flags | MONO_INST_CONSTANT_LOAD); MONO_ADD_INS (cfg->cbb, dest); break; case OP_BOUNDS_CHECK: MONO_EMIT_NULL_CHECK (cfg, ins->sreg1); - MONO_ARCH_EMIT_BOUNDS_CHECK (cfg, ins->sreg1, ins->inst_imm, ins->sreg2); + if (COMPILE_LLVM (cfg)) + MONO_EMIT_DEFAULT_BOUNDS_CHECK (cfg, ins->sreg1, ins->inst_imm, ins->sreg2, ins->flags & MONO_INST_FAULT); + else + MONO_ARCH_EMIT_BOUNDS_CHECK (cfg, ins->sreg1, ins->inst_imm, ins->sreg2); break; case OP_NEWARR: if (cfg->opt & MONO_OPT_SHARED) { @@ -1336,8 +1339,8 @@ mono_decompose_array_access_opts (MonoCompile *cfg) } break; case OP_STRLEN: - MONO_EMIT_NEW_LOAD_MEMBASE_OP_FAULT (cfg, OP_LOADI4_MEMBASE, ins->dreg, - ins->sreg1, G_STRUCT_OFFSET (MonoString, length)); + MONO_EMIT_NEW_LOAD_MEMBASE_OP_FLAGS (cfg, OP_LOADI4_MEMBASE, ins->dreg, + ins->sreg1, G_STRUCT_OFFSET (MonoString, length), ins->flags | MONO_INST_CONSTANT_LOAD); break; default: break;