Просмотр исходного кода

* fixed the number of bytes added for packed record ordinal fields in the
llvm shadow table

git-svn-id: trunk@32564 -

Jonas Maebe 9 лет назад
Родитель
Сommit
bbbceb08d9
1 измененных файлов с 8 добавлено и 5 удалено
  1. 8 5
      compiler/symtable.pas

+ 8 - 5
compiler/symtable.pas

@@ -1839,12 +1839,15 @@ implementation
                  (vardef.packedbitsize mod 8 <> 0) then
                 begin
                   tmpsize:=vardef.packedbitsize;
-                  sizectr:=tmpsize+7;
-                  repeat
-                    symdeflist.add(tllvmshadowsymtableentry.create(u8inttype,fieldoffset+(tmpsize+7)-sizectr));
-                    dec(sizectr,8);
-                  until (sizectr<=0);
+                  sizectr:=((curroffset+tmpsize+7) shr 3)-((curroffset+7) shr 3);
                   inc(curroffset,tmpsize);
+                  curroffset:=0;
+                  while sizectr<>0 do
+                    begin
+                      symdeflist.add(tllvmshadowsymtableentry.create(u8inttype,fieldoffset+curroffset*8));
+                      dec(sizectr);
+                      inc(curroffset);
+                    end;
                 end
               else
                 begin