From 31d5a8ac104150e05e233c5c8b12e7ea8457d611 Mon Sep 17 00:00:00 2001 From: xushiwei Date: Mon, 13 May 2024 00:41:42 +0800 Subject: [PATCH] compileBlock bugfix: pyMod --- cl/compile.go | 28 +++++++++++++++------------- py/math/llgo_autogen.lla | Bin 628 -> 563 bytes py/os/llgo_autogen.lla | Bin 627 -> 560 bytes 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/cl/compile.go b/cl/compile.go index a786981b..771f3029 100644 --- a/cl/compile.go +++ b/cl/compile.go @@ -347,20 +347,22 @@ func (p *context) compileBlock(b llssa.Builder, block *ssa.BasicBlock, n int, do if pyModInit = p.pyMod != ""; pyModInit { last = len(instrs) - 1 instrs = instrs[:last] + } else { + // TODO(xsw): confirm pyMod don't need to call LoadPyModSyms + p.inits = append(p.inits, func() { + if objs := pkg.PyObjs(); len(objs) > 0 { + mods := make(map[string][]llssa.PyObjRef) + for name, obj := range objs { + modName := modOf(name) + mods[modName] = append(mods[modName], obj) + } + b.SetBlockEx(ret, llssa.AfterInit) + for modName, objs := range mods { + b.LoadPyModSyms(modName, objs...) + } + } + }) } - p.inits = append(p.inits, func() { - if objs := pkg.PyObjs(); len(objs) > 0 { - mods := make(map[string][]llssa.PyObjRef) - for name, obj := range objs { - modName := modOf(name) - mods[modName] = append(mods[modName], obj) - } - b.SetBlockEx(ret, llssa.AfterInit) - for modName, objs := range mods { - b.LoadPyModSyms(modName, objs...) - } - } - }) } else if doMainInit { fn := p.fn argc := pkg.NewVar("__llgo_argc", types.NewPointer(types.Typ[types.Int32]), llssa.InC) diff --git a/py/math/llgo_autogen.lla b/py/math/llgo_autogen.lla index 8eaa159b98b5e33266d9b6d3708f3d6a34c2f8c9..44b7ad79f23add336a1f0ba99a3590860ede996f 100644 GIT binary patch literal 563 zcmWIWW@Zs#U|`^2;9y-F@k(Z2LOmk`gCz?C13!ZdLrzY5etcqSNq%~2o?cE)Xb2|* z^M?-(X`g_&w1S&~k>x8;HQ0cqlLNC48Hlvr|E#T-y2$BbmSl&~heUllo^ShlCz)+* zTk1JoZBftP?{~L^r5`tIul1aKuln4{=_QQ(vn)@Be=lJF8*`)A+kK|qv7LHLS04*{ zRu%K^IP2Egb}P3SOZs1PDstuS(>?fJmr?Pw%13R_o$^1Y27XP`G5a+4saqiD&MTUH zOHEULw%_v5NX##C=j9G~bcOSj=grbXT$)!_he`gAlX`glQitwVnK_?kCvv8qaab0b zx^mNp5^igO&EhAR)_;?6b>s-?iaFRKaO}EM;f<_=4;I}xn85LV38%zaPKWdE6J{9+ zOy1!4ZT{Q&ix`%$sRrn?cn0e&yuQQ7y4a_-V&>ta=b1DM!xFDFd$qJpz1mjopDnXr zuR8xyki*pGD?bglT{VukJ(@L9R8^rm{TR_8nXDO!%?Q;!QhupFaL~mB!YMp2jBs-!1qj!rQMNJh}7#lFlRN0w?mVJMJ30WyIB E06XB|u>b%7 delta 574 zcmV-E0>S;W1oQ-dP)h>@6aWAK2mtrItXL5TS`EMf001xr000jF8~|)=XK!C&b#!lM zWo|BPY*kbV00Y9}KxV|^KxTD#3jhHG^#K3?1QY-O0HsvHYTPgoz3VFm( zNGSNwOQ3~7k8LqpOL0WUk}Jz0ru5%ClI`7Wnq;%AFS6u+nfGSiJoy^F8quS?`3#@n ztXA&6-=vjkmbGcI@0N(QS+>Kn;qLy7b*8tKEbkOb%^OK6(c38zV?|l|ld>IBf0A~; zt)oQw=%m#gp+>WzrFE7S2hdWbmHSZl+=_@GcA21i#OF*DflB`}x|08gX7shS>VZ26 zz4pzBk_%yfp)$I2Ts!#w5gtKZ{)8&>Xg{(nN`RxPHRPfi@06DCV3dG& zwH=+u@P~~JW>*Yg;afn%1*kj;ogE|Jt`vZcB?!Vx0Qp8DEJl{qvprQkyr+U=tS)FDMi8XA9d4S|SXYkA_#X<=7g@Y@Nl@nEpqixEzEte5zho8i z3FCDqx_B2jUdI>xFq(z^15ir=0v-bt000080QbDCSP=(W4Zr~a05AoU;sGcE!s3$* M0wD$o0ssI20R7Dc4gdfE diff --git a/py/os/llgo_autogen.lla b/py/os/llgo_autogen.lla index d9ad409c2d002012a98d356d4be56f0651eecd7a..e88a4ffa3f069814f8cbdf5f9f3f98ed75b333f4 100644 GIT binary patch literal 560 zcmWIWW@Zs#U|`^2kYZgMv0riKnHok022~aY27U$^hMb)A{P@JulKk}4JiVNp&=5`r zW|5B$X`(<}TEWf0$nq7a8f?JQ$)~dp8wj|5|J8NyiV9=0^+z=okxehux}Cn~8g5#$ zW6`FR6iZ)?zu)`fE2nO2tWf5kwX^)0N7SLk54Q@vX5Y~ssCPGdZtEG5z&x+e@QFb? zJ5SZ7tP))5lRMMHJc!emyOH%?Jgc1IYLnbYTkf8)S+RE|sLwZnCZ#2%?&-B^ntI+W{hLDpnho=bWnFVp*kUIIWt8MQ`7CX=DQF{~^>XO&C(tWck|+Cv>b^U1oH%cP)h>@6aWAK2mlAYtXN@Di`>5f000~X000jF8~|)=XK!C&b#!lM zWo|BPY*kbV00Z9QKxW|LKxTD#3jhHG^#K3?1QY-O0Hst-Yuqppz3W#Drb}WlUV9yA zNGSNwOQ3;3k4Z3ENpVGG$;fgV6Z+pXlI{IS)9k|fA`8ubyf^dSNY`*{c(26GclZWp zwRFGwb;?Y$tWB%>ZmCplmhG@K-5KdjZ<(l`q!OAo0u!Ro5+Xv%s`C4)9a7V!wQ%eY z$29Tcgw<3*t;`yi)>%@1ij_(&-IuzjmPZJ%%>&&lwa+=wtrfCeNkNtrFcLUD; z&!Or3A>vM8`3IoW>?WH@ihU)k<11Md7%N%R0=ggQQ0g#}8!w6jUKFzzt5du{mf726 z*B>ifP--SAP9X_CUEn?#5QMoKZkpCuSB=Z~>IC7-EZ)pVQ0C%*mZ;ahP~@+_SWM9g z;s0bN@iuV0f*;PpI4I-|P)h*<9s?8r000O82feIVVNr|RzX1RM90il#0Vo3A;*$vi LAqEHn00000kW~ZL