Преглед на файлове

* x86 Intel assembler reader: disallow more than one register name per register operand, resolves #15672.

git-svn-id: trunk@17507 -
sergei преди 14 години
родител
ревизия
08ff5ff051
променени са 3 файла, в които са добавени 15 реда и са изтрити 2 реда
  1. 1 0
      .gitattributes
  2. 2 2
      compiler/x86/rax86int.pas
  3. 12 0
      tests/webtbf/tw15672.pp

+ 1 - 0
.gitattributes

@@ -10629,6 +10629,7 @@ tests/webtbf/tw15391a.pp svneol=native#text/plain
 tests/webtbf/tw15447.pp svneol=native#text/plain
 tests/webtbf/tw15594a.pp svneol=native#text/plain
 tests/webtbf/tw15594b.pp svneol=native#text/plain
+tests/webtbf/tw15672.pp svneol=native#text/plain
 tests/webtbf/tw15727b.pp svneol=native#text/plain
 tests/webtbf/tw15777b.pp svneol=native#text/plain
 tests/webtbf/tw1599.pp svneol=native#text/plain

+ 2 - 2
compiler/x86/rax86int.pas

@@ -1795,8 +1795,8 @@ Unit Rax86int;
                 else
                 { Simple register }
                  begin
-                   if not (oper.opr.typ in [OPR_NONE,OPR_REGISTER]) then
-                     Message(asmr_e_invalid_operand_type);
+                   if (oper.opr.typ <> OPR_NONE) then
+                     Message(asmr_e_syn_operand);
                    oper.opr.typ:=OPR_REGISTER;
                    oper.opr.reg:=tempreg;
                    oper.SetSize(tcgsize2size[reg_cgsize(oper.opr.reg)],true);

+ 12 - 0
tests/webtbf/tw15672.pp

@@ -0,0 +1,12 @@
+{ %CPU=i386 }
+{ %fail }
+
+{$asmmode intel}
+procedure test; assembler;
+asm
+     push  eax ebx
+     pop   ebx eax
+end;
+
+begin
+end.