소스 검색

* check register type also for registers in references so we are
not mixing addressregisters and intregisters on m68k

git-svn-id: trunk@9128 -

peter 18 년 전
부모
커밋
263b7abc6f
1개의 변경된 파일6개의 추가작업 그리고 3개의 파일을 삭제
  1. 6 3
      compiler/rgobj.pas

+ 6 - 3
compiler/rgobj.pas

@@ -1657,9 +1657,11 @@ unit rgobj;
                               if regtype in [R_INTREGISTER,R_ADDRESSREGISTER] then
                                 with ref^ do
                                   begin
-                                    if base<>NR_NO then
+                                    if (base<>NR_NO) and
+                                       (getregtype(base)=regtype) then
                                       setsupreg(base,reginfo[getsupreg(base)].colour);
-                                    if index<>NR_NO then
+                                    if (index<>NR_NO) and
+                                       (getregtype(index)=regtype) then
                                       setsupreg(index,reginfo[getsupreg(index)].colour);
                                   end;
                             end;
@@ -1669,7 +1671,8 @@ unit rgobj;
                               if regtype=R_INTREGISTER then
                                 begin
                                   so:=shifterop;
-                                  if so^.rs<>NR_NO then
+                                  if (so^.rs<>NR_NO) and
+                                     (getregtype(so^.rs)=regtype) then
                                     setsupreg(so^.rs,reginfo[getsupreg(so^.rs)].colour);
                                 end;
                             end;