Browse Source

* fixed internal error with int64 comparisations

git-svn-id: trunk@3337 -
florian 19 years ago
parent
commit
6c3ef12cfb
1 changed files with 16 additions and 0 deletions
  1. 16 0
      compiler/arm/narmadd.pas

+ 16 - 0
compiler/arm/narmadd.pas

@@ -33,6 +33,7 @@ interface
        private
        private
           function  GetResFlags(unsigned:Boolean):TResFlags;
           function  GetResFlags(unsigned:Boolean):TResFlags;
        protected
        protected
+          function pass_1 : tnode;override;
           procedure second_addfloat;override;
           procedure second_addfloat;override;
           procedure second_cmpfloat;override;
           procedure second_cmpfloat;override;
           procedure second_cmpordinal;override;
           procedure second_cmpordinal;override;
@@ -300,6 +301,21 @@ interface
       end;
       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;
     procedure tarmaddnode.second_cmpordinal;
       var
       var
         unsigned : boolean;
         unsigned : boolean;