From 388b19eed5b70046c34148f106f32d570bfef88c Mon Sep 17 00:00:00 2001 From: xushiwei Date: Mon, 13 May 2024 00:50:58 +0800 Subject: [PATCH] _testpy: sort by module name --- cl/_testpy/callpy/out.ll | 14 +++++++------- cl/compile.go | 11 ++++++++++- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/cl/_testpy/callpy/out.ll b/cl/_testpy/callpy/out.ll index 5971bcf1..1f6d541c 100644 --- a/cl/_testpy/callpy/out.ll +++ b/cl/_testpy/callpy/out.ll @@ -8,10 +8,10 @@ source_filename = "main" @__llgo_py.os.getcwd = linkonce global ptr null @0 = private unnamed_addr constant [14 x i8] c"sqrt(2) = %f\0A\00", align 1 @1 = private unnamed_addr constant [10 x i8] c"cwd = %s\0A\00", align 1 -@__llgo_py.os = external global ptr -@2 = private unnamed_addr constant [7 x i8] c"getcwd\00", align 1 @__llgo_py.math = external global ptr -@3 = private unnamed_addr constant [5 x i8] c"sqrt\00", align 1 +@2 = private unnamed_addr constant [5 x i8] c"sqrt\00", align 1 +@__llgo_py.os = external global ptr +@3 = private unnamed_addr constant [7 x i8] c"getcwd\00", align 1 define void @main.init() { _llgo_0: @@ -22,10 +22,10 @@ _llgo_1: ; preds = %_llgo_0 store i1 true, ptr @"main.init$guard", align 1 call void @"github.com/goplus/llgo/py/math.init"() call void @"github.com/goplus/llgo/py/os.init"() - %1 = load ptr, ptr @__llgo_py.os, align 8 - call void (ptr, ...) @llgoLoadPyModSyms(ptr %1, ptr @2, ptr @__llgo_py.os.getcwd, ptr null) - %2 = load ptr, ptr @__llgo_py.math, align 8 - call void (ptr, ...) @llgoLoadPyModSyms(ptr %2, ptr @3, ptr @__llgo_py.math.sqrt, ptr null) + %1 = load ptr, ptr @__llgo_py.math, align 8 + call void (ptr, ...) @llgoLoadPyModSyms(ptr %1, ptr @2, ptr @__llgo_py.math.sqrt, ptr null) + %2 = load ptr, ptr @__llgo_py.os, align 8 + call void (ptr, ...) @llgoLoadPyModSyms(ptr %2, ptr @3, ptr @__llgo_py.os.getcwd, ptr null) br label %_llgo_2 _llgo_2: ; preds = %_llgo_1, %_llgo_0 diff --git a/cl/compile.go b/cl/compile.go index 771f3029..78dbb47b 100644 --- a/cl/compile.go +++ b/cl/compile.go @@ -356,8 +356,17 @@ func (p *context) compileBlock(b llssa.Builder, block *ssa.BasicBlock, n int, do modName := modOf(name) mods[modName] = append(mods[modName], obj) } + + // sort by module name + modNames := make([]string, 0, len(mods)) + for modName := range mods { + modNames = append(modNames, modName) + } + sort.Strings(modNames) + b.SetBlockEx(ret, llssa.AfterInit) - for modName, objs := range mods { + for _, modName := range modNames { + objs := mods[modName] b.LoadPyModSyms(modName, objs...) } }