From e7fbebfef57f0cc75dc85cfa4ca85571e9ae6f99 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Sun, 21 Jul 2019 11:06:54 +0000 Subject: [PATCH] * fixed field alignment when reusing an anonymous recorddef for LLVM and the LLVM layout of an instance does not match the original one (e.g. because it contains procdefs of procedures with different signatures) git-svn-id: trunk@42477 - --- compiler/llvm/nllvmtcon.pas | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/compiler/llvm/nllvmtcon.pas b/compiler/llvm/nllvmtcon.pas index 9f77b1d439..34c3175b97 100644 --- a/compiler/llvm/nllvmtcon.pas +++ b/compiler/llvm/nllvmtcon.pas @@ -388,9 +388,12 @@ implementation newdef:=crecorddef.create_global_internal('',1,1); recorddef, objectdef: - newdef:=crecorddef.create_global_internal('', - tabstractrecordsymtable(tabstractrecorddef(info.def).symtable).recordalignment, - tabstractrecordsymtable(tabstractrecorddef(info.def).symtable).recordalignmin); + begin + newdef:=crecorddef.create_global_internal('', + tabstractrecordsymtable(tabstractrecorddef(info.def).symtable).usefieldalignment, + tabstractrecordsymtable(tabstractrecorddef(info.def).symtable).recordalignmin); + tabstractrecordsymtable(newdef.symtable).recordalignment:=tabstractrecordsymtable(tabstractrecorddef(info.def).symtable).recordalignment; + end else internalerror(2015122401); end;