Prechádzať zdrojové kódy

* fixed internal error with int64 comparisations

git-svn-id: trunk@3337 -
florian 19 rokov pred
rodič
commit
6c3ef12cfb
1 zmenil súbory, kde vykonal 16 pridanie a 0 odobranie
  1. 16 0
      compiler/arm/narmadd.pas

+ 16 - 0
compiler/arm/narmadd.pas

@@ -33,6 +33,7 @@ interface
        private
           function  GetResFlags(unsigned:Boolean):TResFlags;
        protected
+          function pass_1 : tnode;override;
           procedure second_addfloat;override;
           procedure second_cmpfloat;override;
           procedure second_cmpordinal;override;
@@ -300,6 +301,21 @@ interface
       end;
 
 
+    function tarmaddnode.pass_1 : tnode;
+      begin
+        result:=inherited pass_1;
+
+        { handling boolean expressions }
+        if not(assigned(result)) and
+           (
+             not(is_boolean(left.resulttype.def)) or
+             not(is_boolean(right.resulttype.def)) or
+             is_dynamic_array(left.resulttype.def)
+           ) then
+          expectloc:=LOC_FLAGS;
+      end;
+
+
     procedure tarmaddnode.second_cmpordinal;
       var
         unsigned : boolean;