Disable OP_INEG cfolding on 32 bit arches, as it breaks the LNEG decomposition. The...
authorZoltan Varga <vargaz@gmail.com>
Wed, 9 Feb 2011 04:09:24 +0000 (05:09 +0100)
committerZoltan Varga <vargaz@gmail.com>
Wed, 9 Feb 2011 04:12:12 +0000 (05:12 +0100)
mono/mini/cfold.c

index e59b02ae890e6cbec711803ef25a8b6c293ada69..d9e35d4702ed2ccd72b686482737bd05be03f6d3 100644 (file)
@@ -202,8 +202,10 @@ mono_constant_fold_ins (MonoCompile *cfg, MonoInst *ins, MonoInst *arg1, MonoIns
        case OP_INEG:
                if (arg1->opcode == OP_ICONST) {
                        /* INEG sets cflags on x86, and the LNEG decomposition depends on that */
-                       if ((ins->opcode == OP_INEG) && ins->next && (ins->next->opcode == OP_ADC_IMM))
+#if SIZEOF_REGISTER == 4
+                       if (ins->opcode == OP_INEG)
                                return NULL;
+#endif
                        ALLOC_DEST (cfg, dest, ins);
                        switch (ins->opcode) {
                                FOLD_UNOP (OP_INEG,-);