From ec1cca7ca4bf2ceb44151fd16884e245c3988c61 Mon Sep 17 00:00:00 2001 From: visualfc Date: Fri, 14 Jun 2024 09:57:23 +0800 Subject: [PATCH] ssa: global use elem type --- c/sqlite/llgo_autogen.lla | Bin 850 -> 854 bytes cl/_testdata/apkg/out.ll | 2 +- cl/_testdata/fncall/out.ll | 6 +- cl/_testdata/importpkg/out.ll | 8 +-- cl/_testdata/method/out.ll | 8 +-- cl/_testdata/print/out.ll | 38 +++++------ cl/_testdata/printf/out.ll | 8 +-- cl/_testdata/printval/out.ll | 8 +-- cl/_testdata/ptrmthd/out.ll | 8 +-- cl/_testdata/uint/out.ll | 6 +- cl/_testdata/untyped/out.ll | 8 +-- cl/_testdata/utf8/out.ll | 8 +-- cl/_testdata/vargs/out.ll | 10 +-- cl/_testdata/varinit/out.ll | 8 +-- cl/_testgo/equal/out.ll | 20 +++--- cl/_testgo/errors/out.ll | 18 +++--- cl/_testgo/goroutine/out.ll | 6 +- cl/_testgo/ifaceconv/out.ll | 26 ++++---- cl/_testgo/ifaceprom/out.ll | 22 +++---- cl/_testgo/interface/out.ll | 28 ++++---- cl/_testgo/invoke/out.ll | 44 ++++++------- cl/_testgo/print/out.ll | 6 +- cl/_testgo/reader/out.ll | 82 ++++++++++++------------ cl/_testgo/strucintf/out.ll | 12 ++-- cl/_testgo/struczero/out.ll | 22 +++---- cl/_testlibc/argv/out.ll | 6 +- cl/_testlibc/sqlite/out.ll | 6 +- cl/_testlibgo/mathbits/out.ll | 6 +- cl/_testpy/callpy/out.ll | 14 ++-- cl/_testpy/gcd/out.ll | 10 +-- cl/_testpy/math/out.ll | 4 +- cl/_testpy/matrix/out.ll | 10 +-- cl/_testpy/max/out.ll | 14 ++-- cl/_testpy/pi/out.ll | 8 +-- cl/_testpy/pow/out.ll | 10 +-- cl/_testrt/alloca/out.ll | 6 +- cl/_testrt/allocstr/out.ll | 6 +- cl/_testrt/any/out.ll | 14 ++-- cl/_testrt/builtin/out.ll | 14 ++-- cl/_testrt/callback/out.ll | 6 +- cl/_testrt/cast/out.ll | 8 +-- cl/_testrt/closure/out.ll | 6 +- cl/_testrt/concat/out.ll | 6 +- cl/_testrt/cstr/out.ll | 6 +- cl/_testrt/cvar/out.ll | 10 +-- cl/_testrt/eface/out.ll | 48 +++++++------- cl/_testrt/fprintf/out.ll | 8 +-- cl/_testrt/gblarray/out.ll | 10 +-- cl/_testrt/hello/out.ll | 8 +-- cl/_testrt/index/out.ll | 6 +- cl/_testrt/intgen/out.ll | 6 +- cl/_testrt/linkname/out.ll | 6 +- cl/_testrt/map/out.ll | 6 +- cl/_testrt/mask/out.ll | 6 +- cl/_testrt/named/out.ll | 6 +- cl/_testrt/panic/out.ll | 8 +-- cl/_testrt/qsort/out.ll | 6 +- cl/_testrt/result/out.ll | 6 +- cl/_testrt/strlen/out.ll | 8 +-- cl/_testrt/struct/out.ll | 8 +-- cl/_testrt/sum/out.ll | 6 +- cl/_testrt/typalias/out.ll | 8 +-- cl/_testrt/unreachable/out.ll | 6 +- cl/compile.go | 6 +- cl/compile_test.go | 6 +- internal/runtime/bdwgc/llgo_autogen.lla | Bin 409 -> 414 bytes py/inspect/llgo_autogen.lla | Bin 576 -> 559 bytes py/json/llgo_autogen.lla | Bin 548 -> 558 bytes py/llgo_autogen.lla | Bin 1635 -> 1639 bytes py/math/llgo_autogen.lla | Bin 547 -> 558 bytes py/matplotlib/llgo_autogen.lla | Bin 553 -> 562 bytes py/numpy/llgo_autogen.lla | Bin 546 -> 557 bytes py/os/llgo_autogen.lla | Bin 543 -> 554 bytes py/pandas/llgo_autogen.lla | Bin 547 -> 558 bytes py/statistics/llgo_autogen.lla | Bin 552 -> 561 bytes py/std/llgo_autogen.lla | Bin 549 -> 559 bytes py/sys/llgo_autogen.lla | Bin 546 -> 556 bytes py/torch/llgo_autogen.lla | Bin 547 -> 557 bytes ssa/abitype.go | 2 +- ssa/decl.go | 25 +++----- ssa/eh.go | 3 +- ssa/python.go | 4 +- ssa/ssa_test.go | 25 ++++---- 83 files changed, 407 insertions(+), 412 deletions(-) diff --git a/c/sqlite/llgo_autogen.lla b/c/sqlite/llgo_autogen.lla index 93b7c3ad89c466cb889cea4ee81c084e1de2f389..ffb75f469ff7e8036085769e52f3f9478baa0b86 100644 GIT binary patch delta 801 zcmV++1K#}72G$0DP)h>@6aWAK2mpai&RDuJ$wZ<8003nV000jF8~|)=XK!C&b#!lM zWo|BPY*kbV00Uy6Yi4AiYi4zL3jhHG^#K3?1QY-O0PUB{j+-zTh4(y#g^C77QNk?= zGowna)GoTHT4|&%x`_xl)RJRUW1?20dH32F2#^~|XjYSd4MhAmpYz2rPv9$!a}2+H z0`I|Hg7~j|IgaRhlF$_A*#zT+PNGTn8zTb_@iS+LB)TZe|E3VUfRwWlKr3b;Vg_w!7iK9t~?!}mh{D# z$t_raJdKLYSCr;dnjjy|_p+BNx!dgdrQ5SDVhsj^AsGzLXK;Qi2Adni8-+KZaAy;I z15ttKT?=CMU#djv0_hJ02hwW;Io(>{lGLxIl{FuB!SpW% z^Wl6jgPve+D2jUkDUav6*@ecg56j=F*s-8;A0O519nEMQK{^?I()Rc2m+5sgJL&%bP)h*<9s?8r000O8flbZ| fSh_LEM4|!!0A-Q`DFb4lYm+PkAO`CK0000033O*Y delta 780 zcmV+n1M~dW2GRz9P)h>@6aWAK2mr=;#aP9$vD$ZnP%7)c-0m%a$(y$LacB+s^Z=P7DY{wBuZE!jzO-nUG1$#TFoz_-g-cON+CIfa|5HdAfGU% z(NEo!5(HLj9*L@+hlU79ogaknweh^UlyIMHwY! zrZ)n1nd2Nvk^$h;7*#}cO7<=z{Ldw(zYi?!RP-`fHu3rx4= z@XnTFdb%9`|B=JIeO6ppQenhsD)>SD~~<`s9N zV&{r~(ws^W7u(=@KU3di-ZY{xgBPt_$ zmm0D9FI6OU4e1YM$bn2`S0)vFn3#x#&(h-dA*DNSsS1Y7`vfa0xLmR2#SR+0n}W&OPY; zdH_PoI1^aQDw4~LQwC*E;R$#-_%`YarF#iVL1_c86jExXq>Hd{=Dw#9s}pg~kGWA} z=QBdV*rA|ukB@5a9n5GPK{^?I(sq;K0u~L%dBs@T=XkQ70ssJ9lLP}P149sClQ07y K2Im3*0000TtX*UP diff --git a/cl/_testdata/apkg/out.ll b/cl/_testdata/apkg/out.ll index 3e1aab2d..165eea6c 100644 --- a/cl/_testdata/apkg/out.ll +++ b/cl/_testdata/apkg/out.ll @@ -1,7 +1,7 @@ ; ModuleID = 'apkg' source_filename = "apkg" -@"apkg.init$guard" = global ptr null +@"apkg.init$guard" = global i1 false, align 1 define double @apkg.Max(double %0, double %1) { _llgo_0: diff --git a/cl/_testdata/fncall/out.ll b/cl/_testdata/fncall/out.ll index 180fd4cb..a432973a 100644 --- a/cl/_testdata/fncall/out.ll +++ b/cl/_testdata/fncall/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testdata/importpkg/out.ll b/cl/_testdata/importpkg/out.ll index 7097b520..05dfeefb 100644 --- a/cl/_testdata/importpkg/out.ll +++ b/cl/_testdata/importpkg/out.ll @@ -1,10 +1,10 @@ ; ModuleID = 'main' source_filename = "main" -@main.hello = global [7 x i8] undef -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.hello = global [7 x i8] zeroinitializer, align 1 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testdata/method/out.ll b/cl/_testdata/method/out.ll index b353e46d..40cd03aa 100644 --- a/cl/_testdata/method/out.ll +++ b/cl/_testdata/method/out.ll @@ -1,10 +1,10 @@ ; ModuleID = 'main' source_filename = "main" -@main.format = global [10 x i8] undef -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.format = global [10 x i8] zeroinitializer, align 1 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define i64 @main.T.Add(i64 %0, i64 %1) { _llgo_0: diff --git a/cl/_testdata/print/out.ll b/cl/_testdata/print/out.ll index b2c17ed3..4b0fa01c 100644 --- a/cl/_testdata/print/out.ll +++ b/cl/_testdata/print/out.ll @@ -8,29 +8,29 @@ source_filename = "main" %"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr } -@"main.init$guard" = global ptr null -@main.minhexdigits = global ptr null +@"main.init$guard" = global i1 false, align 1 +@main.minhexdigits = global i64 0, align 8 @0 = private unnamed_addr constant [3 x i8] c"%s\00", align 1 -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @1 = private unnamed_addr constant [4 x i8] c"llgo", align 1 -@_llgo_float32 = linkonce global ptr null -@_llgo_float64 = linkonce global ptr null +@_llgo_float32 = linkonce global ptr null, align 8 +@_llgo_float64 = linkonce global ptr null, align 8 @2 = private unnamed_addr constant [10 x i8] c"check bool", align 1 -@_llgo_string = linkonce global ptr null -@_llgo_bool = linkonce global ptr null +@_llgo_string = linkonce global ptr null, align 8 +@_llgo_bool = linkonce global ptr null, align 8 @3 = private unnamed_addr constant [8 x i8] c"check &^", align 1 -@_llgo_int32 = linkonce global ptr null -@_llgo_int8 = linkonce global ptr null -@_llgo_int16 = linkonce global ptr null -@_llgo_int64 = linkonce global ptr null -@_llgo_int = linkonce global ptr null -@_llgo_uint8 = linkonce global ptr null -@_llgo_uint16 = linkonce global ptr null -@_llgo_uint32 = linkonce global ptr null -@_llgo_uint64 = linkonce global ptr null -@_llgo_uintptr = linkonce global ptr null -@_llgo_uint = linkonce global ptr null +@_llgo_int32 = linkonce global ptr null, align 8 +@_llgo_int8 = linkonce global ptr null, align 8 +@_llgo_int16 = linkonce global ptr null, align 8 +@_llgo_int64 = linkonce global ptr null, align 8 +@_llgo_int = linkonce global ptr null, align 8 +@_llgo_uint8 = linkonce global ptr null, align 8 +@_llgo_uint16 = linkonce global ptr null, align 8 +@_llgo_uint32 = linkonce global ptr null, align 8 +@_llgo_uint64 = linkonce global ptr null, align 8 +@_llgo_uintptr = linkonce global ptr null, align 8 +@_llgo_uint = linkonce global ptr null, align 8 @4 = private unnamed_addr constant [4 x i8] c"true", align 1 @5 = private unnamed_addr constant [5 x i8] c"false", align 1 @6 = private unnamed_addr constant [3 x i8] c"NaN", align 1 diff --git a/cl/_testdata/printf/out.ll b/cl/_testdata/printf/out.ll index fd92dcbe..1271af05 100644 --- a/cl/_testdata/printf/out.ll +++ b/cl/_testdata/printf/out.ll @@ -1,10 +1,10 @@ ; ModuleID = 'main' source_filename = "main" -@main.hello = global [7 x i8] undef -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.hello = global [7 x i8] zeroinitializer, align 1 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testdata/printval/out.ll b/cl/_testdata/printval/out.ll index 28677659..a9a9199c 100644 --- a/cl/_testdata/printval/out.ll +++ b/cl/_testdata/printval/out.ll @@ -1,10 +1,10 @@ ; ModuleID = 'main' source_filename = "main" -@main.format = global [10 x i8] undef -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.format = global [10 x i8] zeroinitializer, align 1 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testdata/ptrmthd/out.ll b/cl/_testdata/ptrmthd/out.ll index fc9c4ce5..669165c3 100644 --- a/cl/_testdata/ptrmthd/out.ll +++ b/cl/_testdata/ptrmthd/out.ll @@ -1,10 +1,10 @@ ; ModuleID = 'main' source_filename = "main" -@main.format = global [10 x i8] undef -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.format = global [10 x i8] zeroinitializer, align 1 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @"main.(*T).Print"(ptr %0, i64 %1) { _llgo_0: diff --git a/cl/_testdata/uint/out.ll b/cl/_testdata/uint/out.ll index 0dde97f7..852fa7da 100644 --- a/cl/_testdata/uint/out.ll +++ b/cl/_testdata/uint/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [11 x i8] c"Hello, %u\0A\00", align 1 define i32 @main.f(i32 %0) { diff --git a/cl/_testdata/untyped/out.ll b/cl/_testdata/untyped/out.ll index c64ab15b..e1e480bb 100644 --- a/cl/_testdata/untyped/out.ll +++ b/cl/_testdata/untyped/out.ll @@ -1,10 +1,10 @@ ; ModuleID = 'main' source_filename = "main" -@main.a = global ptr null -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.a = global double 0.000000e+00, align 8 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testdata/utf8/out.ll b/cl/_testdata/utf8/out.ll index a8fe27ab..7a7deb06 100644 --- a/cl/_testdata/utf8/out.ll +++ b/cl/_testdata/utf8/out.ll @@ -3,10 +3,10 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } -@main.array = global [8 x i8] undef -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.array = global [8 x i8] zeroinitializer, align 1 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [7 x i8] c"\E4\B8\ADabcd", align 1 define i8 @main.index(i8 %0) { diff --git a/cl/_testdata/vargs/out.ll b/cl/_testdata/vargs/out.ll index a5623c91..cc9162e5 100644 --- a/cl/_testdata/vargs/out.ll +++ b/cl/_testdata/vargs/out.ll @@ -6,13 +6,13 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null -@_llgo_int = linkonce global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 +@_llgo_int = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 @1 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1 -@_llgo_string = linkonce global ptr null +@_llgo_string = linkonce global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testdata/varinit/out.ll b/cl/_testdata/varinit/out.ll index bd98b63c..cfe2f593 100644 --- a/cl/_testdata/varinit/out.ll +++ b/cl/_testdata/varinit/out.ll @@ -1,10 +1,10 @@ ; ModuleID = 'main' source_filename = "main" -@main.a = global ptr null -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.a = global i64 0, align 8 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testgo/equal/out.ll b/cl/_testgo/equal/out.ll index afa3ea1d..fec88027 100644 --- a/cl/_testgo/equal/out.ll +++ b/cl/_testgo/equal/out.ll @@ -9,26 +9,26 @@ source_filename = "main" %main.N = type {} %"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } -@"main.init$guard" = global ptr null +@"main.init$guard" = global i1 false, align 1 @0 = private unnamed_addr constant [6 x i8] c"failed", align 1 -@_llgo_string = linkonce global ptr null +@_llgo_string = linkonce global ptr null, align 8 @1 = private unnamed_addr constant [5 x i8] c"hello", align 1 -@_llgo_int = linkonce global ptr null +@_llgo_int = linkonce global ptr null, align 8 @2 = private unnamed_addr constant [2 x i8] c"ok", align 1 -@"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw" = linkonce global ptr null +@"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw" = linkonce global ptr null, align 8 @3 = private unnamed_addr constant [4 x i8] c"main", align 1 -@_llgo_main.T = linkonce global ptr null -@"_llgo_struct$5D_KhR3tDEp-wpx9caTiVZca43wS-XW6slE9Bsr8rsk" = linkonce global ptr null -@_llgo_any = linkonce global ptr null +@_llgo_main.T = linkonce global ptr null, align 8 +@"_llgo_struct$5D_KhR3tDEp-wpx9caTiVZca43wS-XW6slE9Bsr8rsk" = linkonce global ptr null, align 8 +@_llgo_any = linkonce global ptr null, align 8 @4 = private unnamed_addr constant [1 x i8] c"X", align 1 @5 = private unnamed_addr constant [1 x i8] c"Y", align 1 @6 = private unnamed_addr constant [1 x i8] c"Z", align 1 @7 = private unnamed_addr constant [1 x i8] c"V", align 1 @8 = private unnamed_addr constant [6 x i8] c"main.T", align 1 -@_llgo_main.N = linkonce global ptr null +@_llgo_main.N = linkonce global ptr null, align 8 @9 = private unnamed_addr constant [6 x i8] c"main.N", align 1 -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.assert(i1 %0) { _llgo_0: diff --git a/cl/_testgo/errors/out.ll b/cl/_testgo/errors/out.ll index 7c0762a2..529954fe 100644 --- a/cl/_testgo/errors/out.ll +++ b/cl/_testgo/errors/out.ll @@ -9,19 +9,19 @@ source_filename = "main" %"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, ptr, ptr } %"github.com/goplus/llgo/internal/abi.Imethod" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr } -@"main.init$guard" = global ptr null -@"*_llgo_main.errorString" = global ptr null -@_llgo_main.errorString = global ptr null -@"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ" = global ptr null -@_llgo_string = linkonce global ptr null +@"main.init$guard" = global i1 false, align 1 +@"*_llgo_main.errorString" = global ptr null, align 8 +@_llgo_main.errorString = global ptr null, align 8 +@"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ" = global ptr null, align 8 +@_llgo_string = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [1 x i8] c"s", align 1 @1 = private unnamed_addr constant [4 x i8] c"main", align 1 @2 = private unnamed_addr constant [5 x i8] c"Error", align 1 -@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null +@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null, align 8 @3 = private unnamed_addr constant [16 x i8] c"main.errorString", align 1 -@"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU" = linkonce global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU" = linkonce global ptr null, align 8 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @4 = private unnamed_addr constant [8 x i8] c"an error", align 1 define %"github.com/goplus/llgo/internal/runtime.iface" @main.New(%"github.com/goplus/llgo/internal/runtime.String" %0) { diff --git a/cl/_testgo/goroutine/out.ll b/cl/_testgo/goroutine/out.ll index 3e5142a8..87077df0 100644 --- a/cl/_testgo/goroutine/out.ll +++ b/cl/_testgo/goroutine/out.ll @@ -3,9 +3,9 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [16 x i8] c"Hello, goroutine", align 1 @1 = private unnamed_addr constant [1 x i8] c".", align 1 diff --git a/cl/_testgo/ifaceconv/out.ll b/cl/_testgo/ifaceconv/out.ll index d85c6dd2..6cc58f93 100644 --- a/cl/_testgo/ifaceconv/out.ll +++ b/cl/_testgo/ifaceconv/out.ll @@ -11,33 +11,33 @@ source_filename = "main" %"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, ptr, ptr } %"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null -@_llgo_main.I0 = linkonce global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 +@_llgo_main.I0 = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [4 x i8] c"main", align 1 @1 = private unnamed_addr constant [7 x i8] c"main.I0", align 1 @2 = private unnamed_addr constant [21 x i8] c"nil i0.(I0) succeeded", align 1 -@_llgo_string = linkonce global ptr null -@_llgo_main.I1 = linkonce global ptr null -@"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null +@_llgo_string = linkonce global ptr null, align 8 +@_llgo_main.I1 = linkonce global ptr null, align 8 +@"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null, align 8 @3 = private unnamed_addr constant [6 x i8] c"main.f", align 1 @4 = private unnamed_addr constant [7 x i8] c"main.I1", align 1 -@"main.iface$brpgdLtIeRlPi8QUoTgPCXzlehUkncg7v9aITo-GsF4" = global ptr null +@"main.iface$brpgdLtIeRlPi8QUoTgPCXzlehUkncg7v9aITo-GsF4" = global ptr null, align 8 @5 = private unnamed_addr constant [21 x i8] c"nil i1.(I1) succeeded", align 1 -@_llgo_main.I2 = linkonce global ptr null +@_llgo_main.I2 = linkonce global ptr null, align 8 @6 = private unnamed_addr constant [6 x i8] c"main.g", align 1 @7 = private unnamed_addr constant [7 x i8] c"main.I2", align 1 -@"main.iface$gZBF8fFlqIMZ9M6lT2VWPyc3eu5Co6j0WoKGIEgDPAw" = global ptr null +@"main.iface$gZBF8fFlqIMZ9M6lT2VWPyc3eu5Co6j0WoKGIEgDPAw" = global ptr null, align 8 @8 = private unnamed_addr constant [21 x i8] c"nil i2.(I2) succeeded", align 1 -@_llgo_main.C1 = linkonce global ptr null -@"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw" = linkonce global ptr null +@_llgo_main.C1 = linkonce global ptr null, align 8 +@"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw" = linkonce global ptr null, align 8 @9 = private unnamed_addr constant [1 x i8] c"f", align 1 @10 = private unnamed_addr constant [7 x i8] c"main.C1", align 1 @11 = private unnamed_addr constant [17 x i8] c"C1 i1.(I0) failed", align 1 @12 = private unnamed_addr constant [17 x i8] c"C1 i1.(I1) failed", align 1 @13 = private unnamed_addr constant [20 x i8] c"C1 i1.(I2) succeeded", align 1 -@_llgo_main.C2 = linkonce global ptr null +@_llgo_main.C2 = linkonce global ptr null, align 8 @14 = private unnamed_addr constant [1 x i8] c"g", align 1 @15 = private unnamed_addr constant [7 x i8] c"main.C2", align 1 @16 = private unnamed_addr constant [17 x i8] c"C2 i1.(I0) failed", align 1 diff --git a/cl/_testgo/ifaceprom/out.ll b/cl/_testgo/ifaceprom/out.ll index 68bdad92..9dac6e6a 100644 --- a/cl/_testgo/ifaceprom/out.ll +++ b/cl/_testgo/ifaceprom/out.ll @@ -12,23 +12,23 @@ source_filename = "main" %"github.com/goplus/llgo/internal/abi.Imethod" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } -@"main.init$guard" = global ptr null +@"main.init$guard" = global i1 false, align 1 @0 = private unnamed_addr constant [3 x i8] c"two", align 1 -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null -@_llgo_main.impl = global ptr null -@"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw" = linkonce global ptr null +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 +@_llgo_main.impl = global ptr null, align 8 +@"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw" = linkonce global ptr null, align 8 @1 = private unnamed_addr constant [4 x i8] c"main", align 1 @2 = private unnamed_addr constant [3 x i8] c"one", align 1 @3 = private unnamed_addr constant [8 x i8] c"main.one", align 1 -@"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA" = linkonce global ptr null -@_llgo_int = linkonce global ptr null +@"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA" = linkonce global ptr null, align 8 +@_llgo_int = linkonce global ptr null, align 8 @4 = private unnamed_addr constant [8 x i8] c"main.two", align 1 -@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null -@_llgo_string = linkonce global ptr null +@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null, align 8 +@_llgo_string = linkonce global ptr null, align 8 @5 = private unnamed_addr constant [9 x i8] c"main.impl", align 1 -@"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA" = global ptr null -@_llgo_main.I = linkonce global ptr null +@"main.iface$zZ89tENb5h_KNjvpxf1TXPfaWFYn0IZrZwyVf42lRtA" = global ptr null, align 8 +@_llgo_main.I = linkonce global ptr null, align 8 @6 = private unnamed_addr constant [6 x i8] c"main.I", align 1 @7 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1 @8 = private unnamed_addr constant [4 x i8] c"pass", align 1 diff --git a/cl/_testgo/interface/out.ll b/cl/_testgo/interface/out.ll index 92258906..e7475bfa 100644 --- a/cl/_testgo/interface/out.ll +++ b/cl/_testgo/interface/out.ll @@ -10,31 +10,31 @@ source_filename = "main" %"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } %"github.com/goplus/llgo/internal/abi.Imethod" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr } -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null -@"*_llgo_main.Game1" = linkonce global ptr null -@_llgo_main.Game1 = linkonce global ptr null -@"_llgo_struct$cJmCzeVn0orHWafCrTGAnbbAF46F2A4Fms4bJBm8ITI" = linkonce global ptr null -@"*_llgo_github.com/goplus/llgo/cl/internal/foo.Game" = linkonce global ptr null -@"_llgo_github.com/goplus/llgo/cl/internal/foo.Game" = linkonce global ptr null -@"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw" = linkonce global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 +@"*_llgo_main.Game1" = linkonce global ptr null, align 8 +@_llgo_main.Game1 = linkonce global ptr null, align 8 +@"_llgo_struct$cJmCzeVn0orHWafCrTGAnbbAF46F2A4Fms4bJBm8ITI" = linkonce global ptr null, align 8 +@"*_llgo_github.com/goplus/llgo/cl/internal/foo.Game" = linkonce global ptr null, align 8 +@"_llgo_github.com/goplus/llgo/cl/internal/foo.Game" = linkonce global ptr null, align 8 +@"_llgo_struct$n1H8J_3prDN3firMwPxBLVTkE5hJ9Di-AqNvaC9jczw" = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [4 x i8] c"main", align 1 @1 = private unnamed_addr constant [4 x i8] c"Load", align 1 -@"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null +@"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null, align 8 @2 = private unnamed_addr constant [8 x i8] c"initGame", align 1 @3 = private unnamed_addr constant [47 x i8] c"github.com/goplus/llgo/cl/internal/foo.initGame", align 1 @4 = private unnamed_addr constant [38 x i8] c"github.com/goplus/llgo/cl/internal/foo", align 1 @5 = private unnamed_addr constant [43 x i8] c"github.com/goplus/llgo/cl/internal/foo.Game", align 1 @6 = private unnamed_addr constant [4 x i8] c"Game", align 1 @7 = private unnamed_addr constant [10 x i8] c"main.Game1", align 1 -@"*_llgo_main.Game2" = linkonce global ptr null -@_llgo_main.Game2 = linkonce global ptr null +@"*_llgo_main.Game2" = linkonce global ptr null, align 8 +@_llgo_main.Game2 = linkonce global ptr null, align 8 @8 = private unnamed_addr constant [13 x i8] c"main.initGame", align 1 @9 = private unnamed_addr constant [10 x i8] c"main.Game2", align 1 -@"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer" = linkonce global ptr null +@"_llgo_github.com/goplus/llgo/cl/internal/foo.Gamer" = linkonce global ptr null, align 8 @10 = private unnamed_addr constant [44 x i8] c"github.com/goplus/llgo/cl/internal/foo.Gamer", align 1 -@"main.iface$sO8a1LvuUsjXwiwaC6sR9-L4DiYgiOnZi7iosyShJXg" = global ptr null +@"main.iface$sO8a1LvuUsjXwiwaC6sR9-L4DiYgiOnZi7iosyShJXg" = global ptr null, align 8 @11 = private unnamed_addr constant [2 x i8] c"OK", align 1 @12 = private unnamed_addr constant [4 x i8] c"FAIL", align 1 diff --git a/cl/_testgo/invoke/out.ll b/cl/_testgo/invoke/out.ll index 3f419b70..1a1216e6 100644 --- a/cl/_testgo/invoke/out.ll +++ b/cl/_testgo/invoke/out.ll @@ -11,44 +11,44 @@ source_filename = "main" %"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, ptr, ptr } %"github.com/goplus/llgo/internal/abi.Imethod" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr } -@"main.init$guard" = global ptr null +@"main.init$guard" = global i1 false, align 1 @0 = private unnamed_addr constant [6 x i8] c"invoke", align 1 @1 = private unnamed_addr constant [7 x i8] c"invoke1", align 1 @2 = private unnamed_addr constant [7 x i8] c"invoke2", align 1 @3 = private unnamed_addr constant [7 x i8] c"invoke3", align 1 -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @4 = private unnamed_addr constant [5 x i8] c"hello", align 1 -@_llgo_main.T = linkonce global ptr null -@"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ" = global ptr null -@_llgo_string = linkonce global ptr null +@_llgo_main.T = linkonce global ptr null, align 8 +@"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ" = global ptr null, align 8 +@_llgo_string = linkonce global ptr null, align 8 @5 = private unnamed_addr constant [1 x i8] c"s", align 1 @6 = private unnamed_addr constant [4 x i8] c"main", align 1 @7 = private unnamed_addr constant [6 x i8] c"Invoke", align 1 -@"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA" = linkonce global ptr null -@_llgo_int = linkonce global ptr null +@"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA" = linkonce global ptr null, align 8 +@_llgo_int = linkonce global ptr null, align 8 @8 = private unnamed_addr constant [6 x i8] c"Method", align 1 -@"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null +@"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null, align 8 @9 = private unnamed_addr constant [6 x i8] c"main.T", align 1 -@"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0" = linkonce global ptr null -@"*_llgo_main.T" = linkonce global ptr null -@_llgo_main.T1 = linkonce global ptr null +@"_llgo_iface$uRUteI7wmSy7y7ODhGzk0FdDaxGKMhVSSu6HZEv9aa0" = linkonce global ptr null, align 8 +@"*_llgo_main.T" = linkonce global ptr null, align 8 +@_llgo_main.T1 = linkonce global ptr null, align 8 @10 = private unnamed_addr constant [7 x i8] c"main.T1", align 1 -@"*_llgo_main.T1" = linkonce global ptr null -@_llgo_main.T2 = linkonce global ptr null -@_llgo_float64 = linkonce global ptr null +@"*_llgo_main.T1" = linkonce global ptr null, align 8 +@_llgo_main.T2 = linkonce global ptr null, align 8 +@_llgo_float64 = linkonce global ptr null, align 8 @11 = private unnamed_addr constant [7 x i8] c"main.T2", align 1 -@"*_llgo_main.T2" = linkonce global ptr null -@"*_llgo_main.T3" = linkonce global ptr null -@_llgo_main.T3 = linkonce global ptr null -@_llgo_int8 = linkonce global ptr null +@"*_llgo_main.T2" = linkonce global ptr null, align 8 +@"*_llgo_main.T3" = linkonce global ptr null, align 8 +@_llgo_main.T3 = linkonce global ptr null, align 8 +@_llgo_int8 = linkonce global ptr null, align 8 @12 = private unnamed_addr constant [7 x i8] c"main.T3", align 1 -@"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI" = linkonce global ptr null +@"_llgo_iface$jwmSdgh1zvY_TDIgLzCkvkbiyrdwl9N806DH0JGcyMI" = linkonce global ptr null, align 8 @13 = private unnamed_addr constant [5 x i8] c"world", align 1 -@_llgo_main.I = linkonce global ptr null +@_llgo_main.I = linkonce global ptr null, align 8 @14 = private unnamed_addr constant [6 x i8] c"main.I", align 1 @15 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1 -@_llgo_any = linkonce global ptr null +@_llgo_any = linkonce global ptr null, align 8 define i64 @main.T.Invoke(%main.T %0) { _llgo_0: diff --git a/cl/_testgo/print/out.ll b/cl/_testgo/print/out.ll index dd4a2524..5d98f8a7 100644 --- a/cl/_testgo/print/out.ll +++ b/cl/_testgo/print/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testgo/reader/out.ll b/cl/_testgo/reader/out.ll index 4db55df1..eaaa3063 100644 --- a/cl/_testgo/reader/out.ll +++ b/cl/_testgo/reader/out.ll @@ -14,78 +14,78 @@ source_filename = "main" %"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } %"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, ptr, ptr } -@main.EOF = global ptr null -@main.ErrShortWrite = global ptr null -@"main.init$guard" = global ptr null -@_llgo_main.WriterTo = linkonce global ptr null -@"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk" = linkonce global ptr null -@_llgo_main.Writer = linkonce global ptr null -@"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY" = linkonce global ptr null -@"[]_llgo_byte" = linkonce global ptr null -@_llgo_byte = linkonce global ptr null -@_llgo_int = linkonce global ptr null -@_llgo_error = global ptr null -@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null -@_llgo_string = linkonce global ptr null +@main.EOF = global %"github.com/goplus/llgo/internal/runtime.iface" zeroinitializer, align 8 +@main.ErrShortWrite = global %"github.com/goplus/llgo/internal/runtime.iface" zeroinitializer, align 8 +@"main.init$guard" = global i1 false, align 1 +@_llgo_main.WriterTo = linkonce global ptr null, align 8 +@"_llgo_func$MrYxYl10p_I07B55pBsGw9la9zbzU2vGDPLWrT714Uk" = linkonce global ptr null, align 8 +@_llgo_main.Writer = linkonce global ptr null, align 8 +@"_llgo_func$06yPPin-fnDnxFKkLLcJ1GEUhIobjPimde7T_Id_hmY" = linkonce global ptr null, align 8 +@"[]_llgo_byte" = linkonce global ptr null, align 8 +@_llgo_byte = linkonce global ptr null, align 8 +@_llgo_int = linkonce global ptr null, align 8 +@_llgo_error = global ptr null, align 8 +@"_llgo_func$zNDVRsWTIpUPKouNUS805RGX--IV9qVK8B31IZbg5to" = linkonce global ptr null, align 8 +@_llgo_string = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [5 x i8] c"Error", align 1 @1 = private unnamed_addr constant [4 x i8] c"main", align 1 @2 = private unnamed_addr constant [5 x i8] c"error", align 1 @3 = private unnamed_addr constant [5 x i8] c"Write", align 1 @4 = private unnamed_addr constant [11 x i8] c"main.Writer", align 1 -@_llgo_int64 = linkonce global ptr null +@_llgo_int64 = linkonce global ptr null, align 8 @5 = private unnamed_addr constant [7 x i8] c"WriteTo", align 1 @6 = private unnamed_addr constant [13 x i8] c"main.WriterTo", align 1 -@"_llgo_iface$eN81k1zqixGTyagHw_4nqH4mGfwwehTOCTXUlbT9kzk" = linkonce global ptr null -@_llgo_main.nopCloserWriterTo = global ptr null -@"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y" = linkonce global ptr null -@_llgo_main.Reader = linkonce global ptr null +@"_llgo_iface$eN81k1zqixGTyagHw_4nqH4mGfwwehTOCTXUlbT9kzk" = linkonce global ptr null, align 8 +@_llgo_main.nopCloserWriterTo = global ptr null, align 8 +@"_llgo_struct$_3ow4zXXILqvC0WDqDRNq5DPhjE1DInJgN924VHWc2Y" = linkonce global ptr null, align 8 +@_llgo_main.Reader = linkonce global ptr null, align 8 @7 = private unnamed_addr constant [4 x i8] c"Read", align 1 @8 = private unnamed_addr constant [11 x i8] c"main.Reader", align 1 @9 = private unnamed_addr constant [6 x i8] c"Reader", align 1 @10 = private unnamed_addr constant [5 x i8] c"Close", align 1 -@"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w" = linkonce global ptr null +@"_llgo_func$8rsrSd_r3UHd_2DiYTyaOKR7BYkei4zw5ysG35KF38w" = linkonce global ptr null, align 8 @11 = private unnamed_addr constant [22 x i8] c"main.nopCloserWriterTo", align 1 -@"_llgo_iface$L2Ik-AJcd0jsoBw5fQ07pQpfUM-kh78Wn2bOeak6M3I" = linkonce global ptr null -@_llgo_main.nopCloser = global ptr null +@"_llgo_iface$L2Ik-AJcd0jsoBw5fQ07pQpfUM-kh78Wn2bOeak6M3I" = linkonce global ptr null, align 8 +@_llgo_main.nopCloser = global ptr null, align 8 @12 = private unnamed_addr constant [14 x i8] c"main.nopCloser", align 1 -@_llgo_main.StringWriter = linkonce global ptr null -@"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw" = linkonce global ptr null +@_llgo_main.StringWriter = linkonce global ptr null, align 8 +@"_llgo_func$thH5FBpdXzJNnCpSfiLU5ItTntFU6LWp0RJhDm2XJjw" = linkonce global ptr null, align 8 @13 = private unnamed_addr constant [11 x i8] c"WriteString", align 1 @14 = private unnamed_addr constant [17 x i8] c"main.StringWriter", align 1 -@"_llgo_iface$Ly4zXiUMEac-hYAMw6b6miJ1JEhGfLyBWyBOhpsRZcU" = linkonce global ptr null +@"_llgo_iface$Ly4zXiUMEac-hYAMw6b6miJ1JEhGfLyBWyBOhpsRZcU" = linkonce global ptr null, align 8 @15 = private unnamed_addr constant [3 x i8] c"EOF", align 1 @16 = private unnamed_addr constant [11 x i8] c"short write", align 1 -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @17 = private unnamed_addr constant [11 x i8] c"hello world", align 1 -@"*_llgo_main.stringReader" = global ptr null -@_llgo_main.stringReader = global ptr null -@"main.struct$Mdt84yjYYwxF9D2i4cRmpEPiWaO6tsjtrbGUjyESypk" = global ptr null +@"*_llgo_main.stringReader" = global ptr null, align 8 +@_llgo_main.stringReader = global ptr null, align 8 +@"main.struct$Mdt84yjYYwxF9D2i4cRmpEPiWaO6tsjtrbGUjyESypk" = global ptr null, align 8 @18 = private unnamed_addr constant [1 x i8] c"s", align 1 @19 = private unnamed_addr constant [1 x i8] c"i", align 1 @20 = private unnamed_addr constant [8 x i8] c"prevRune", align 1 @21 = private unnamed_addr constant [3 x i8] c"Len", align 1 -@"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA" = linkonce global ptr null +@"_llgo_func$ETeB8WwW04JEq0ztcm-XPTJtuYvtpkjIsAc0-2NT9zA" = linkonce global ptr null, align 8 @22 = private unnamed_addr constant [6 x i8] c"ReadAt", align 1 -@"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c" = linkonce global ptr null +@"_llgo_func$TY5Etv7VBKM_-2um1BDEeQEE2lP06Pt6G54EuKiNC3c" = linkonce global ptr null, align 8 @23 = private unnamed_addr constant [8 x i8] c"ReadByte", align 1 -@"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM" = linkonce global ptr null +@"_llgo_func$6bvVpCcGPUc3z_EmsQTHB0AVT1hP5-NNLVRgm43teCM" = linkonce global ptr null, align 8 @24 = private unnamed_addr constant [8 x i8] c"ReadRune", align 1 -@"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU" = linkonce global ptr null -@_llgo_rune = linkonce global ptr null +@"_llgo_func$CB0CO6hV_feSzhi4pz1P4omza2fKNK930wvOR1T33fU" = linkonce global ptr null, align 8 +@_llgo_rune = linkonce global ptr null, align 8 @25 = private unnamed_addr constant [4 x i8] c"Seek", align 1 -@"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms" = linkonce global ptr null +@"_llgo_func$HE7H49xPa1uXmrkMDpqB3RCRGf3qzhLGrxKCEXOYjms" = linkonce global ptr null, align 8 @26 = private unnamed_addr constant [4 x i8] c"Size", align 1 -@"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug" = linkonce global ptr null +@"_llgo_func$Eoig9xhJM5GShHH5aNPxTZZXp1IZxprRl4zPuv2hkug" = linkonce global ptr null, align 8 @27 = private unnamed_addr constant [10 x i8] c"UnreadByte", align 1 @28 = private unnamed_addr constant [10 x i8] c"UnreadRune", align 1 @29 = private unnamed_addr constant [17 x i8] c"main.stringReader", align 1 -@"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE" = linkonce global ptr null -@"*_llgo_main.errorString" = global ptr null -@_llgo_main.errorString = global ptr null -@"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ" = global ptr null +@"_llgo_iface$OFO8Us9n8ajWCabGedeuoJ-Za2zAMk4Jh0FunAcUCFE" = linkonce global ptr null, align 8 +@"*_llgo_main.errorString" = global ptr null, align 8 +@_llgo_main.errorString = global ptr null, align 8 +@"main.struct$QTufDJA9wEDzuzgkA-ZSrLqW-B6lWN8O25mTSglAoLQ" = global ptr null, align 8 @30 = private unnamed_addr constant [16 x i8] c"main.errorString", align 1 -@"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU" = linkonce global ptr null +@"_llgo_iface$Fh8eUJ-Gw4e6TYuajcFIOSCuqSPKAt5nS4ow7xeGXEU" = linkonce global ptr null, align 8 @31 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1 @32 = private unnamed_addr constant [37 x i8] c"stringsReader.ReadAt: negative offset", align 1 @33 = private unnamed_addr constant [34 x i8] c"stringsReader.Seek: invalid whence", align 1 diff --git a/cl/_testgo/strucintf/out.ll b/cl/_testgo/strucintf/out.ll index aefb12fd..ecbe8e05 100644 --- a/cl/_testgo/strucintf/out.ll +++ b/cl/_testgo/strucintf/out.ll @@ -7,15 +7,15 @@ source_filename = "main" %"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } -@"main.init$guard" = global ptr null -@"main.struct$MYpsoM99ZwFY087IpUOkIw1zjBA_sgFXVodmn1m-G88" = global ptr null -@_llgo_int = linkonce global ptr null +@"main.init$guard" = global i1 false, align 1 +@"main.struct$MYpsoM99ZwFY087IpUOkIw1zjBA_sgFXVodmn1m-G88" = global ptr null, align 8 +@_llgo_int = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [1 x i8] c"v", align 1 @1 = private unnamed_addr constant [4 x i8] c"main", align 1 -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @2 = private unnamed_addr constant [11 x i8] c"Foo: not ok", align 1 -@"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk" = linkonce global ptr null +@"_llgo_struct$K-dZ9QotZfVPz2a0YdRa9vmZUuDXPTqZOlMShKEDJtk" = linkonce global ptr null, align 8 @3 = private unnamed_addr constant [1 x i8] c"V", align 1 @4 = private unnamed_addr constant [11 x i8] c"Bar: not ok", align 1 @5 = private unnamed_addr constant [9 x i8] c"F: not ok", align 1 diff --git a/cl/_testgo/struczero/out.ll b/cl/_testgo/struczero/out.ll index 4c417f06..4a8bf7fa 100644 --- a/cl/_testgo/struczero/out.ll +++ b/cl/_testgo/struczero/out.ll @@ -10,25 +10,25 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } %"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, ptr, ptr } -@"main.init$guard" = global ptr null -@"_llgo_github.com/goplus/llgo/cl/internal/foo.Foo" = linkonce global ptr null -@"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs" = global ptr null -@"*_llgo_byte" = linkonce global ptr null -@_llgo_byte = linkonce global ptr null -@_llgo_float32 = linkonce global ptr null +@"main.init$guard" = global i1 false, align 1 +@"_llgo_github.com/goplus/llgo/cl/internal/foo.Foo" = linkonce global ptr null, align 8 +@"main.struct$qQwZyFy_4JRalRxVVsVD8R09X5t58tWjTrtJPtHbEjs" = global ptr null, align 8 +@"*_llgo_byte" = linkonce global ptr null, align 8 +@_llgo_byte = linkonce global ptr null, align 8 +@_llgo_float32 = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [2 x i8] c"pb", align 1 @1 = private unnamed_addr constant [1 x i8] c"F", align 1 @2 = private unnamed_addr constant [4 x i8] c"main", align 1 @3 = private unnamed_addr constant [2 x i8] c"Pb", align 1 -@"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE" = linkonce global ptr null +@"_llgo_func$NfGSLZ1QiKRoFkKeqYSXE5hUU5bpeteSJKrbMNUzYRE" = linkonce global ptr null, align 8 @4 = private unnamed_addr constant [38 x i8] c"github.com/goplus/llgo/cl/internal/foo", align 1 @5 = private unnamed_addr constant [42 x i8] c"github.com/goplus/llgo/cl/internal/foo.Foo", align 1 -@_llgo_main.bar = global ptr null -@"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo" = global ptr null +@_llgo_main.bar = global ptr null, align 8 +@"main.struct$Ci43nzKYkRLddRL_N4mkykxLXfJlqJGS5n04LKThPNo" = global ptr null, align 8 @6 = private unnamed_addr constant [1 x i8] c"f", align 1 @7 = private unnamed_addr constant [8 x i8] c"main.bar", align 1 -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @8 = private unnamed_addr constant [6 x i8] c"notOk:", align 1 define { %"github.com/goplus/llgo/cl/internal/foo.Foo", i1 } @main.Bar(%"github.com/goplus/llgo/internal/runtime.eface" %0) { diff --git a/cl/_testlibc/argv/out.ll b/cl/_testlibc/argv/out.ll index cb66aef6..0b4d904b 100644 --- a/cl/_testlibc/argv/out.ll +++ b/cl/_testlibc/argv/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 define void @main.init() { diff --git a/cl/_testlibc/sqlite/out.ll b/cl/_testlibc/sqlite/out.ll index 5a82fb8d..2d19d3a0 100644 --- a/cl/_testlibc/sqlite/out.ll +++ b/cl/_testlibc/sqlite/out.ll @@ -1,10 +1,10 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null +@"main.init$guard" = global i1 false, align 1 @0 = private unnamed_addr constant [20 x i8] c"==> Error: (%d) %s\0A\00", align 1 -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @1 = private unnamed_addr constant [9 x i8] c":memory:\00", align 1 define void @main.check(i32 %0) { diff --git a/cl/_testlibgo/mathbits/out.ll b/cl/_testlibgo/mathbits/out.ll index 99a6e817..95ac3a40 100644 --- a/cl/_testlibgo/mathbits/out.ll +++ b/cl/_testlibgo/mathbits/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testpy/callpy/out.ll b/cl/_testpy/callpy/out.ll index 090e0348..6518dace 100644 --- a/cl/_testpy/callpy/out.ll +++ b/cl/_testpy/callpy/out.ll @@ -1,16 +1,16 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null -@__llgo_py.math.sqrt = linkonce global ptr null -@__llgo_py.os.getcwd = linkonce global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 +@__llgo_py.math.sqrt = linkonce global ptr null, align 8 +@__llgo_py.os.getcwd = linkonce global ptr null, align 8 @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.math = external global ptr +@__llgo_py.math = external global ptr, align 8 @2 = private unnamed_addr constant [5 x i8] c"sqrt\00", align 1 -@__llgo_py.os = external global ptr +@__llgo_py.os = external global ptr, align 8 @3 = private unnamed_addr constant [7 x i8] c"getcwd\00", align 1 define void @main.init() { diff --git a/cl/_testpy/gcd/out.ll b/cl/_testpy/gcd/out.ll index 5d4461e5..7f67e613 100644 --- a/cl/_testpy/gcd/out.ll +++ b/cl/_testpy/gcd/out.ll @@ -1,12 +1,12 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null -@__llgo_py.math.gcd = linkonce global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 +@__llgo_py.math.gcd = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [22 x i8] c"gcd(60, 20, 25) = %d\0A\00", align 1 -@__llgo_py.math = external global ptr +@__llgo_py.math = external global ptr, align 8 @1 = private unnamed_addr constant [4 x i8] c"gcd\00", align 1 define void @main.init() { diff --git a/cl/_testpy/math/out.ll b/cl/_testpy/math/out.ll index 70bdd7e5..746b550c 100644 --- a/cl/_testpy/math/out.ll +++ b/cl/_testpy/math/out.ll @@ -1,8 +1,8 @@ ; ModuleID = 'math' source_filename = "math" -@"math.init$guard" = global ptr null -@__llgo_py.math = linkonce global ptr null +@"math.init$guard" = global i1 false, align 1 +@__llgo_py.math = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [5 x i8] c"math\00", align 1 define void @math.init() { diff --git a/cl/_testpy/matrix/out.ll b/cl/_testpy/matrix/out.ll index 4ff6b720..20548694 100644 --- a/cl/_testpy/matrix/out.ll +++ b/cl/_testpy/matrix/out.ll @@ -1,14 +1,14 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null -@__llgo_py.numpy.add = linkonce global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 +@__llgo_py.numpy.add = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [8 x i8] c"a = %s\0A\00", align 1 @1 = private unnamed_addr constant [8 x i8] c"a = %s\0A\00", align 1 @2 = private unnamed_addr constant [10 x i8] c"a+b = %s\0A\00", align 1 -@__llgo_py.numpy = external global ptr +@__llgo_py.numpy = external global ptr, align 8 @3 = private unnamed_addr constant [4 x i8] c"add\00", align 1 define void @main.init() { diff --git a/cl/_testpy/max/out.ll b/cl/_testpy/max/out.ll index 14e5618c..22a3cfd6 100644 --- a/cl/_testpy/max/out.ll +++ b/cl/_testpy/max/out.ll @@ -1,13 +1,13 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null -@__llgo_py.builtins.max = linkonce global ptr null -@__llgo_py.builtins.print = linkonce global ptr null -@__llgo_py.builtins.iter = linkonce global ptr null -@__llgo_py.builtins = external global ptr +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 +@__llgo_py.builtins.max = linkonce global ptr null, align 8 +@__llgo_py.builtins.print = linkonce global ptr null, align 8 +@__llgo_py.builtins.iter = linkonce global ptr null, align 8 +@__llgo_py.builtins = external global ptr, align 8 @0 = private unnamed_addr constant [5 x i8] c"iter\00", align 1 @1 = private unnamed_addr constant [4 x i8] c"max\00", align 1 @2 = private unnamed_addr constant [6 x i8] c"print\00", align 1 diff --git a/cl/_testpy/pi/out.ll b/cl/_testpy/pi/out.ll index 78809604..0a6225de 100644 --- a/cl/_testpy/pi/out.ll +++ b/cl/_testpy/pi/out.ll @@ -1,11 +1,11 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [9 x i8] c"pi = %f\0A\00", align 1 -@__llgo_py.math = external global ptr +@__llgo_py.math = external global ptr, align 8 @1 = private unnamed_addr constant [3 x i8] c"pi\00", align 1 define void @main.init() { diff --git a/cl/_testpy/pow/out.ll b/cl/_testpy/pow/out.ll index 16c2d44a..5807c6f3 100644 --- a/cl/_testpy/pow/out.ll +++ b/cl/_testpy/pow/out.ll @@ -1,12 +1,12 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null -@__llgo_py.math.pow = linkonce global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 +@__llgo_py.math.pow = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [16 x i8] c"pow(2, 3) = %f\0A\00", align 1 -@__llgo_py.math = external global ptr +@__llgo_py.math = external global ptr, align 8 @1 = private unnamed_addr constant [4 x i8] c"pow\00", align 1 define void @main.init() { diff --git a/cl/_testrt/alloca/out.ll b/cl/_testrt/alloca/out.ll index 452d403a..0029dbad 100644 --- a/cl/_testrt/alloca/out.ll +++ b/cl/_testrt/alloca/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [4 x i8] c"Hi\0A\00", align 1 @1 = private unnamed_addr constant [3 x i8] c"%s\00", align 1 diff --git a/cl/_testrt/allocstr/out.ll b/cl/_testrt/allocstr/out.ll index 878c6ffc..697062c5 100644 --- a/cl/_testrt/allocstr/out.ll +++ b/cl/_testrt/allocstr/out.ll @@ -3,10 +3,10 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } -@"main.init$guard" = global ptr null +@"main.init$guard" = global i1 false, align 1 @0 = private unnamed_addr constant [12 x i8] c"Hello world\0A", align 1 -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define %"github.com/goplus/llgo/internal/runtime.String" @main.hello() { _llgo_0: diff --git a/cl/_testrt/any/out.ll b/cl/_testrt/any/out.ll index 6f45a304..ebe0b7de 100644 --- a/cl/_testrt/any/out.ll +++ b/cl/_testrt/any/out.ll @@ -5,14 +5,14 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } -@"main.init$guard" = global ptr null -@"*_llgo_int8" = linkonce global ptr null -@_llgo_int8 = linkonce global ptr null +@"main.init$guard" = global i1 false, align 1 +@"*_llgo_int8" = linkonce global ptr null, align 8 +@_llgo_int8 = linkonce global ptr null, align 8 @0 = private unnamed_addr constant [21 x i8] c"type assertion failed", align 1 -@_llgo_string = linkonce global ptr null -@_llgo_int = linkonce global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@_llgo_string = linkonce global ptr null, align 8 +@_llgo_int = linkonce global ptr null, align 8 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @1 = private unnamed_addr constant [7 x i8] c"%s %d\0A\00", align 1 @2 = private unnamed_addr constant [6 x i8] c"Hello\00", align 1 diff --git a/cl/_testrt/builtin/out.ll b/cl/_testrt/builtin/out.ll index 6e91ac88..858d32ef 100644 --- a/cl/_testrt/builtin/out.ll +++ b/cl/_testrt/builtin/out.ll @@ -6,15 +6,15 @@ source_filename = "main" %"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr } -@main.a = global ptr null -@main.b = global ptr null -@"main.init$guard" = global ptr null -@main.n = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.a = global i64 0, align 8 +@main.b = global i64 0, align 8 +@"main.init$guard" = global i1 false, align 1 +@main.n = global i64 0, align 8 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [5 x i8] c"hello", align 1 @1 = private unnamed_addr constant [3 x i8] c"def", align 1 -@_llgo_int = linkonce global ptr null +@_llgo_int = linkonce global ptr null, align 8 @2 = private unnamed_addr constant [4 x i8] c"ABCD", align 1 @3 = private unnamed_addr constant [7 x i8] c"\E4\B8\ADabcd", align 1 @4 = private unnamed_addr constant [3 x i8] c"abc", align 1 diff --git a/cl/_testrt/callback/out.ll b/cl/_testrt/callback/out.ll index 42ae697a..2389cc20 100644 --- a/cl/_testrt/callback/out.ll +++ b/cl/_testrt/callback/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [7 x i8] c"Hello\0A\00", align 1 @1 = private unnamed_addr constant [10 x i8] c"callback\0A\00", align 1 diff --git a/cl/_testrt/cast/out.ll b/cl/_testrt/cast/out.ll index 2f26e334..84ae587a 100644 --- a/cl/_testrt/cast/out.ll +++ b/cl/_testrt/cast/out.ll @@ -4,11 +4,11 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr } -@"main.init$guard" = global ptr null +@"main.init$guard" = global i1 false, align 1 @0 = private unnamed_addr constant [5 x i8] c"error", align 1 -@_llgo_string = linkonce global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@_llgo_string = linkonce global ptr null, align 8 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.cvt32Fto32(float %0, i32 %1) { _llgo_0: diff --git a/cl/_testrt/closure/out.ll b/cl/_testrt/closure/out.ll index e3a0e66f..326344f3 100644 --- a/cl/_testrt/closure/out.ll +++ b/cl/_testrt/closure/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [7 x i8] c"%d %d\0A\00", align 1 @1 = private unnamed_addr constant [7 x i8] c"%d %d\0A\00", align 1 diff --git a/cl/_testrt/concat/out.ll b/cl/_testrt/concat/out.ll index b2f479fe..d028e6a7 100644 --- a/cl/_testrt/concat/out.ll +++ b/cl/_testrt/concat/out.ll @@ -4,10 +4,10 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } -@"main.init$guard" = global ptr null +@"main.init$guard" = global i1 false, align 1 @0 = private unnamed_addr constant [3 x i8] c"...", align 1 -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @1 = private unnamed_addr constant [5 x i8] c"Hello", align 1 @2 = private unnamed_addr constant [1 x i8] c" ", align 1 @3 = private unnamed_addr constant [5 x i8] c"World", align 1 diff --git a/cl/_testrt/cstr/out.ll b/cl/_testrt/cstr/out.ll index 480ae6d2..7c35b232 100644 --- a/cl/_testrt/cstr/out.ll +++ b/cl/_testrt/cstr/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [14 x i8] c"Hello, world\0A\00", align 1 define void @main.init() { diff --git a/cl/_testrt/cvar/out.ll b/cl/_testrt/cvar/out.ll index bd6f7762..f603dd10 100644 --- a/cl/_testrt/cvar/out.ll +++ b/cl/_testrt/cvar/out.ll @@ -1,11 +1,11 @@ ; ModuleID = 'main' source_filename = "main" -@_bar_x = external global ptr -@_bar_y = external global ptr -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@_bar_x = external global { [16 x i8], [2 x ptr] }, align 8 +@_bar_y = external global { [16 x i8] }, align 1 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testrt/eface/out.ll b/cl/_testrt/eface/out.ll index c6af1445..d24c6978 100644 --- a/cl/_testrt/eface/out.ll +++ b/cl/_testrt/eface/out.ll @@ -10,38 +10,38 @@ source_filename = "main" %"github.com/goplus/llgo/internal/abi.StructField" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, i64, %"github.com/goplus/llgo/internal/runtime.String", i1 } %"github.com/goplus/llgo/internal/abi.Method" = type { %"github.com/goplus/llgo/internal/runtime.String", ptr, ptr, ptr } -@"main.init$guard" = global ptr null +@"main.init$guard" = global i1 false, align 1 @0 = private unnamed_addr constant [6 x i8] c"invoke", align 1 @1 = private unnamed_addr constant [7 x i8] c"\09elem: ", align 1 @2 = private unnamed_addr constant [9 x i8] c"\09uncomm: ", align 1 -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null -@_llgo_bool = linkonce global ptr null -@_llgo_int = linkonce global ptr null -@_llgo_int8 = linkonce global ptr null -@_llgo_int16 = linkonce global ptr null -@_llgo_int32 = linkonce global ptr null -@_llgo_int64 = linkonce global ptr null -@_llgo_uint = linkonce global ptr null -@_llgo_uint8 = linkonce global ptr null -@_llgo_uint16 = linkonce global ptr null -@_llgo_uint32 = linkonce global ptr null -@_llgo_uint64 = linkonce global ptr null -@_llgo_uintptr = linkonce global ptr null -@_llgo_float32 = linkonce global ptr null -@_llgo_float64 = linkonce global ptr null -@"[10]_llgo_int" = linkonce global ptr null -@"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null -@"*_llgo_int" = linkonce global ptr null -@"[]_llgo_int" = linkonce global ptr null +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 +@_llgo_bool = linkonce global ptr null, align 8 +@_llgo_int = linkonce global ptr null, align 8 +@_llgo_int8 = linkonce global ptr null, align 8 +@_llgo_int16 = linkonce global ptr null, align 8 +@_llgo_int32 = linkonce global ptr null, align 8 +@_llgo_int64 = linkonce global ptr null, align 8 +@_llgo_uint = linkonce global ptr null, align 8 +@_llgo_uint8 = linkonce global ptr null, align 8 +@_llgo_uint16 = linkonce global ptr null, align 8 +@_llgo_uint32 = linkonce global ptr null, align 8 +@_llgo_uint64 = linkonce global ptr null, align 8 +@_llgo_uintptr = linkonce global ptr null, align 8 +@_llgo_float32 = linkonce global ptr null, align 8 +@_llgo_float64 = linkonce global ptr null, align 8 +@"[10]_llgo_int" = linkonce global ptr null, align 8 +@"_llgo_func$2_iS07vIlF2_rZqWB5eU0IvP_9HviM4MYZNkXZDvbac" = linkonce global ptr null, align 8 +@"*_llgo_int" = linkonce global ptr null, align 8 +@"[]_llgo_int" = linkonce global ptr null, align 8 @3 = private unnamed_addr constant [5 x i8] c"hello", align 1 -@_llgo_string = linkonce global ptr null -@"main.struct$RKbUG45GE4henGMAdmt0Rju0JptyR8NsX7IZLsOI0OM" = global ptr null +@_llgo_string = linkonce global ptr null, align 8 +@"main.struct$RKbUG45GE4henGMAdmt0Rju0JptyR8NsX7IZLsOI0OM" = global ptr null, align 8 @4 = private unnamed_addr constant [1 x i8] c"x", align 1 @5 = private unnamed_addr constant [1 x i8] c"y", align 1 @6 = private unnamed_addr constant [1 x i8] c"z", align 1 @7 = private unnamed_addr constant [4 x i8] c"main", align 1 -@_llgo_main.T = linkonce global ptr null +@_llgo_main.T = linkonce global ptr null, align 8 @8 = private unnamed_addr constant [6 x i8] c"Invoke", align 1 @9 = private unnamed_addr constant [6 x i8] c"main.T", align 1 diff --git a/cl/_testrt/fprintf/out.ll b/cl/_testrt/fprintf/out.ll index 0046e6ca..65c65aed 100644 --- a/cl/_testrt/fprintf/out.ll +++ b/cl/_testrt/fprintf/out.ll @@ -1,10 +1,10 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__stderrp = external global ptr -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__stderrp = external global ptr, align 8 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [10 x i8] c"Hello %d\0A\00", align 1 define void @main.init() { diff --git a/cl/_testrt/gblarray/out.ll b/cl/_testrt/gblarray/out.ll index 45de88a6..eeba3cf3 100644 --- a/cl/_testrt/gblarray/out.ll +++ b/cl/_testrt/gblarray/out.ll @@ -4,11 +4,11 @@ source_filename = "main" %"github.com/goplus/llgo/internal/abi.Type" = type { i64, i64, i32, i8, i8, i8, i8, { ptr, ptr }, ptr, %"github.com/goplus/llgo/internal/runtime.String", ptr } %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } -@main.basicTypes = global [25 x ptr] undef -@"main.init$guard" = global ptr null -@main.sizeBasicTypes = global [25 x i64] undef -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.basicTypes = global [25 x ptr] zeroinitializer, align 8 +@"main.init$guard" = global i1 false, align 1 +@main.sizeBasicTypes = global [25 x i64] zeroinitializer, align 8 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [20 x i8] c"Kind: %d, Size: %d\0A\00", align 1 define ptr @main.Basic(i64 %0) { diff --git a/cl/_testrt/hello/out.ll b/cl/_testrt/hello/out.ll index f8cd7298..b4bf2fe1 100644 --- a/cl/_testrt/hello/out.ll +++ b/cl/_testrt/hello/out.ll @@ -1,10 +1,10 @@ ; ModuleID = 'main' source_filename = "main" -@main.format = global [10 x i8] undef -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.format = global [10 x i8] zeroinitializer, align 1 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testrt/index/out.ll b/cl/_testrt/index/out.ll index f93bb271..34d43925 100644 --- a/cl/_testrt/index/out.ll +++ b/cl/_testrt/index/out.ll @@ -4,9 +4,9 @@ source_filename = "main" %main.point = type { i64, i64 } %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [7 x i8] c"%d %d\0A\00", align 1 @1 = private unnamed_addr constant [7 x i8] c"%d %d\0A\00", align 1 @2 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 diff --git a/cl/_testrt/intgen/out.ll b/cl/_testrt/intgen/out.ll index ddc97c91..6f36fcc2 100644 --- a/cl/_testrt/intgen/out.ll +++ b/cl/_testrt/intgen/out.ll @@ -4,9 +4,9 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } %main.generator = type { i32 } -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 @1 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 @2 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 diff --git a/cl/_testrt/linkname/out.ll b/cl/_testrt/linkname/out.ll index fc89222a..a4aa79b0 100644 --- a/cl/_testrt/linkname/out.ll +++ b/cl/_testrt/linkname/out.ll @@ -4,9 +4,9 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %main.m = type { %"github.com/goplus/llgo/internal/runtime.String" } -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [2 x i8] c"a\00", align 1 @1 = private unnamed_addr constant [2 x i8] c"b\00", align 1 @2 = private unnamed_addr constant [2 x i8] c"c\00", align 1 diff --git a/cl/_testrt/map/out.ll b/cl/_testrt/map/out.ll index 1a93ecaf..0591fc76 100644 --- a/cl/_testrt/map/out.ll +++ b/cl/_testrt/map/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [10 x i8] c"Hello %d\0A\00", align 1 define void @main.init() { diff --git a/cl/_testrt/mask/out.ll b/cl/_testrt/mask/out.ll index 2b6907ed..0404fd58 100644 --- a/cl/_testrt/mask/out.ll +++ b/cl/_testrt/mask/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testrt/named/out.ll b/cl/_testrt/named/out.ll index cb5f0e64..337619ac 100644 --- a/cl/_testrt/named/out.ll +++ b/cl/_testrt/named/out.ll @@ -5,9 +5,9 @@ source_filename = "main" %main.minfo = type { ptr, i64 } %main.mSpanList = type { ptr, ptr } -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [19 x i8] c"%d %d %d %d %d %d\0A\00", align 1 define void @main.init() { diff --git a/cl/_testrt/panic/out.ll b/cl/_testrt/panic/out.ll index 881403c4..a1d30f99 100644 --- a/cl/_testrt/panic/out.ll +++ b/cl/_testrt/panic/out.ll @@ -4,11 +4,11 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.String" = type { ptr, i64 } %"github.com/goplus/llgo/internal/runtime.eface" = type { ptr, ptr } -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [13 x i8] c"panic message", align 1 -@_llgo_string = linkonce global ptr null +@_llgo_string = linkonce global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testrt/qsort/out.ll b/cl/_testrt/qsort/out.ll index 916dd34a..2d507d3a 100644 --- a/cl/_testrt/qsort/out.ll +++ b/cl/_testrt/qsort/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 define void @main.init() { diff --git a/cl/_testrt/result/out.ll b/cl/_testrt/result/out.ll index 4664affe..dde63bee 100644 --- a/cl/_testrt/result/out.ll +++ b/cl/_testrt/result/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 @1 = private unnamed_addr constant [4 x i8] c"%d\0A\00", align 1 @2 = private unnamed_addr constant [7 x i8] c"%d %d\0A\00", align 1 diff --git a/cl/_testrt/strlen/out.ll b/cl/_testrt/strlen/out.ll index f8cd7298..b4bf2fe1 100644 --- a/cl/_testrt/strlen/out.ll +++ b/cl/_testrt/strlen/out.ll @@ -1,10 +1,10 @@ ; ModuleID = 'main' source_filename = "main" -@main.format = global [10 x i8] undef -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.format = global [10 x i8] zeroinitializer, align 1 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.init() { _llgo_0: diff --git a/cl/_testrt/struct/out.ll b/cl/_testrt/struct/out.ll index 6373ceb2..8388292e 100644 --- a/cl/_testrt/struct/out.ll +++ b/cl/_testrt/struct/out.ll @@ -3,10 +3,10 @@ source_filename = "main" %main.Foo = type { i32, i1 } -@main.format = global [10 x i8] undef -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.format = global [10 x i8] zeroinitializer, align 1 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.Foo.Print(%main.Foo %0) { _llgo_0: diff --git a/cl/_testrt/sum/out.ll b/cl/_testrt/sum/out.ll index c36f08d1..8bbf7f8d 100644 --- a/cl/_testrt/sum/out.ll +++ b/cl/_testrt/sum/out.ll @@ -3,9 +3,9 @@ source_filename = "main" %"github.com/goplus/llgo/internal/runtime.Slice" = type { ptr, i64, i64 } -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [10 x i8] c"Hello %d\0A\00", align 1 define void @main.init() { diff --git a/cl/_testrt/typalias/out.ll b/cl/_testrt/typalias/out.ll index bb9068ea..e77b0d59 100644 --- a/cl/_testrt/typalias/out.ll +++ b/cl/_testrt/typalias/out.ll @@ -1,10 +1,10 @@ ; ModuleID = 'main' source_filename = "main" -@main.format = global [10 x i8] undef -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@main.format = global [10 x i8] zeroinitializer, align 1 +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 define void @main.Print(ptr %0) { _llgo_0: diff --git a/cl/_testrt/unreachable/out.ll b/cl/_testrt/unreachable/out.ll index 0e3a0f72..3f984679 100644 --- a/cl/_testrt/unreachable/out.ll +++ b/cl/_testrt/unreachable/out.ll @@ -1,9 +1,9 @@ ; ModuleID = 'main' source_filename = "main" -@"main.init$guard" = global ptr null -@__llgo_argc = global ptr null -@__llgo_argv = global ptr null +@"main.init$guard" = global i1 false, align 1 +@__llgo_argc = global i32 0, align 4 +@__llgo_argv = global ptr null, align 8 @0 = private unnamed_addr constant [7 x i8] c"Hello\0A\00", align 1 define void @main.foo() { diff --git a/cl/compile.go b/cl/compile.go index 568a236f..4239f465 100644 --- a/cl/compile.go +++ b/cl/compile.go @@ -201,7 +201,7 @@ func (p *context) compileGlobal(pkg llssa.Package, gbl *ssa.Global) { } g := pkg.NewVar(name, typ, llssa.Background(vtype)) if define { - g.Init(p.prog.Nil(g.Type)) + g.InitNil() } } @@ -380,8 +380,8 @@ func (p *context) compileBlock(b llssa.Builder, block *ssa.BasicBlock, n int, do fn := p.fn argc := pkg.NewVar("__llgo_argc", types.NewPointer(types.Typ[types.Int32]), llssa.InC) argv := pkg.NewVar("__llgo_argv", types.NewPointer(argvTy), llssa.InC) - argc.Init(prog.Nil(argc.Type)) - argv.Init(prog.Nil(argv.Type)) + argc.InitNil() + argv.InitNil() b.Store(argc.Expr, fn.Param(0)) b.Store(argv.Expr, fn.Param(1)) callRuntimeInit(b, pkg) diff --git a/cl/compile_test.go b/cl/compile_test.go index d1126f86..dbd9c939 100644 --- a/cl/compile_test.go +++ b/cl/compile_test.go @@ -71,8 +71,8 @@ var a int `, `; ModuleID = 'foo' source_filename = "foo" -@foo.a = global ptr null -@"foo.init$guard" = global ptr null +@foo.a = global i64 0, align 8 +@"foo.init$guard" = global i1 false, align 1 define void @foo.init() { _llgo_0: @@ -98,7 +98,7 @@ func fn(a int, b float64) int { `, `; ModuleID = 'foo' source_filename = "foo" -@"foo.init$guard" = global ptr null +@"foo.init$guard" = global i1 false, align 1 define i64 @foo.fn(i64 %0, double %1) { _llgo_0: diff --git a/internal/runtime/bdwgc/llgo_autogen.lla b/internal/runtime/bdwgc/llgo_autogen.lla index 5e1a1ad7ae8ebcc246349373a8628435a9aae4dd..3a3a4ea82baf4e39d86c85c558a7cb8e6dcd5421 100644 GIT binary patch literal 414 zcmWIWW@Zs#U|`^22=qG_v90n}&MP2q4-*3eKZ6WIPELA$d}3)yetK%2UQSME2qy#c ztA*KVuYtIlJ7gZ9~|svuXpyGl_@hr zEp^rl$3O3vMSXnyWZknV2cFcjFUW9_<60Evdi-Av1v?8x##!pSoOfhJzFA!z4@V} zw1JP^0YA-lX4aPD9(?B#L#Bs+ShFj2O*TK*f;{g2#f7cc4orEn=0@n>V37l-9>s6x z-LUaQz<%fN_UD#f-eq}U{dGY#M|1Jdrb~4XSh^l;ovHG;KK$pshleZwi$DK#C;koV z<=g95iGSq^@MdI^W5yL|62RbNU;u^+!;(f23nK_wAwh^1d;#99Y#`-~Ko|<7jX@?b F005DFp>_ZO literal 409 zcmWIWW@Zs#U|`^22-tHd;+Vhes;5BSW+ny(eg+waoSgLh_{7qZ{Pfg3y_}rT5KabW z_K7iR96(%J!Og(P@|BT+0c^n9i5vY68wfaj|J@aQWtD=f@1>2RLd@LE_XTc#ygH|3 zok$b zG-*GgY@(N_)LyxcT-UTz@}C+|OeyyeZb}@_54TUn;v6?Qm0m!(7IivsHk5pPS({mg(}B z&i2=`KcAJ?y+6)+&XhYbr_N8=#_?QaYTvmfGyhdjd2d`}mcK4j@BH7Tahh}MMDIP2 y4e(}Ul4HgdUJ}5NV_*OV2*Z*_5DO#pSRtW@7IFdJtZX3Vj6fI)r1d~1FaQ9Ljg#X5 diff --git a/py/inspect/llgo_autogen.lla b/py/inspect/llgo_autogen.lla index d4dfb55083be9a8f1827a0fa87bcd376759eba86..59f54cdfe7eb0ae56aa89b8e53cf797351a320b8 100644 GIT binary patch delta 504 zcmX@WvYw?rz?+#xgn@y9gW;L)xriL4t4FID85rzX7#R2&WEgUC((~gJOH1<8Q}gt4 zazaBm8JHCoW~V6vacKoN10%~6P~83M)^uTK9cph_CL9xf9&Bw{_NN2WmudF6TP8ipgoy=TPI7OZI9;XH`77HEjiV zm%{T6OK)^=Xq*ZcvM--b$6X3oH1zxoihZe$1_f-j8^sSNDFH zcWuj~S3e%sq&$@3y<6A&-NIQt!lE%HlsAuWpG^tR-v#|Te&_2FcKNxBb!SH`x!9Qd zWp2OVw%ziJJ*#>>+ciqF-8SyOeDiT#@YP#4_SAo^f1kU3st^C?mnW7?XDGc;cS&jf qzj?+>oM-QsUH*hSz?+dtju}ftPJYLz35v4GQcMbLM}U#VzyJU^j@~c; literal 576 zcmWIWW@Zs#U|`^2xHxxh#1jTb(H=$yhUqK}4Ezi-3^_UJ`SFRRCHd*8d3rfHp&^_M z%(MPFrp*T8(h6<{MwYKY)nEgbhMdhlWFWHt`TB|}ox)vV)q<%H62DH`kI+H-c(nptPMa`(@D^Zdnh$Lx2XR;el7sVHg7 zKCw0SLO?}1U-+s!1@bcgSa;@h?3l9uG;_I;(lllX9!o1_ui0CS*1AI z)h!9DLQ;+`Em2sbX=^SQcWeWrX&tlR)|U02LPrmn&Sh=u@r==G-muN<(AIy8f6LWu zI+kga$T0U*$F`UzsbgFB*Si%Ouxuze;xxrDW1j=>T(^vpkjdY_r80%v2X}F&dget> zYhm%uU%7P2%h&_6-nvUi|N3>;hJKH^z}_z|QvF6cz?+dtju}_9N&usqfdLqA3`-h8ER0BIg+wx11P6Gt RvVoK{0%0hSz6vsd0RW|E=-mJS diff --git a/py/json/llgo_autogen.lla b/py/json/llgo_autogen.lla index 930d998720c2ad0f29213cb10ba0eff915305888..c3c0e3174932e16a94aa4f0d73a70f59b837110b 100644 GIT binary patch delta 503 zcmZ3&vW}%bz?+#xgn@y9gWG|=Ar6u|4sd;)i zIiVq(49u(xv(wmsxU_#?n)HnOjpL5?Wwyn%$x=X~R-}SF1Zf;^fD)r=b^^WF1#WUHHeTzfe zT32mY>3qbg^{QUY>ZvjlqfD)yzjRZWzU9fbBfobaQC6{>Y$O^qWA>tjvnsbGHfk;A zNMe)jGUabrq@i-gW74v9I%~^E$% o=O%u$t(!i3LVkcZBa<96mUx_eiBS_2W0U_eDzF^}#uWnt0MXpqM*si- delta 493 zcmZ3-vV^5Rz?+#xgn@y9gP~{Hx`;zR|NbaoWMJT9VPN2AkYUKlNzac@EG@}TPtDWI z$q5bNWMFQOb5833;?fFk21b^zK-FLamQIfMK5QUz^!{f}y`!6WPu*I}k?eeCok)^ zxUPCFv}eZa9e0lEPYq)ZdU?xWVy+68EBC`~EcN-E9Fg-T^emn9O>6zihmFQ(0@rIg zW%90&ny9n+%<9cW=HIfGJFJY`n)GP7N#W|H6Qi?OubfhUBKhN%t7l+X0>7_fnOXeG}$dXXQlkN{1-0L zu(eR^oIcZ%>_&lYvCG`Idf%-*^YBgjLk-Tjoh#;gKavUylYUqo72JJ#Q~Tt3O~o(Q z@U7n%etu8Yt1FX4RV}{7Nn4eiZGERHGym5PziO__-Wp3T&dUn@GPg%?+sw{=o>iWc z+x%Z;xow<#_vzof&?&cWtf}2<|71g?m)q~znJ1R0XIdq-uQ<^zpVPMG^N+oEJ8GB$ dycwC~n6bp(_h!KA>p6Bt7b3;+_#*hK&U diff --git a/py/llgo_autogen.lla b/py/llgo_autogen.lla index f8013ee2bf060fe194811d51d9864b8a62d6fe01..36aace8390331918fee0d29f636308f0e8a26475 100644 GIT binary patch delta 397 zcmaFN^PHzXz?+#xgn@y9gW-F?xrm1ODVleHJQpSg27U$^hMb)A{P@JulKk}4JiVNp z&=5`r=8sFW(>?=nX$3a}BgbpFB^v_ouIkfA?v|UgAzHOa4F?hwy zwO1Y=cVhLdbI*N0gKh6}o7g#X^`=x={ohs6++A*#ncvm3QD<)24$-Q!janIHWe2=8 zo%c#}ynn=__p$3Yd(En{tgUC=7*i+T)VY;X)N1&vyCd>tIKzuSPeRQ^Bg&6x^fSJm zY_6Sn1KdNwq;XbTgwUza0UP_%%Z3O delta 442 zcmaFP^O&bTz?+#xgn@y9gJIRWbrDim|M%Yj@~oK{82A}v7;2X zBv*d_{75kZgccgcy zm>1Xl(%H}-mcqVuPe2y0%p@19v}H41ioUJBzxw_gQTy1(y_ri&eo5Xq%!ml0Yn#?Z za2Z@vbY)>+2<2m7-~PAV*LHWxdmZ7p`*9Ko2#!iy53laH}#DuKcdE!+aU n8JXmmAyEJ{f3hH(w5TF5P?5}KWnc!HJK2#G|=Ar6u|4sd;)i zIiVq(49t%gWT!m^;?fFk21b^zK-FLamQKE(eaJxI`2Ek}GO4buNvl&8PA%ZC{+PJo zd+wAQN2JPpy=I+Cc~c*MNxqD0Hs9|{ayxgw|6Xr5ecc1kjZ!~<3Cbl*;oiL3{IZW| z;ySN2s|5_h6Dv8mv&xi%Rz{`U+~s;QN$k$Fiu&mlEh^$c%bd81r(X{-K5up=Fju2# z#=&VxN0}FB6mc3)TC!5x`}E-}Q*VZde2P8U^WAjmMTP7m`_ddIome(C>dnfB0p8DN zE}de?J9E<1h4q&XoVKlLh}h%!Z0EN1flqj6wR~JVLFSv6!Hz6}e49r9OIE$pSPqnn z1q7zKb4hjoXEcgnypiF4w4cdg*F%oF)kgN+YhS-h<_x#j_U_z#D(dYnm#_^+Ud78Z zOU~whes{i#Yn%7=S0(cgU&{G*C#`#p#=%YHJNLOhH?t0~nE%TrzOS0=bF{{hgA=np zOzwHMY^U&EkD6|e!|K}#-8Sw$a`JOx>=durTWYuNf3d@|OYQhslaxo@Cb}DgL!O+D peZ!M^{c-tD&Yx@n-i%Cg%vj=a@fCf%c#J17#LR!3;<%$;8_3w delta 492 zcmZ3-vY4elz?+#xgn@y9gW>U%^%0Joj{NzI3=DiM3=I4XG7LF6>G|=Ar6u|4sd;)i zIiVq(49q7dxTKu|;?fFk21b^zK-FLamQIe(K4c(r^!{f}y;RrMq}8bkrw+95{b6w9 zx0#nu60i5>FsN;4UJvr z%nrI5x+Wy=QIWj(m0b2EMq5*rZhNSj=(6N-{<|k6u*pVQ(p&egZ(Q(cW|K2hBZFC& zZeEbR^n}srJyzP^lh?boPWp8fVPXFQo~H`xfs^0ZAOGLQ zv|(FDW1XPJE-|h{+fIL3a_q|8<1%`6Vji9!xE7b`ahk1}v+>aPl5JwwQ~A|xSxa87 z>07@s{QRD(uB?+?LKF60Z|hjM^8$10<>2|(GW`>)cw0@Z0(wLCP2PCO)cB&g=laY` zA3Qgvg>2otyXMaNu1gWqx32%zE@S3>@9?0rpX*k3T!)o5yZd%0OoVd-~a#s diff --git a/py/matplotlib/llgo_autogen.lla b/py/matplotlib/llgo_autogen.lla index 4bc376d7f13656fd4fecf4fec99bf775adeabf9e..d43278e039f0320f342d3b1db08a42b2009dec87 100644 GIT binary patch literal 562 zcmWIWW@Zs#U|`^2_~d&oBBiuuT^%C>Lo5pe13!ZdLrzY5etcqSNq%~2o?cE)Xb2|* zv-!g8Gz%aut>9*0WcdnI4K`ryOY=i5tG>diVs1 zm#GOQM@s&F*B$jb%xpu+z84e!{4f8$yO^1Ombu2Z?*;6eoo-!Mi#LdEYhAZtrSlP| z_N$6IE7t}@Px;w%WtX8(igl;c#UP7?=B_UUC;9E#F~RHB>_rRPs?Y6lm>bL@dAKi0 zmuZ0pH>;uN<~5?}R}&4p<}xg;y4=<27#YdD%28&D_9VA=QK?VnMKShf?S3Hn^bW)2 zRog-$E4q>^*mqVjKI?sVKJZB|tAJiv5a*5TlMkEj?YV7PGhyG43}1#n+vKiH*{#>S z?%rw7-c-gX%Z@&EXH+=L+I0VU)V!nXnjasRQnQz4_xo^5w5Fsp=FqJyzb;l>F^?ky&X8F!J!WR9L8&7MsYy1CBQxvJ!s z^~*Umi~-(^OmfV)B2oev!3+$*m||Gc2x4JGD=Q>g(V{fKo0ScuoDm2^f%I{Z2@C-J CjpRiD delta 498 zcmdnQvXZ4fz?+#xgn@y9gJC!G=7<}vtN)iWGB9|vFfi~l$S~yOr02&cmX_qFr{?M9 zG}KJGXCwg+zFSSPU84ot6Faxbgf{0Wp7e7`*wqqOKVqdw!G{* z`bdGdFROmDtW%E19HXB- zjqyumOgScLd7WWG8q>k|MY`vbt~>tU*mUvytw!NJMXcZTCVEFi=DJM2JS*ytJA0jt zKw;e8hxx&BCa2vt7f7A#61w9f)%reR+h;o=OZ5Udb>@jjO`}{UJ@Byj;dPSZ_PbLP zRCcO)dTSOMF21q$+p~uobiHzOZtdOmzv7mh>*mK(qKr;@EbF^np73OGWOdt?@?X|3 hduo^hycwC~n6X6R&iJISr1&zY_~RX|ovUlt)JDE_Ut@OfnbB>nDYK?eGC3&ed*H^an6oaK zPxH9WujN>g+L(4&@QTPbnQTc$_t1!&Wl@xZy)^RvvW8bugHIEpT4J%Ozg}F(Mwg|^avH)jBL7X zShGnlXHx=0qA(M$c*&|2yg&6djvFvY-=4rZnPWn}iqnmoXZ)^B+5JD_z|r%Q96SSq zukG`8YTIfYW;X9!Rb}dr0;_@rX0_`lFRYhScYkWE6el+xry{18u74N5H+TD_kBMfw zGr!pQIenWg`a3JHyl+qbr|tJ=)G`NnGcw6BAv@tLM E00_CwE&u=k delta 468 zcmZ3>vWUepz?+#xgn@y9gMn}Vx`>+_H{Hx*WMGhBVPN2AkYUKlNzac@EG@}TPtDWI z$q5bNWME$1>72H%(|Mw$ZoSFLECXM!Sv>7O?(Y3-zEx@V8vVDb>d)u>DcapueR!|X zZR;Jao{D$7&!?Z6Qkbaq^mW9_Lr1PEUfZ{ZPdG?Af98p@AWmQJ#_A^FY9=SMR!troD|7%89T}cD;N# zQeTfp{v11B#^vhXcSRHQrGGL#oitTcq5i*{jMCn3Vf`}4p37Z-c_6Wnv)#n1sCVDy zjfb`t8=83PXI^6R+L#tn%Dku2BIop}i0P&4-<{u+H+|B}k9ko>FEi(KyiwQwbkWB= zc#HYZ-S?-|Fa>xsGRZOHiV+E5OffJ3BZy&1BLlVNvEXs!jiK~x9}9*SlWK@ z-EEG(w`plzvNFrp^!)vP^Jm8HL%W=cJzG@wuCJG~%&xe!$8}?63;T>Im-cNx+VfIN zue3K;Sb3V&y6+qF)RtUao2Yc(OQb98kSNP^E+(f<-JHfNm+aM!&Z>AYYw8N_E`{eC zmfq;#&^Q%za863)yY5d__LqCTT~^v{NlIF?VlCrUr9M&bNve8l&5GRDHiT7fw^=?% zIw8t*nijWyy=F~Q%sxi$lFzeL4hHrYY@F(Kz|Wg6yhq@U|HJMta+5_FIriFQow{of znEt*>z+IZ5^`prl6{aPv4jk3JMYh9N z)8oKb38}exA9rX?-(9eCQmCoLGdtsw3xDkTSR)Z8G$LuKWO zBA)qzFJCOtOB4CMdbaI*^U$@uXMczPcfMEde)7wPseL}b_`Q$6HrM#{cD=E)RmqR& i9IrZt0B=SnIc98eIQbl-1}M5F|728P+YgK=1_l82F44mP literal 543 zcmWIWW@Zs#U|`^2V3@Nm;$?mO=WIp>hF{DK4Ezi-3^_UJ`SFRRCHd*8d3rfHp&^_M z%4NeX$3a}Bgb)ICA2xKiAAEOP!>}{< z#_c6bI(?4q`#tGj;p}9;4b#n@ocwI_Q#JPB-e-JApYi1-hIsvcv@Lkq>Md7Hcd5DR zlt#%1-R<#MJU4OC4NsA-utWMC=X5(bBIk?xES>aiS;>_TCuUDwv0Y^0Hnu6wDz6uD z+*)MkQ~LOM;HvPoGk)lv`ID3TWL^}bUu)i;1#_emqD-f0aray9X^gR9?k@Q}B{h&q zBz0wi8;7{{N|rZUpAbiEKFL^Xl>!6S?|*Bvtz5#`sU{~S#3fgCa^Z#Q z=#*0PvX?uwUrR}O{jV6~a~i%R-rF(pE_Qo$dAzjM(xLVOtW=cZALyLQFW$Zkko8J;(xPQ~Z zb*8LNM(#iUGa2j(m;3tUSsP3qbJQ*0JnP7{%KsZ1yXUV>Jv!6*c6sNTgxo35{4T#} zi+_DDo=+ub{=S_V%vJ&qjg%=s|6 z@7c1w(#;+W n_xP<>&wcKsd4M+~lN>Xac$|EZQ4g3=B#v3=I4XG7LF6>G|=Ar6u|4sd;)i zIiVq(49u2m+|sOoxU_f3AV$J;ir$A44! zu`cM6%IbqAoS8;4kIKzo&R;2dGo?0D-_r8?llt<@rgyYovE06QP}fH*FFwXnd6l2` z($?%CMXjl?oL6mJvSa1~H%sS;jgOl=V~qD}T5Z*I$|w#pc|7U%>Qjl%%K1^8p-GIl zq$c=rY|-pmp#LTD+RMFe1wU7*BtGyZDZ`;Dm&Qcies`>bSKl#;x0%ZCc)`~%a^ zJ1jc)Ui0*#dX^0jrnXo*O?kT`WkdL!Lo**PeyzD@v0mCXCx*ffMUiC(o_o%IS1+;e z5yO;Yvn!6Xu;|Tf*ztO^#8tb>{~Mb&&)=GUG(+Lm?v#Cr$x{;-E;sFqon<$VUuBPf zzM0&M1@UZu552ZrY5GHwrSuKsw#BxSB<9z|JZJ7as;ctoiHF(G5WnLFx9{~X^sMuo zJT2f|c9Uy)w>f`%?%JsvUBADoyZE|HbGF>_%acx?fADhV-PH3s2RJrR@jb-R4;LHZ847R%ZE{p1<36 z$dL88r>>bb z!RvZkXO4cLMihrS&oK^WC$q(R=ax+RrnY|N!$#xtf$ue%d=mUO3JC^G+1b>RQ@`m< z_vTL)(ntIng7#(}by=^omN8WM+bPwXN8UwcK52|%-1;f@Lr+m&L*~;xQ(Bj+G?q^| zEuL`j!9SVf2Ll)$Ch1RYXr3mc_d<8a+(Yb{-TmP#3SYi1SazpW()4SbUzP@ULb}a5 zgFc3rehMwQ>yAdgv3g+_X7DT0x}d50++6SaH$q`y(hrNHg1i5}Q1GczI=9;RPwt(= zK6BF^noJT^-7&Mm^+m$3gZwV%IOiPC^iL_|ooHeu*taj(=#bg&OX{BMJud}##h%gF zX1%Y{Ca*h4diK`!-_GyL?R)ex(~EaziAwPCx9SF;US6N4_;$`eKP%Pv0B=SnIc8{t t@gT?89*0Wcdn=MR3Fhc(bwrk1gHc#P)h>@6aWAK2mpqru2^Zg6lHV)002t_000jF8~|)=XK!C&b#!lM zWo|BPY*kbV00VqpLuP(nLykyR3};_u2Vq zw{C-!E|)~u?{n;8aVS(r~(V9jRt9jK$|@Gn!G;De@_~BPjLCF zBw;@Vi94+|-($nTN?$Y0F{K)alFmXJcuZ4x1HOC)5}Zt*k|c-#3tmb{5u$9zC4;@< z6fWo_n9krGbu}j|1Q7aqgu)bf8ntC!&gE1VK%t$HbB#dYf(Zz_T#K{Vbd*(=QP@~fB)zpOa~&)t2g{@%7bRf3=CQ<3=I4XG7LF6>G|=Ar6u|4sd;)i zIiVq(49wFOW~WUD;?fFk21b^zK-FLamQIe(K4c(r^!{f}y;RrMMOXJ(q&_$tS0nMJ zR$4VTNxW?K6qAW3ZcicjxnYlk4yMUjMLQhU>n)?bZ^ahxXjcnYFqo zYz0@Yt+URRHCAV`4!bQ03wv&Jm-ES_X?HZ6Hg`2lIQz3}<%C0bM5bkl?I>ei)uYs5 z`9|ZK4O7>m2?px3O}?($V&!A3eSsr#cag{^-;;B`?>dz+L2To7-IHo%sZ+(Ovn(QB z25+8Xv`jI4Q@vS;RK>2=a)Hz0Cz|(tEtX+#HczZkS83lX#G_~FZ!qrwdnWU7Z6<+V zA}chC)w^d+`G3HOh4I9ebm3!y3TG{xZp_m0yQWwCePdJi{H>3V%shUpv~zA^?v!Wu zE@zxx-z9ghnr)ru^_SlR+D}>@J*4Rp7xv)6?_U=Vets+7?&%7zdO5Y qe%+p{{Px$MTua6H0B=SnIc6*oIr%c9CMe1#|7TQSI|7U>1_l7Ve%~Sh delta 494 zcmZ3_vXrGhz?+#xgn@y9gJJIGO%WoRCi@B*85ks37#R2&WEgUC((~gJOH1<8Q}gt4 zazaBm8JIP9d!%UtacKoN10%~VNoPyzg(YW~W=nqA;LYEB zce|j>?Xzb@tS!nSC4av!-nVOQ>e9tKRSsQReZ9Vail|M-yMUZ`5Bc0$x2)HjZxnm1 zb=`%lhDi$_XUSim*6*=)Zlcm{FOjZkhr(IXwV9l*JvUw!KDC2f9p(n<*TjccUibTN^Xa=$m|(Q4G|=Ar6u|4sd;)i zIiVq(49v?HW~Z$H;?fFk21b^zK-FLamQFsHb;v=W?fq{N=ZpZw85vaqOCKy0=Wo4t zTj<)GS$eYNhtrgKm%hJu^GJs1t*A4ql4WWC>g)I2)Om2QL+a@(xpxTx8sDSVAK!WN zSgYp7bxB7K9Z3}q_ccwJx-wU9bFb6NpJ73+AF^E!-1zjpXXB+)cSTIMD=jEvon`7C zAbg`>O$v)l=)%N9(;}a(-n2*x=v^msy`FDg-b2|dZ&*Jy?6On$EC@+)%9}E6gR$2E)nJyxf;Ah?r5U9&EHrOu z*hP*5x2lv9g&03=b>Xm{_%hOG-go)p9X}!klr(KF)=qC>(N16UW!AZC zpR`^-T$1kK`)#gYSmhmYRe#OMr?-VVcKh>o&W?XI@!-!h&kJwG8qbJ3tkBEnv-o|? znv%D*FI+EWyF}S&9<@CF?w_9g?5o>MuBF~x{oAI#brHgfHy`IQGBB{PFfi~l$S~yOr02&cmX_qFr{?M9 z5-{dPj}eQ{RTkA8Xsd9{)|@ z$GV_RDyt8gXl5GeJSzYG?S6^y^OV|5eM`&lPwJ=NR=p$rZfeB+gStIMFXR5C9r6); zzAR*4*VI$KG1m%1!1IQ*c~&IH#ESC z`i&70;ekYM$C6~1`pkCi?JTelRs&t+IYyTWGioah9%@V+eee)A7(MgMqo z95ydk;Z#~s@AXV-SxdpjsZj^cdGI|?;ahk7gWs-_lT8dQz6_}v?3TT^V*XqF3KwYT zb!Feu?QpR-K%mSw&D}KZoxNDWx6LjtP38*K(^;g$&P81OQgW@kdr|x4M#foR{MgMc zI-d7dv?ZPF5}Hu0%sVlGvnEhi{vjh<>$llerebB% z;@ghw>JsFZp8oqrw7MB{*v(sSen0#~ToQ-C;?u(k18!ec|dP~&( zf^bCfnh+M5(!_*An{4u5eJZlgd#xe9wQ{@LihV1-@cH!K5I-9+Eg(=o6;Q%-u|AYa?o?C=hka(2hU}3UOy|u*2bVsO6%M8I61>o+)ZcQ zyZXxQ^TQ?29dh~ho|{&6OJ=FRW^8vZ=aK!Me4TNd?+Lem-g*9U+?MACdt05QWOusR z-?VsoyZU1HlIvY4elz?+#xgn@y9gW=HHjS+xSSyH`!u2Jxj zotjhECoL@!o__p>R=TS%OIxarBk3a0l<&d$)`bckpVXe*kqdBw?Z`YiE@ z4BNzPFBmYnZg+CLv27-Q)|tDtIu9SEw=Q5=Z;<_bQo>=b#~r(tZ;p$Rw43u)=EAbi zQg>4IB+6x&lcrRio3jo zaZ1wJ6Re=F{YEZwM=9shQ|W!|(&Ctv1C8NIBW)A2@K`%|F5dGHqFpS$n3)G!5j cGcw6BV~M=Uw;44-(KMNzNr7z#FoGBu05=`easU7T diff --git a/ssa/abitype.go b/ssa/abitype.go index a18aadce..bf4697d2 100644 --- a/ssa/abitype.go +++ b/ssa/abitype.go @@ -354,7 +354,7 @@ func (b Builder) abiType(t types.Type) Expr { if g == nil { prog := b.Prog g = pkg.doNewVar(name, prog.AbiTypePtrPtr()) - g.Init(prog.Nil(g.Type)) + g.InitNil() if pub { g.impl.SetLinkage(llvm.LinkOnceAnyLinkage) } diff --git a/ssa/decl.go b/ssa/decl.go index 637d6aa4..caffa5fe 100644 --- a/ssa/decl.go +++ b/ssa/decl.go @@ -67,7 +67,7 @@ func (p Package) NewConst(name string, val constant.Value) NamedConst { type aGlobal struct { Expr - array bool + //array bool } // A Global is a named Value holding the address of a package-level @@ -92,17 +92,11 @@ func (p Package) NewVarEx(name string, t Type) Global { } func (p Package) doNewVar(name string, t Type) Global { - var gbl llvm.Value - var array bool - if t.kind == vkPtr && p.Prog.Elem(t).kind == vkArray { // TODO(xsw): check this code - typ := p.Prog.Elem(t).ll - gbl = llvm.AddGlobal(p.mod, typ, name) - gbl.SetInitializer(llvm.Undef(typ)) - array = true - } else { - gbl = llvm.AddGlobal(p.mod, t.ll, name) - } - ret := &aGlobal{Expr{gbl, t}, array} + typ := p.Prog.Elem(t).ll + gbl := llvm.AddGlobal(p.mod, typ, name) + alignment := p.Prog.td.ABITypeAlignment(typ) + gbl.SetAlignment(alignment) + ret := &aGlobal{Expr{gbl, t}} p.vars[name] = ret return ret } @@ -114,12 +108,13 @@ func (p Package) VarOf(name string) Global { // Init initializes the global variable with the given value. func (g Global) Init(v Expr) { - if g.array && v.kind == vkPtr { // TODO(xsw): check this code - return - } g.impl.SetInitializer(v.impl) } +func (g Global) InitNil() { + g.impl.SetInitializer(llvm.ConstNull(g.impl.GlobalValueType())) +} + // ----------------------------------------------------------------------------- // Function represents the parameters, results, and code of a function diff --git a/ssa/eh.go b/ssa/eh.go index 3daa4c72..dfbfcb89 100644 --- a/ssa/eh.go +++ b/ssa/eh.go @@ -102,8 +102,7 @@ func (p Package) keyInit(name string) { return } prog := p.Prog - keyNil := prog.Nil(prog.CIntPtr()) - keyVar.Init(keyNil) + keyVar.InitNil() keyVar.impl.SetLinkage(llvm.LinkOnceAnyLinkage) b := p.afterBuilder() diff --git a/ssa/python.go b/ssa/python.go index b9520bee..8bbabcc4 100644 --- a/ssa/python.go +++ b/ssa/python.go @@ -217,7 +217,7 @@ func (p Package) PyNewModVar(name string, doInit bool) Global { objPtr := prog.PyObjectPtrPtr().raw.Type g := p.NewVar(name, objPtr, InC) if doInit { - g.Init(prog.Nil(g.Type)) + g.InitNil() g.impl.SetLinkage(llvm.LinkOnceAnyLinkage) } p.pymods[name] = g @@ -372,7 +372,7 @@ func (p Package) PyNewFunc(name string, sig *types.Signature, doInit bool) PyObj obj := p.NewVar(name, prog.PyObjectPtrPtr().RawType(), InC) if doInit { prog.NeedPyInit = true - obj.Init(prog.Nil(obj.Type)) + obj.InitNil() obj.impl.SetLinkage(llvm.LinkOnceAnyLinkage) } ty := &aType{obj.ll, rawType{types.NewPointer(sig)}, vkPyFuncRef} diff --git a/ssa/ssa_test.go b/ssa/ssa_test.go index fb14d9c6..456b5ec5 100644 --- a/ssa/ssa_test.go +++ b/ssa/ssa_test.go @@ -189,19 +189,20 @@ func TestPyFunc(t *testing.T) { func TestVar(t *testing.T) { prog := NewProgram(nil) pkg := prog.NewPackage("bar", "foo/bar") - a := pkg.NewVar("a", types.Typ[types.Int], InGo) - if pkg.NewVar("a", types.Typ[types.Int], InGo) != a { + typ := types.NewPointer(types.Typ[types.Int]) + a := pkg.NewVar("a", typ, InGo) + if pkg.NewVar("a", typ, InGo) != a { t.Fatal("NewVar(a) failed") } - pkg.NewVarEx("a", prog.Type(types.Typ[types.Int], InGo)) + pkg.NewVarEx("a", prog.Type(typ, InGo)) a.Init(prog.Val(100)) - b := pkg.NewVar("b", types.Typ[types.Int], InGo) + b := pkg.NewVar("b", typ, InGo) b.Init(a.Expr) assertPkg(t, pkg, `; ModuleID = 'foo/bar' source_filename = "foo/bar" -@a = global i64 100 -@b = global i64 @a +@a = global i64 100, align 8 +@b = global i64 @a, align 8 `) } @@ -227,11 +228,11 @@ func TestStruct(t *testing.T) { prog := NewProgram(nil) pkg := prog.NewPackage("bar", "foo/bar") - pkg.NewVar("a", empty, InGo) + pkg.NewVar("a", types.NewPointer(empty), InGo) assertPkg(t, pkg, `; ModuleID = 'foo/bar' source_filename = "foo/bar" -@a = external global {} +@a = external global {}, align 1 `) if prog.NeedRuntime { t.Fatal("NeedRuntime?") @@ -244,7 +245,7 @@ func TestNamedStruct(t *testing.T) { prog := NewProgram(nil) pkg := prog.NewPackage("bar", "foo/bar") - pkg.NewVar("a", empty, InGo) + pkg.NewVar("a", types.NewPointer(empty), InGo) if pkg.VarOf("a") == nil { t.Fatal("VarOf failed") } @@ -253,7 +254,7 @@ source_filename = "foo/bar" %bar.Empty = type {} -@a = external global %bar.Empty +@a = external global %bar.Empty, align 1 `) } @@ -358,14 +359,14 @@ func TestFuncMultiRet(t *testing.T) { types.NewVar(0, nil, "c", types.Typ[types.Int]), types.NewVar(0, nil, "d", types.Typ[types.Float64])) sig := types.NewSignatureType(nil, nil, nil, params, rets, false) - a := pkg.NewVar("a", types.Typ[types.Int], InGo) + a := pkg.NewVar("a", types.NewPointer(types.Typ[types.Int]), InGo) fn := pkg.NewFunc("fn", sig, InGo) b := fn.MakeBody(1) b.Return(a.Expr, fn.Param(0)) assertPkg(t, pkg, `; ModuleID = 'foo/bar' source_filename = "foo/bar" -@a = external global i64 +@a = external global i64, align 8 define { i64, double } @fn(double %0) { _llgo_0: