From 2e88d5892d8b618179f5422da9ad1cc95b91f477 Mon Sep 17 00:00:00 2001 From: Johann Rudloff Date: Sun, 26 Dec 2021 14:29:15 +0100 Subject: [PATCH] Ensure static closure objects are properly aligned --- src/Compiler/GenLLVMIR.idr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Compiler/GenLLVMIR.idr b/src/Compiler/GenLLVMIR.idr index 3baefd3..cbb435a 100644 --- a/src/Compiler/GenLLVMIR.idr +++ b/src/Compiler/GenLLVMIR.idr @@ -1077,7 +1077,7 @@ getFunIR conNames n args body = do then "%FuncPtrArgs" ++ show (length args) else "%FuncPtrClosureEntry" let closureHeader = constHeader OBJECT_TYPE_ID_CLOSURE (0x10000 * (cast $ length args)) - appendCode $ "@" ++ safeName n ++ "$$closureNoArgs = private unnamed_addr addrspace(1) constant {i64, %FuncPtr} {" ++ toIR closureHeader ++ ", %FuncPtr bitcast (\{closureEntryType} @\{closureEntryName} to %FuncPtr)}" + appendCode $ "@" ++ safeName n ++ "$$closureNoArgs = private unnamed_addr addrspace(1) constant {i64, %FuncPtr} {" ++ toIR closureHeader ++ ", %FuncPtr bitcast (\{closureEntryType} @\{closureEntryName} to %FuncPtr)}, align 8\n" where copyArg : Reg -> String copyArg (Loc i) = let r = show i in " %v" ++ r ++ "Var = alloca %ObjPtr\n store %ObjPtr %v" ++ r ++ ", %ObjPtr* %v" ++ r ++ "Var" -- 2.38.5