Browse Source

* fixed LLVM vecn typed constant evaluation if the lower bound is <> 0

git-svn-id: trunk@33959 -
Jonas Maebe 9 years ago
parent
commit
22c31ca004
1 changed files with 5 additions and 1 deletions
  1. 5 1
      compiler/llvm/nllvmtcon.pas

+ 5 - 1
compiler/llvm/nllvmtcon.pas

@@ -583,10 +583,14 @@ implementation
       ai: taillvm;
       ai: taillvm;
       aityped: tai;
       aityped: tai;
       eledef: tdef;
       eledef: tdef;
+      vecindex: asizeint;
     begin
     begin
       { update range checking info }
       { update range checking info }
       inherited;
       inherited;
-      ai:=taillvm.getelementptr_reg_tai_size_const(NR_NO,nil,ptrsinttype,index.svalue,true);
+      vecindex:=index.svalue;
+      if def.typ=arraydef then
+        dec(vecindex,tarraydef(def).lowrange);
+      ai:=taillvm.getelementptr_reg_tai_size_const(NR_NO,nil,ptrsinttype,vecindex,true);
       case def.typ of
       case def.typ of
         arraydef:
         arraydef:
           eledef:=tarraydef(def).elementdef;
           eledef:=tarraydef(def).elementdef;