Procházet zdrojové kódy

* real fix for #41576 based on a patch by rasberryrabbit

florian před 1 týdnem
rodič
revize
aa8050f30c
2 změnil soubory, kde provedl 12 přidání a 2 odebrání
  1. 3 2
      compiler/ncgadd.pas
  2. 9 0
      tests/webtbs/tw41576.pp

+ 3 - 2
compiler/ncgadd.pas

@@ -182,8 +182,9 @@ interface
             { when it is not allowed to swap we have a constant on
               left, that will give problems }
             if not allow_swap then
-              internalerror(200307043);
-            swapleftright;
+              hlcg.location_force_reg(current_asmdata.CurrAsmList,left.location,left.resultdef,left.resultdef,false)
+            else
+              swapleftright;
           end;
       end;
 

+ 9 - 0
tests/webtbs/tw41576.pp

@@ -0,0 +1,9 @@
+{ %opt=-O- -Ooregvar }
+program app;
+
+var
+  p1, p2, p3: Pointer;
+
+begin
+  p1 := p1 + (pointer(1) - p2);
+end.