From 9fca0e99b517a4af0fcce02cbaab1fdb47ef7a16 Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Sun, 2 Sep 2018 15:58:49 +0200 Subject: [PATCH] compiler: use InternalLinkage where appropriate Internal linkage means that symbols show up in tools like objdump, which is very useful for debugging. --- compiler.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/compiler.go b/compiler.go index 2ab485bf..3d61bf53 100644 --- a/compiler.go +++ b/compiler.go @@ -253,7 +253,7 @@ func (c *Compiler) Parse(mainPath string, buildTags []string) error { global := llvm.AddGlobal(c.mod, llvmType, g.LinkName()) g.llvmGlobal = global if !strings.HasPrefix(g.LinkName(), "_extern_") { - global.SetLinkage(llvm.PrivateLinkage) + global.SetLinkage(llvm.InternalLinkage) if g.LinkName() == "runtime.TargetBits" { bitness := c.targetData.PointerSize() * 8 if bitness < 32 { @@ -346,7 +346,7 @@ func (c *Compiler) Parse(mainPath string, buildTags []string) error { initType := llvm.FunctionType(llvm.VoidType(), nil, false) initFn = llvm.AddFunction(c.mod, "runtime.initAll", initType) } - initFn.SetLinkage(llvm.PrivateLinkage) + initFn.SetLinkage(llvm.InternalLinkage) block := c.ctx.AddBasicBlock(initFn, "entry") c.builder.SetInsertPointAtEnd(block) for _, fn := range c.initFuncs { @@ -364,7 +364,7 @@ func (c *Compiler) Parse(mainPath string, buildTags []string) error { // Set functions referenced in runtime.ll to internal linkage, to improve // optimization (hopefully). - c.mod.NamedFunction("runtime.scheduler").SetLinkage(llvm.PrivateLinkage) + c.mod.NamedFunction("runtime.scheduler").SetLinkage(llvm.InternalLinkage) // Only use a scheduler when necessary. if c.ir.NeedsScheduler() { @@ -413,7 +413,7 @@ func (c *Compiler) Parse(mainPath string, buildTags []string) error { rangeArray := llvm.ConstArray(rangeType, ranges) rangeArrayNewGlobal := llvm.AddGlobal(c.mod, rangeArray.Type(), "runtime.methodSetRanges.tmp") rangeArrayNewGlobal.SetInitializer(rangeArray) - rangeArrayNewGlobal.SetLinkage(llvm.PrivateLinkage) + rangeArrayNewGlobal.SetLinkage(llvm.InternalLinkage) rangeArrayOldGlobal := c.mod.NamedGlobal("runtime.methodSetRanges") rangeArrayOldGlobal.ReplaceAllUsesWith(llvm.ConstBitCast(rangeArrayNewGlobal, rangeArrayOldGlobal.Type())) rangeArrayOldGlobal.EraseFromParentAsGlobal() @@ -421,7 +421,7 @@ func (c *Compiler) Parse(mainPath string, buildTags []string) error { funcArray := llvm.ConstArray(c.i8ptrType, funcPointers) funcArrayNewGlobal := llvm.AddGlobal(c.mod, funcArray.Type(), "runtime.methodSetFunctions.tmp") funcArrayNewGlobal.SetInitializer(funcArray) - funcArrayNewGlobal.SetLinkage(llvm.PrivateLinkage) + funcArrayNewGlobal.SetLinkage(llvm.InternalLinkage) funcArrayOldGlobal := c.mod.NamedGlobal("runtime.methodSetFunctions") funcArrayOldGlobal.ReplaceAllUsesWith(llvm.ConstBitCast(funcArrayNewGlobal, funcArrayOldGlobal.Type())) funcArrayOldGlobal.EraseFromParentAsGlobal() @@ -429,7 +429,7 @@ func (c *Compiler) Parse(mainPath string, buildTags []string) error { signatureArray := llvm.ConstArray(llvm.Int16Type(), signatures) signatureArrayNewGlobal := llvm.AddGlobal(c.mod, signatureArray.Type(), "runtime.methodSetSignatures.tmp") signatureArrayNewGlobal.SetInitializer(signatureArray) - signatureArrayNewGlobal.SetLinkage(llvm.PrivateLinkage) + signatureArrayNewGlobal.SetLinkage(llvm.InternalLinkage) signatureArrayOldGlobal := c.mod.NamedGlobal("runtime.methodSetSignatures") signatureArrayOldGlobal.ReplaceAllUsesWith(llvm.ConstBitCast(signatureArrayNewGlobal, signatureArrayOldGlobal.Type())) signatureArrayOldGlobal.EraseFromParentAsGlobal() @@ -1006,7 +1006,7 @@ func (c *Compiler) parseFunc(frame *Frame) error { if c.dumpSSA { fmt.Printf("\nfunc %s:\n", frame.fn.fn) } - frame.fn.llvmFn.SetLinkage(llvm.PrivateLinkage) + frame.fn.llvmFn.SetLinkage(llvm.InternalLinkage) // Pre-create all basic blocks in the function. for _, block := range frame.fn.fn.DomPreorder() {