Răsfoiți Sursa

Check that inserttypeconv really change node type to ttypeconvnode before setting convtype field (should fix taddbool.pp bytebool failure on powerpc)

git-svn-id: trunk@42692 -
pierre 6 ani în urmă
părinte
comite
f82cc96cb9
1 a modificat fișierele cu 12 adăugiri și 2 ștergeri
  1. 12 2
      compiler/nadd.pas

+ 12 - 2
compiler/nadd.pas

@@ -1663,7 +1663,12 @@ implementation
                           if is_cbool(ld) then
                             begin
                               inserttypeconv(left,pasbool8type);
-                              ttypeconvnode(left).convtype:=tc_bool_2_bool;
+                              { inserttypeconv might already simplify
+                                the typeconvnode after insertion,
+                                thus we need to check if it still
+                                really is a typeconv node }
+                              if left is ttypeconvnode then
+                                ttypeconvnode(left).convtype:=tc_bool_2_bool;
                               if not is_cbool(rd) or
                                  (ld.size>=rd.size) then
                                 resultdef:=ld;
@@ -1671,7 +1676,12 @@ implementation
                           if is_cbool(rd) then
                             begin
                               inserttypeconv(right,pasbool8type);
-                              ttypeconvnode(right).convtype:=tc_bool_2_bool;
+                              { inserttypeconv might already simplify
+                                the typeconvnode after insertion,
+                                thus we need to check if it still
+                                really is a typeconv node }
+                              if right is ttypeconvnode then
+                                ttypeconvnode(right).convtype:=tc_bool_2_bool;
                               if not assigned(resultdef) then
                                 resultdef:=rd;
                             end;