Browse Source

* fixed r18981 (conversion of LOC_JUMP to something else must happen before
before the old jump labels are restored)

git-svn-id: branches/jvmbackend@19155 -

Jonas Maebe 14 years ago
parent
commit
5332263d46
1 changed files with 7 additions and 6 deletions
  1. 7 6
      compiler/jvm/njvmmem.pas

+ 7 - 6
compiler/jvm/njvmmem.pas

@@ -377,6 +377,13 @@ implementation
          end;
         secondpass(right);
 
+        { simplify index location if necessary, since array references support
+          an index in memory, but not an another array index }
+        if isjump or
+           ((right.location.loc in [LOC_REFERENCE,LOC_CREFERENCE]) and
+            (right.location.reference.arrayreftype<>art_none)) then
+          hlcg.location_force_reg(current_asmdata.CurrAsmList,right.location,right.resultdef,right.resultdef,true);
+
         if isjump then
          begin
            current_procinfo.CurrTrueLabel:=otl;
@@ -384,12 +391,6 @@ implementation
          end
         else if (right.location.loc = LOC_JUMP) then
           internalerror(2011090501);
-        { simplify index location if necessary, since array references support
-          an index in memory, but not an another array index }
-        if (right.location.loc=LOC_JUMP) or
-           ((right.location.loc in [LOC_REFERENCE,LOC_CREFERENCE]) and
-            (right.location.reference.arrayreftype<>art_none)) then
-          hlcg.location_force_reg(current_asmdata.CurrAsmList,right.location,right.resultdef,right.resultdef,true);
         { replace enum class instance with the corresponding integer value }
         if (right.resultdef.typ=enumdef) then
           begin