diff options
author | Ayke van Laethem <[email protected]> | 2022-11-17 18:51:51 +0100 |
---|---|---|
committer | Ron Evans <[email protected]> | 2022-11-18 18:40:38 +0100 |
commit | 5c622cfc43e81ffdd15d250a61c5a2744166a0e6 (patch) | |
tree | a6128eb7afeff88d9ce4b8cecc853fa7c913ae97 /transform | |
parent | 783c6a813a0c09c771a62449af013b16d7009bfd (diff) | |
download | tinygo-5c622cfc43e81ffdd15d250a61c5a2744166a0e6.tar.gz tinygo-5c622cfc43e81ffdd15d250a61c5a2744166a0e6.zip |
compiler: refactor some code for the next commit
This is a pure refactor, it doesn't change the behavior of anything.
It's separate from the next commit so that the actual changes are easier
to read.
Diffstat (limited to 'transform')
-rw-r--r-- | transform/stacksize.go | 22 |
1 files changed, 2 insertions, 20 deletions
diff --git a/transform/stacksize.go b/transform/stacksize.go index 169f1454c..44409c5f8 100644 --- a/transform/stacksize.go +++ b/transform/stacksize.go @@ -2,6 +2,7 @@ package transform import ( "github.com/tinygo-org/tinygo/compileopts" + "github.com/tinygo-org/tinygo/compiler/llvmutil" "tinygo.org/x/go-llvm" ) @@ -52,7 +53,7 @@ func CreateStackSizeLoads(mod llvm.Module, config *compileopts.Config) []string stackSizesGlobal.SetInitializer(llvm.ConstArray(functions[0].Type(), defaultStackSizes)) // Add all relevant values to llvm.used (for LTO). - appendToUsedGlobals(mod, append([]llvm.Value{stackSizesGlobal}, functionValues...)...) + llvmutil.AppendToUsedGlobals(mod, append([]llvm.Value{stackSizesGlobal}, functionValues...)...) // Replace the calls with loads from the new global with stack sizes. irbuilder := ctx.NewBuilder() @@ -72,22 +73,3 @@ func CreateStackSizeLoads(mod llvm.Module, config *compileopts.Config) []string return functionNames } - -// Append the given values to the llvm.used array. The values can be any pointer -// type, they will be bitcast to i8*. -func appendToUsedGlobals(mod llvm.Module, values ...llvm.Value) { - if !mod.NamedGlobal("llvm.used").IsNil() { - // Sanity check. TODO: we don't emit such a global at the moment, but - // when we do we should append to it instead. - panic("todo: append to existing llvm.used") - } - i8ptrType := llvm.PointerType(mod.Context().Int8Type(), 0) - var castValues []llvm.Value - for _, value := range values { - castValues = append(castValues, llvm.ConstBitCast(value, i8ptrType)) - } - usedInitializer := llvm.ConstArray(i8ptrType, castValues) - used := llvm.AddGlobal(mod, usedInitializer.Type(), "llvm.used") - used.SetInitializer(usedInitializer) - used.SetLinkage(llvm.AppendingLinkage) -} |