Răsfoiți Sursa

* allow mla to take 4 operands, resolves #9461

git-svn-id: trunk@8801 -
florian 18 ani în urmă
părinte
comite
9ab1a1c550
3 a modificat fișierele cu 12 adăugiri și 1 ștergeri
  1. 1 0
      .gitattributes
  2. 1 1
      compiler/arm/raarmgas.pas
  3. 10 0
      tests/webtbs/tw9461.pp

+ 1 - 0
.gitattributes

@@ -8473,6 +8473,7 @@ tests/webtbs/tw9347a.pp svneol=native#text/plain
 tests/webtbs/tw9347b.pp svneol=native#text/plain
 tests/webtbs/tw9384.pp svneol=native#text/plain
 tests/webtbs/tw9385.pp svneol=native#text/plain
+tests/webtbs/tw9461.pp svneol=native#text/plain
 tests/webtbs/tw9667.pp svneol=native#text/plain
 tests/webtbs/tw9672.pp svneol=native#text/plain
 tests/webtbs/tw9673.pp -text

+ 1 - 1
compiler/arm/raarmgas.pas

@@ -628,7 +628,7 @@ Unit raarmgas;
             AS_COMMA: { Operand delimiter }
               Begin
                 if ((instr.opcode=A_MOV) and (operandnum=2)) or
-                  ((operandnum=3) and not(instr.opcode in [A_UMLAL,A_UMULL,A_SMLAL,A_SMULL])) then
+                  ((operandnum=3) and not(instr.opcode in [A_UMLAL,A_UMULL,A_SMLAL,A_SMULL,A_MLA])) then
                   begin
                     Consume(AS_COMMA);
                     if not(TryBuildShifterOp(instr.Operands[operandnum+1] as tarmoperand)) then

+ 10 - 0
tests/webtbs/tw9461.pp

@@ -0,0 +1,10 @@
+{ %CPU=arm }
+procedure p; assembler;
+  var
+    i : longint;
+  asm
+    mla r0,r1,r2,r3
+  end;
+
+begin
+end.