mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-10 05:53:39 +00:00
all: add type parameter to CreateLoad
This is needed for LLVM 15.
This commit is contained in:
committed by
Ron Evans
parent
6bc6de8f82
commit
7b6a9fab42
+1
-1
@@ -222,7 +222,7 @@ func MakeGCStackSlots(mod llvm.Module) bool {
|
||||
builder.CreateStore(initialStackObject, stackObject)
|
||||
|
||||
// Update stack start.
|
||||
parent := builder.CreateLoad(stackChainStart, "")
|
||||
parent := builder.CreateLoad(stackChainStartType, stackChainStart, "")
|
||||
gep := builder.CreateGEP(stackObject, []llvm.Value{
|
||||
llvm.ConstInt(ctx.Int32Type(), 0, false),
|
||||
llvm.ConstInt(ctx.Int32Type(), 0, false),
|
||||
|
||||
@@ -34,6 +34,11 @@ func CreateStackSizeLoads(mod llvm.Module, config *compileopts.Config) []string
|
||||
return nil
|
||||
}
|
||||
|
||||
ctx := mod.Context()
|
||||
targetData := llvm.NewTargetData(mod.DataLayout())
|
||||
defer targetData.Dispose()
|
||||
uintptrType := ctx.IntType(targetData.PointerSize() * 8)
|
||||
|
||||
// Create the new global with stack sizes, that will be put in a new section
|
||||
// just for itself.
|
||||
stackSizesGlobalType := llvm.ArrayType(functions[0].Type(), len(functions))
|
||||
@@ -50,16 +55,16 @@ func CreateStackSizeLoads(mod llvm.Module, config *compileopts.Config) []string
|
||||
appendToUsedGlobals(mod, append([]llvm.Value{stackSizesGlobal}, functionValues...)...)
|
||||
|
||||
// Replace the calls with loads from the new global with stack sizes.
|
||||
irbuilder := mod.Context().NewBuilder()
|
||||
irbuilder := ctx.NewBuilder()
|
||||
defer irbuilder.Dispose()
|
||||
for i, function := range functions {
|
||||
for _, use := range functionMap[function] {
|
||||
ptr := llvm.ConstGEP(stackSizesGlobal, []llvm.Value{
|
||||
llvm.ConstInt(mod.Context().Int32Type(), 0, false),
|
||||
llvm.ConstInt(mod.Context().Int32Type(), uint64(i), false),
|
||||
llvm.ConstInt(ctx.Int32Type(), 0, false),
|
||||
llvm.ConstInt(ctx.Int32Type(), uint64(i), false),
|
||||
})
|
||||
irbuilder.SetInsertPointBefore(use)
|
||||
stacksize := irbuilder.CreateLoad(ptr, "stacksize")
|
||||
stacksize := irbuilder.CreateLoad(uintptrType, ptr, "stacksize")
|
||||
use.ReplaceAllUsesWith(stacksize)
|
||||
use.EraseFromParentAsInstruction()
|
||||
}
|
||||
|
||||
@@ -125,7 +125,7 @@ func ExternalInt64AsPtr(mod llvm.Module, config *compileopts.Config) error {
|
||||
// where the return value should be stored, instead of using
|
||||
// the regular return value.
|
||||
builder.CreateCall(externalFnType, externalFn, callParams, callName)
|
||||
returnValue := builder.CreateLoad(retvalAlloca, "retval")
|
||||
returnValue := builder.CreateLoad(int64Type, retvalAlloca, "retval")
|
||||
call.ReplaceAllUsesWith(returnValue)
|
||||
call.EraseFromParentAsInstruction()
|
||||
} else {
|
||||
@@ -152,7 +152,7 @@ func ExternalInt64AsPtr(mod llvm.Module, config *compileopts.Config) error {
|
||||
for i, origParam := range fn.Params() {
|
||||
paramValue := externalFn.Param(i)
|
||||
if origParam.Type() == int64Type {
|
||||
paramValue = builder.CreateLoad(paramValue, "i64")
|
||||
paramValue = builder.CreateLoad(int64Type, paramValue, "i64")
|
||||
}
|
||||
callParams = append(callParams, paramValue)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user