* CodeGenerationOptions.cs: Made the class internal for the 1.1 profile.
[mono.git] / mono / mini / inssel.brg
index efae38f6a1b1d287dbb315957e221de5050e1629..a87c6a1bd6ae17e150cfa79066d471fe15935a00 100644 (file)
@@ -419,7 +419,10 @@ stmt: CEE_STIND_REF (base, reg) {
                                 state->left->tree->inst_offset, state->right->reg1);
 }
 
-stmt: CEE_STIND_REF (base, CEE_LDIND_REF (OP_REGVAR)) {
+stmt: CEE_STIND_REF (base, CEE_LDIND_REF (OP_REGVAR)),
+stmt: CEE_STIND_REF (base, CEE_LDIND_I (OP_REGVAR)),
+stmt: CEE_STIND_I (base, CEE_LDIND_REF (OP_REGVAR)),
+stmt: CEE_STIND_I (base, CEE_LDIND_I (OP_REGVAR)) {
        MONO_EMIT_STORE_MEMBASE (s, tree, OP_STORE_MEMBASE_REG, state->left->tree->inst_basereg,
                                 state->left->tree->inst_offset, state->right->left->tree->dreg);
 }
@@ -429,7 +432,10 @@ stmt: CEE_STIND_REF (base, OP_ICONST) {
                                     state->left->tree->inst_offset, state->right->tree->inst_c0);
 }
 
-stmt: CEE_STIND_REF (OP_REGVAR, CEE_LDIND_REF (OP_REGVAR)) {
+stmt: CEE_STIND_REF (OP_REGVAR, CEE_LDIND_REF (OP_REGVAR)),
+stmt: CEE_STIND_REF (OP_REGVAR, CEE_LDIND_I (OP_REGVAR)),
+stmt: CEE_STIND_I (OP_REGVAR, CEE_LDIND_REF (OP_REGVAR)),
+stmt: CEE_STIND_I (OP_REGVAR, CEE_LDIND_I (OP_REGVAR)) {
        MONO_EMIT_UNALU (s, tree, OP_MOVE, state->left->tree->dreg, state->right->left->tree->dreg);
 }
 
@@ -578,12 +584,14 @@ reg: OP_GROUP (reg, reg) {
 
 stmt: OP_MEMCPY (reg, reg) {
        int size = tree->unused;
-       mini_emit_memcpy (s, state->left->reg1, 0, state->right->reg1, 0, size, 0);
+       if (size > 0)
+               mini_emit_memcpy (s, state->left->reg1, 0, state->right->reg1, 0, size, 0);
 }
 
 stmt: OP_MEMSET (reg) {
        int size = tree->unused;
-       mini_emit_memset (s, state->left->reg1, 0, size, tree->inst_imm, 0);
+       if (size > 0)
+               mini_emit_memset (s, state->left->reg1, 0, size, tree->inst_imm, 0);
 }
 
 reg: OP_LDELEMA2D (reg, OP_GROUP (reg, reg)) "20" {
@@ -1028,9 +1036,22 @@ stmt: CEE_POP (reg)
 
 # remove some common pops without side effects
 stmt: CEE_POP (OP_ICONST)
-stmt: CEE_POP (CEE_LDIND_REF (base))
-stmt: CEE_POP (CEE_LDIND_I4 (base))
+stmt: CEE_POP (CEE_LDIND_I1 (base))
 stmt: CEE_POP (CEE_LDIND_U1 (base))
+stmt: CEE_POP (CEE_LDIND_I2 (base))
+stmt: CEE_POP (CEE_LDIND_U2 (base))
+stmt: CEE_POP (CEE_LDIND_I4 (base))
+stmt: CEE_POP (CEE_LDIND_U4 (base))
+stmt: CEE_POP (CEE_LDIND_I (base))
+stmt: CEE_POP (CEE_LDIND_REF (base))
+stmt: CEE_POP (CEE_LDIND_I1 (OP_REGVAR))
+stmt: CEE_POP (CEE_LDIND_U1 (OP_REGVAR))
+stmt: CEE_POP (CEE_LDIND_I2 (OP_REGVAR))
+stmt: CEE_POP (CEE_LDIND_U2 (OP_REGVAR))
+stmt: CEE_POP (CEE_LDIND_I4 (OP_REGVAR))
+stmt: CEE_POP (CEE_LDIND_U4 (OP_REGVAR))
+stmt: CEE_POP (CEE_LDIND_I (OP_REGVAR))
+stmt: CEE_POP (CEE_LDIND_REF (OP_REGVAR))
 
 stmt: CEE_JMP "0" {
        mono_bblock_add_inst (s->cbb, tree);