Преглед изворни кода

m68k: disable an A_MOVE in the spilling code in an effort to finally try to unbreak paszlib

Karoly Balogh пре 2 година
родитељ
комит
6c67798272
1 измењених фајлова са 4 додато и 1 уклоњено
  1. 4 1
      compiler/m68k/rgcpu.pas

+ 4 - 1
compiler/m68k/rgcpu.pas

@@ -157,7 +157,10 @@ unit rgcpu;
               else if (instr.oper[1]^.typ=top_reg) and (getregtype(instr.oper[1]^.reg)=regtype) and
                 (get_alias(getsupreg(instr.oper[1]^.reg))=orgreg) and
                 ((
-                  ((instr.opcode=A_MOVE) or (instr.opcode=A_ADD) or (instr.opcode=A_SUB) or
+                  { FIX ME: if the commented out A_MOVE is enabled, it breaks some code with complex
+                            arithmetics, for example paszlib. Probably having this disabled just hides
+                            some other issue somewhere, but at least the resulting code won't crash. (KB) }
+                  ({(instr.opcode=A_MOVE) or} (instr.opcode=A_ADD) or (instr.opcode=A_SUB) or
                    (instr.opcode=A_AND) or (instr.opcode=A_OR)) and
                   (instr.oper[0]^.typ=top_reg) and not
                   (isaddressregister(instr.oper[0]^.reg)) and