From 99c812b02d31d8f827e299ff7bb4a5d0c59bed4b Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 23 Jul 2023 12:21:27 +0100 Subject: [PATCH] Begin working on a minimum build --- src/checker.cpp | 3 + src/tilde.cpp | 44 +- src/tilde.hpp | 9 +- src/tilde/tb.lib | Bin 4162054 -> 4163308 bytes src/tilde_builtin.cpp | 133 ++++++ src/tilde_const.cpp | 109 +++-- src/tilde_debug.cpp | 6 +- src/tilde_expr.cpp | 932 ++++++++++++++++++++++++++++++++++++------ src/tilde_proc.cpp | 104 +++-- src/tilde_stmt.cpp | 297 +++++++++++--- 10 files changed, 1368 insertions(+), 269 deletions(-) diff --git a/src/checker.cpp b/src/checker.cpp index 01b8b6b2a..21fa80d9f 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -1046,6 +1046,7 @@ gb_internal void init_universal(void) { add_global_bool_constant("ODIN_NO_RTTI", bc->no_rtti); add_global_bool_constant("ODIN_VALGRIND_SUPPORT", bc->ODIN_VALGRIND_SUPPORT); + add_global_bool_constant("ODIN_TILDE", bc->tilde_backend); add_global_constant("ODIN_COMPILE_TIMESTAMP", t_untyped_integer, exact_value_i64(odin_compile_timestamp())); @@ -2311,7 +2312,9 @@ gb_internal void generate_minimum_dependency_set(Checker *c, Entity *start) { str_lit("memory_equal"), str_lit("memory_compare"), str_lit("memory_compare_zero"), + ); + FORCE_ADD_RUNTIME_ENTITIES(!build_context.tilde_backend, // Extended data type internal procedures str_lit("umodti3"), str_lit("udivti3"), diff --git a/src/tilde.cpp b/src/tilde.cpp index 26bd69f4f..ff2a540f5 100644 --- a/src/tilde.cpp +++ b/src/tilde.cpp @@ -126,6 +126,19 @@ gb_internal cgValue cg_lvalue_addr(TB_Node *node, Type *type) { return v; } +gb_internal cgValue cg_lvalue_addr_to_value(cgValue v) { + if (v.kind == cgValue_Value) { + GB_ASSERT(is_type_pointer(v.type)); + GB_ASSERT(v.node->dt.type == TB_PTR); + } else { + GB_ASSERT(v.kind == cgValue_Addr); + GB_ASSERT(v.node->dt.type == TB_PTR); + v.kind = cgValue_Value; + v.type = alloc_type_pointer(v.type); + } + return v; +} + gb_internal cgValue cg_value_multi(cgValueMulti *multi, Type *type) { GB_ASSERT(type->kind == Type_Tuple); GB_ASSERT(multi != nullptr); @@ -138,6 +151,24 @@ gb_internal cgValue cg_value_multi(cgValueMulti *multi, Type *type) { return v; } +gb_internal cgValue cg_value_multi(Slice const &values, Type *type) { + cgValueMulti *multi = gb_alloc_item(permanent_allocator(), cgValueMulti); + multi->values = values; + return cg_value_multi(multi, type); +} + + +gb_internal cgValue cg_value_multi2(cgValue const &x, cgValue const &y, Type *type) { + GB_ASSERT(type->kind == Type_Tuple); + GB_ASSERT(type->Tuple.variables.count == 2); + cgValueMulti *multi = gb_alloc_item(permanent_allocator(), cgValueMulti); + multi->values = slice_make(permanent_allocator(), 2); + multi->values[0] = x; + multi->values[1] = y; + return cg_value_multi(multi, type); +} + + gb_internal cgAddr cg_addr(cgValue const &value) { GB_ASSERT(value.kind != cgValue_Multi); cgAddr addr = {}; @@ -151,10 +182,21 @@ gb_internal cgAddr cg_addr(cgValue const &value) { return addr; } +gb_internal void cg_set_debug_pos_from_node(cgProcedure *p, Ast *node) { + if (node) { + TokenPos pos = ast_token(node).pos; + TB_FileID *file_id = map_get(&p->module->file_id_map, cast(uintptr)pos.file_id); + if (file_id) { + tb_inst_set_location(p->func, *file_id, pos.line); + } + } +} + gb_internal void cg_add_entity(cgModule *m, Entity *e, cgValue const &val) { if (e) { rw_mutex_lock(&m->values_mutex); + GB_ASSERT(val.node != nullptr); map_set(&m->values, e, val); rw_mutex_unlock(&m->values_mutex); } @@ -744,7 +786,7 @@ gb_internal bool cg_generate_code(Checker *c) { } TB_DebugFormat debug_format = TB_DEBUGFMT_NONE; - if (build_context.ODIN_DEBUG) { + if (build_context.ODIN_DEBUG || true) { switch (build_context.metrics.os) { case TargetOs_windows: debug_format = TB_DEBUGFMT_CODEVIEW; diff --git a/src/tilde.hpp b/src/tilde.hpp index b8434ce4b..8a29d4c90 100644 --- a/src/tilde.hpp +++ b/src/tilde.hpp @@ -272,6 +272,7 @@ gb_internal void cg_build_when_stmt(cgProcedure *p, AstWhenStmt *ws); gb_internal cgValue cg_build_expr(cgProcedure *p, Ast *expr); gb_internal cgAddr cg_build_addr(cgProcedure *p, Ast *expr); gb_internal cgValue cg_build_addr_ptr(cgProcedure *p, Ast *expr); +gb_internal cgValue cg_build_cond(cgProcedure *p, Ast *cond, TB_Node *true_block, TB_Node *false_block); gb_internal Type * cg_addr_type(cgAddr const &addr); gb_internal cgValue cg_addr_load(cgProcedure *p, cgAddr addr); @@ -279,13 +280,15 @@ gb_internal void cg_addr_store(cgProcedure *p, cgAddr addr, cgValue value); gb_internal cgValue cg_addr_get_ptr(cgProcedure *p, cgAddr const &addr); gb_internal cgValue cg_emit_load(cgProcedure *p, cgValue const &ptr, bool is_volatile=false); -gb_internal void cg_emit_store(cgProcedure *p, cgValue dst, cgValue const &src, bool is_volatile=false); +gb_internal void cg_emit_store(cgProcedure *p, cgValue dst, cgValue src, bool is_volatile=false); gb_internal cgAddr cg_add_local(cgProcedure *p, Type *type, Entity *e, bool zero_init); gb_internal cgValue cg_address_from_load_or_generate_local(cgProcedure *p, cgValue value); gb_internal cgValue cg_copy_value_to_ptr(cgProcedure *p, cgValue value, Type *original_type, isize min_alignment); gb_internal cgValue cg_build_call_expr(cgProcedure *p, Ast *expr); +gb_internal void cg_build_return_stmt(cgProcedure *p, Slice const &return_results); +gb_internal void cg_build_return_stmt_internal(cgProcedure *p, Slice const &results); gb_internal cgValue cg_find_procedure_value_from_entity(cgModule *m, Entity *e); @@ -300,6 +303,7 @@ gb_internal cgValue cg_emit_array_ep(cgProcedure *p, cgValue s, cgValue index); gb_internal cgValue cg_emit_array_epi(cgProcedure *p, cgValue s, i64 index); gb_internal cgValue cg_emit_struct_ep(cgProcedure *p, cgValue s, i64 index); gb_internal cgValue cg_emit_deep_field_gep(cgProcedure *p, cgValue e, Selection const &sel); +gb_internal cgValue cg_emit_struct_ev(cgProcedure *p, cgValue s, i64 index); gb_internal cgValue cg_emit_conv(cgProcedure *p, cgValue value, Type *t); gb_internal cgValue cg_emit_comp_against_nil(cgProcedure *p, TokenKind op_kind, cgValue x); @@ -315,4 +319,5 @@ gb_internal isize cg_append_tuple_values(cgProcedure *p, Array *dst_val gb_internal cgValue cg_handle_param_value(cgProcedure *p, Type *parameter_type, ParameterValue const ¶m_value, TokenPos const &pos); gb_internal cgValue cg_builtin_len(cgProcedure *p, cgValue value); -gb_internal cgValue cg_builtin_raw_data(cgProcedure *p, cgValue const &x); \ No newline at end of file +gb_internal cgValue cg_builtin_raw_data(cgProcedure *p, cgValue const &x); + diff --git a/src/tilde/tb.lib b/src/tilde/tb.lib index f50666cff7963b3f6b7ec80ffcd57cfdd689097e..936675fdaea06207628e126db458d80ce108e7ba 100644 GIT binary patch delta 270842 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 {=HtAEv8F++({T3XmAjq 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

VTQjK9-DIc5t* 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Ξ2DyQX0j1`4{U zDMu#bRpce61&?xC!m0x8;-Y38;f*5bj#IBjV{y^7CrbbhU!af+9dl%cUq!KE%0DM* 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�hE|O^o9f!MU#gRABD!-d0JQ}`%B$p&kvti|zGUZy0 z+F*($xkz5e&`WWV)IuQTD{Ea7QP)%#i3jbcTqM~MknAQeu{4#LYlQn~h^()z z68gO5w0vuoI?y&o6vc%!aGvjphn1YTW0jP|w2%19D%te` zy5KLD8MFY6w(*hGC>_4>Rg5Unl^jHMvRaF^3CLz+XR9WeTKi(l)Gil`5 zq123N7eqkokowN73x;Osm|@8y$Bmp6F~X3LU4P`4hFL-V#tY4G^na3zO#|4axJb4l z<5U;P-)Q6LG1fS~5oo0-EN#VOvyWliKbJj5Uz8cK%o=Yw+IXX| zN^0N?6}{Rj`5arN=q#&b3VN^b1FIw+?UnkeRWbo_vYhLzqMEeNTW^(|!$?j0+$y1u zsfyTSmCQzpsXMKbs#x^=a;%b$Xs9$7Ngph~%J#N~(WIA>2akEJVg1zYh6HM5Hm2@k z7fET<^@NKAqa7>kl(rb$tv(dX+lDkQ;df0BA|mR=28+VBAqnay*$omy{;g6nv0Ys2 zmWl1!w2Ob|-`}bTXC*bzFRD$)*r=8*N7H|?QEfVlFE)l$6W?wM@p>oiPN{dM-l#x! zKBB0+dN})jYREL3cdIsS+jnXe-$@*KB_zbHZvE)&cP54`F5#2VF0M(yx-TQ9c3potTQ#woF}$*tm&qZ7KswNL1j(6UwMHo8%Cqo<8J$8}6--K9h8 zPVLDkJhZ`6CT&{Ab!pu$zH_^lt;i(I)-XET_Ik+WKH_jC^=;wsSL21>z7Y59>OY3e zP|G%I-zp)YePa7|aj^|z8%&xoC{@gCqo!m(JQwn}yKj?L@$nrK+q7vVwaFqUL3NaB z(7IL2PD!m>CqgK8C#XT$;rSsimMq_-PQAtv_(>@_WX|78qpx-jIeZ^?M%={Wbzwne zXVy@as4Dmbr*0UB_=$8ESs&Pf{3CF9dzz~F&R}^3(Y0?(uvk#&5g?}bjVbRn_;poT z_qr+ueP|2yX%5e?AovS{mTPR0UOqU5ba(37SZIerum%F>6jGc`XF} z=IDYU5KNh)D(4}%G^u8&|4l4S4n2&ke6eisU~LDEfVI;(kbFw}z0PEP=Lffj>(wLM{VD>_g~Z!r>nX zKJ5Kvs#e)Hf)CZvtR2h7wwHCMS7cCi8pBM6xm?mhF3I)|qxzoc@&E;Vz{zK|;RuHyW>R*959QI8UDWxiSRGrf5^3I=>E2P>#}d< z(MkR2v^+Yi`<>UNm!#hnF8&uz9#4uXDcc?W@J~McN3WXt5m(XcBRRHhrFAT;%Y*gf zQ2n@qeq2>QenH22y1a>g9P^Q!JhlY=xPyM&RX^^n9}m=Vs4gF);{;tkRX=v>$Fue0 z1^V&ZI=-vRvp(Xk`j3vE>G*|?U+TC`#~mNZQM+3|+^gf)Iv&#TTOCj8)%;$^bGrPJ zetbp8>v~$ZbiA+QBOPsPxOqyf;pX?#F=!2^?^wg#5usxxU0-5_J$s9|Qd(utV?Vhme=Y6$`UX{@hb$@abgTfIw2?za+gV%5{$2eGngN??)>v!FhH}2{_YjLo}IQR|+ zKN$!A;K2KyZdUmo%Fz!zlW@@gUiKJ&?K=ZDmyKS*%>wu>>iJ)ea=iUlNsv z6bxF^vG3 zX%rwabAi+*?!D}usODwHdC$*?It}xJ{vFwvO84ESK)eO)U`EtNKoNcrh$M;7BvPdG z>s@{4W^`aLDRC|=U6rB?cAtsZMfp^=tW0`t1i7sxcSOtr(hupSEHh5(my;ec(kC{{ zh@xZPg~Mgqre#&Cg0#qV&!eb|b+6noY>E<}Y9~`o?bIQ89$BM_2oZd(o(5TECc4XR zXgNPOF>{F?m%BmAQC0?dFEq+Dy67$0vgni4FmXFn)11U$h^ojwoIj5YkhXL;q(+A< ziJD5rdw)iUoS2{JT|iAE|1;YnJy)fgQmqTp|1Byi$Z5yn^T<L6o=5QwIM}Qo6WUw7q#mb-i)I{Ibdnrod zlX`E~Lk(>LwCLG50R4bA*C};)w82q#%EmW4&XZzR1*b|v-$M2{349k`#AO|cxkhoa z$0#EIQR62B0ok8aMsDijYyd^CsiJLlpX+}0sLo1R5+;Wn}J*63gT0? z$f7x%3d*pEverc~APtWEAcQlu7o2H(S{w>bkSG-SInhnz3tB+;^Yju}N@W$$)xc9y z-MiSiI5_STVm5K>QhP;HrnD`k)}anDgt8H7#e-2P$f2gBF^A~Lci|wY$fmf(RNvWp zE07`FYEo?6<&btskR=XYfFPoFOD)LhjpGCiV8)CnYFU~i6p!X(F3^}G)Z8*3!t~sg z^Y_vbStMqrosczJBKst9^mkQx$Xi1j?i4yR$vu&lx~7=fGQ3e%;zBHwrVta-nn+@% zIU#dGjR~1Ui-VDeIU$Y0^z3+rToRQ_#?P6M(OfM#A&D21eq2=aO-58Ud}IkcYGv1~ z)eEgg1dD3=LwDbdlKSX2WhH%QpVRwit;mhn?CM%^f#G4iR-p$+i7Su!>}O2&EIl$| zrm{EREj`x{ow!mLn=a|O-e#L+zU58Dph4%E%`#7SkPR?@9vPrJjWBw%NHGs&!&92t5KsOG|1Y-x5y!O!R_%r5FGOynAR&MC;*H#^aD?`602y?(|Zahs>0 zG3Lwv3rgUw77rhBJ3$L7OD=!Lc_YYoFftcW?^HyVN6lJmA%P>Pz0gWr0G2$=#}Q&= zYt2!DRSTk0#G9?PFlP!`VyWs4q#x-;GW03k`KDviQ3N{nU6^lJ$>b5+O}BtYqV6FP zV*`VR21kM}rX*=lkUGVF{sxJI1*>QzDX`qp z9_p6cJ%sXZbqwT%JxoFPjbVf%+shK z{S=gnr?mC$(GzRVeI&-Z7_J*-(Yj8qu_kTAA+jbjT5IT#S|AUYkl9i$G8>`W(OIl2 zX|IO!w^0j{${+5Ft;`CeU*dC19wAFc6%*$tL`9%9+4ih2Mu&;l7yCb|}9mrl}=jh@%$eh9h)J4UnSIEh+o zPI|6++y6tf6L{7n$D-bhoVd}Gq~%y|$B>3wk+%;>7u_a>XoiAzS{o;|<2_%$xQKhc z{xF3zc>qw~qktzzVoTXLvH)1n07Dy+A(ldU_Qg=1M~C=9q{X1PC00}fW8#LWs0jDI z=RNIHEjkVI@Nu3uf*Ngfcv~IR}b`joL3+B0vkcB9h3QHtkj8Ljr%bYk!Wdl$b zvdI!@!p;6VIUxbrA(?SWGz8<|*b(OkZqWtucn9r1ISwouQxWhYOn%-tdWe0?j-C|% znO#q6&f(u?9F2PSsjklxGdk)$f0ugxF7^C%_)_^2sp|6BbrpKL?`Z;&rKR)N(jk7R z3qXy|CvJ#j=R48+)NQ0d-);fuou31$cm6I=`hh{NPN_er4A;&-K$7Qoex7u2>HL!B z$T%vFbke$EGZNNWD<2}e4SD6ESSo7-xuWmaiY}dTf~G@m<8d&cKBf8>_jh8_4sR%= z3H5x6t|fe4w?;tsU%HjlT;!A{O{lE@*(+#hULR>QrEefaWEU-BD9++#iXF+Q%QMFsX*sFyaivc6&l7Kk}E9tSC@HI=RS}ID$aVBn~t}57e6vQ}x3XKBRlH z6kr4nsTg+pufZwyGyEodpW z;C+;I6aZ0rMsLXphk`alp|R`qd%-URwa|?=15x3 z@vnMRu|0VATsF61TZ#6 zSucrt-g0>Xfu6|PIwHl6$3|@Z&ckAeWZu@P zZxOn*u3w_NISY(I(7ItXyEkMzN{UTA zaev0xSt{`rkac$7~XwY5H z)3Z89sf)by{l}qPB_Vy&8^goB{N^*-N4}lCgPH!o2*Kg`~UO z{gAg5(AvwnAYA1we`Y~uo>YACUD_;{g3zAx(AX{wY-C8iq&IMHI6c+CEQ~;_=)K|+ z#V8)z(cW5c9iwZ@8<7eo)W&;3s(#Xr!;Rd7h~%3=@0yWNlloY#61Iv8u=?yhaF-F{!w3r)1 z5H~rWY9aczG+pQt+q$ySU-aQ-4pkKQVFpoa;>1P;ppWTm;hu_W5pvXo%s6@N9|vp8 zWe3e->U->NNh9MFv_=6`6{E)T3egClPyo6OQYZHyb_*a+mrgb^6gr)9H|O&k3uGmB z(B8gfPAU5T&%J6(-`3_nE*CFewcJkku+8-=(P_z&^c>pK0*1`GbfpywpIjYtWdO`# zxWnu@w)CX4uNR>?0Z*<@{gw5%uAKP9Z-!*U=&MG}nt4U5F_yW9_AH3w{3C zjQ7|-bXOJ^}v zbGM76<*rDt`eY_?-o9A>FstXm$afna3y8`)vu6=P(7q5DjMUNC*wd5*K zmLKQMHERr;vQ#x9I34~)&pmf5A}&!YFWL;!LZ7$Kw619`6IX7Ylj0p;`5g&*J~%;D z^#+$ISl0xy;=HC+qP+g=8N%%EQr62@zAmG0us8L_vwdB*97sc*Y@U~HZ|G#Y&mY%h z!ny9l9ctHHdpvczFbe93cH+^EXM9)^sITZ_W%Q=d_m*@HMEl6~0XH*f8&KX~s6(`n zs%LS`#Ws<}ayUHB_D+AO`o8(CvD}OJAzF92LvR^9mWAmwMb<~NSv=<^pY(Z~wlT~5Hi5Y@(}GpoU~z(u~DNF@J8(^h|6x1jlM_01p z+9gLkRSWrW>N-V1YJ|L&=Y#1NJyFIhESDhj-IfuRFItb#BAq|u5G}I=nZT6*M`s~? zvNw(S1GTZz%L4Ta-4oJ<3zv`WF@W&*Yce6JOK%LxTB{^8(fhi%HbM(@vNJzo%hLl9 zVkS^3=>_WiLy4!ZC#L7icL;JJ%ZWp(H8|Dzxp-mXU@pyFX;oMR%OdL797{0j9eJF7 zrzkN}z6UiAG4R|WAc`VlD$q`WT9C|y+SoTjd_Gbu=j4>Iw}4o7f%Rb>35^kK3;?6! zr$YC{!#X*;Y4V}FNzGl_RxkLO!JPUjsWC;PD<;cWDqdwsD}y0_>LAqqG@xK66$Tj% zR2~)4u*41PngEK10df}9+jmh#9AS4sBP0iB1Z8_y{P*WRaeI{JZ@~cGBVPvsGgzus{q|cBA;5rG5hml8jP~&|f8nj5BvMj(!RnN~47vGC49__`+ zs{SF}Xp~-urO~Wr_jpjmmH5x-8#0#sC;P=kSBXYj$iT01kHgG-kG4a0i2tlwNkf; zu!&k^4=OJ+ZiLZCzS-@(o8-|AD{U>~Q@k@# zt5$+jGImSir-^vmKTmj0(h>k2CTUHO$?QqmNWkq$TGO&mubraVWEi&>X_IBgZJ4Y@ z!uaH5Z4n|2dIh>%@t;?;&VWB&(JBH$rf8i2!>4E+)Sial&r`Iq5GGBPCX=RW?Qyhc zDoo7KO<&c*)ZFYouWG-l>SWP!npPJ!lcs5rwToMp&wvpa@%mZY+jsVxdfiECY45Ys zwDQRD&NM9;aY{_bJL$P1db-v#kZOtT>=WZ_#dNKU>_dI0>Wz0*i)WQ^n;~mX4|YY9 z8Cq~xO3FBmR`#d(V20+XM`6unXS}qxbSsqR zc3g&}1p!~jss)!Y_8fV_?{zJ>fiVH6nuQO4Mldu39$>geN;D&(G`%qz8&PBf>-92) z1yrwsxpK@~l9gNZ^7Y}0;Y#4LV-h!C*Q!`XsKcq9K@Z(?YLPD#clZ-;9X8g>6Y3>;ExjjOYKHyNSC=8T5rV7&(H#_O=;fHH2V7h9y3!@N|a3*Ia_+ZHd|Km z=xi;C>N-aYX`Et8{53ZwqK{EMS+6kPjMqtpUrcOcc+n8-H&3e{EQg@^ zXvxSN>*G8vsx=*A^wN$KvwN*F?9jXJFDepSi;6C9E-LDX zS4(df@bAUzMMWOMcfQul8Fap=s1saLt}=GHSX6Z7tD>Te-9<&Ge=I6mc&?~u(Uqd2 zvtJh#75-HGOR}S9aQs6tQk*aII1X{+_qA_|is*O!p{IU_7WF(*R8;EJ)4vyw7Zq85 zuYF%sWc{szFdW4$a>1z1Bcg`;$R`-6wnK z4_ZTaH9ULed2N=ecFqpJh`p2=D|-B-y^HhS?>}iv)g+N|Nn5FQ7LoZ{cN9K3U;9P1 zl~F`YfwnI@{0cTZda9!9Rc#ca?7FJ`V$)^WYk$SIMLhmZ8z*jD#}x1tmvS{NJE1_! zR>kNWT06CL_SPF(R{2&P<|RbA`DV1m(8WE==~3?OSkTZElwm<72EpLuVL_R?mJ6d?&=#LKCfV} zt@g~mSiwG44Ib*7@d?KqGT1kREuDr9PqWmCf9h0>IJ1b>7z>?5Bs1H~t$&P|?(l^2Ii51Y6!6uuN zi2~zfYJ;7V+TLJnH_>DZz|KR9kFL87%FZ6>X?CU$Xl3X5VEFJ06w(O$8@B5N#&!e1 z*zOt_+YP`i8v0`!cclWZMp?ES>?bKZ1$IfYaNHx!cS@Q7dRek6xY_-)WX-|Y@Bp5x zT#>S&0dSFQE!b7bVsVi~7su{O0@yVv8v^!=WaGekO6^pzU)dMzx@3m}@nR$`^zOq+NSl z3*MJ373>ci>hG?+2AVAMcY@WBECcLMX}AfD!~6@zqklXup&v+XJ{Wh22i~jZPRs&h z+1I9wJ`C)k^r(Wj^LbR93sn+zL;8e1cCLd{A{$--@QKK zr9HGOPmIqajf~e+Ffus=#sz$Wn>d_Z0B*PcEpw^~_DHf3V4U3@uz$pKgjK&4?*a6+ z;wGN2u$Oxk!>d2oW9gq=)nJdR;p2X!taNo_C=UZGlCm9OoJB-UgQbFT{ZZ>e2ITJbR6Y)GF*hS5f_ z64K}fSV_s0#zwG4U_MgT(UfI^Es_KEZLkE%-UriHMldcuw5c%^62bnGO+Ua1$_=y_ ztdtCW1dQ{{H?`q-v6~C24911j0pmhufpH;Qnj3{&0^>sNgK-(bEsQd{fl(Q~+?C;= ztey+TVb+21nsy(ov`ni+jA7RdjO~)a*lrsb+Z`c0F)9IrwUn5bV6WrkYW)&xctyk+ z6>I>;We)`7n6tpj$P)hp#?eoita3|ig{8I`82k1B^OLeyz&Of>VE$5e)CtOA9PxNu zDus2x*tt6xYtu}20*ni}X4=_W8KEnKu}624eE`ND+rT*TDKJU~C$_sfbytGWckJ8| ztehLop=n?|UlxP0^XI1BFQ%Q^T2TU|M-Uj>wFcvM?`z850ONS8N#;Zj?#dBRZkpdr zR=JHa6+bdr*|vsr6)-NOmnj=#$~+T|^y`_d7Z_J=5g4biCedkx*=wrrfpJZ|+Zo!* zV1crB%}iM;7|*xartB~n*Z7hty9X8|eZAWo@gl%vg`LVAP|jwBsonw>EM3kRhKj9& zqR=-JxhplnxF*xVc+9*7#_h4$)aIKksH4#yt--jozF?R5#P$KGK0u_93ONPFT~e}> zQO|HNE~Gvf&x2&J5Si8_Q@aF=eRIG#)oUiJ+F4OF>CvXMQc5qlAB2}gOrp8!orQp7 zljdLW_JA!_DC2LyFdV^7g7M<>7Z^tgO){eN1>-2=!8pn%U@N5W7vfx^ zy|jJ~y9_bAdvrD2JA-kX4+dlRG%&VXW7>IjGwd8-Y}W*g?S_KcWg{#GVlsjJs|d7&q{d zV!HvxbXo>hS$eD+V6IKyn!=yKIJEyjBTQv5mURN-RF{Bp%Y15T^T0UtMN{?%7$;LQ z*@)5xOh$1kCqOyOHB((G#RwA##szl+<1oWb*;cSBvL@vR8EG{Kc z+I3(&OMV37$bQ4{*|$7RDh)FXGr@SXmu1R4ha1jyz}R^N82iou<3g^0vF}4u<~za| z6?U-dGU;|;d;#N32IXD+C@|i|UmK|?YZR*8O|S&X9)R(B_u43*awX5)`Qh>L;Z0ujb9*nE> zKGrBD?=WDUnui|s^<>dGltbueH_?pp#lfbwM=?koWlu1{dX53;*FxgO(%`w?w zFfPMmy3vU}!Q|~Jry@W%%Hmdmb&~8;FwRh!Vbr7+7+*Dqyl%*1z*x4&lwCDtpP_P_ zWxP#b9C;U*K8@29tGZ*vT-?_A7(R)0DVpK~hJ;q!6NQ?eAW^Rl=mZy4I1V4T7=u)5N& zbte9{QL^@6^(FIJV02w17^>N`NAlZ> z(pYLAgK^6=dPh;3NZCtZO(k0h)=aV;V9h0qS)wQ{BwGR&BiSA>M4|QXG-#|8ezsIm z;v_o*#%uNK%kZ30$`XaqaAU!^-4=nxOYH%$JlWfa!1(4{ljVwXM9N~oShfs|TQKEa ztbfO(dMGHX1=vX`TWQKpfwhu_Tmegv?4|ec;8wC5U@U95LQ&dC*@s|lSqqjZS=*J0 zf)58ng%^Oa$6lvNJ>NHkEx|a<8L;-!W%Me8Wr4AC-PML{I2e0O&r*~Q(&G>qK5Y!e z*+0POm#iBY%d&JC*1vP0ou&FNSQp8BKE$Art>6d7Ei(iRpHGH>mrV8#7<*Lv$Ot_J zjEnmZ7<&|$vaV|k?Rc<`PB#kpl_`8=vbG;%fXEa&f^iCyz__<(f_0U?e}Q$AtkQps zG2aY~$9xAcUhzY*406A32jg>zwie3)PqEo+6{Uv^lLhvNjneuI3}+0m4PZ4S+XBWn zBS(B{?3J>?_;Tea7_alcgYlvr_nC3!_aYc;7lB=%GMvhNP&N!-XWXT$1IC6+!76g? z)*E+rHiAu($z+2iNVX4**R}DV8{7F8zA${-ZNLLRX_o}X9{s?+&D-7R2jePD-DcQL%Qm#m z2|321@;4YSJ_*~6GuAvXcUgD)4#TC(g?SZKD_uuBE=m)aX(Y^Urq>{@{FaO`HvCV}xN+XcoR zC&8Q?`rG}6+J3;;Sk(O5$iD{|Pncm~?6C@r!)!KXk4%~0H-=pS7*D&*gGQ8Zz_?3l zIP(nJ7mRzX`yoTN6Rel4XN|*#tlbe~e9r~rI$Z6`As9Ok2IGy^N-!Vkyvelt#s$QDfJRDc;fRZ z7~9&EtKPJyBfl3MYb zqP!$o%^OAvlfYOu_NKx1g7LJQa?2?AH!zm1_+3#3%P7v{phG0hx@|bOC^WW*-N1Nv zxaFSFgzA0cxm^`7K2z2KOO~zG5Uhq|&A|9fITVchz2=|B8tVkZ3X!urRXr52z= zWh*3svFsI-tp*z=wO^XD2LBj#DJENDvO<%!cx*-n(<7T~wG&hiZ3-`&tlYnbb7e4g z?r5^fVC*~3lx3SNzR2)>5sZDOnQWELu>Kta}qau9pqO?C{7eXoMOBdb&ZCM)Mu9)ogCO5k${IoC2^T=&Xg zqh-OTz<7xM0>&wn!dD?Nt8KErVBDQ!P1*Y<^DAjYsR-7AuYcP~N_8I(#?G@$*(Q@+ z0pk?@G-VDSBZYV{_I=TmWtc3_WIgaf#hkRW6u!BJ>1I=S+hk=+8-{UZR0Sm>!M0!t zvOl|lap#N$8zb9j1{j=RHw%ng@O>~pDf`fr?E)(&WzM~(@H|+M6y}?Xt)%9#X`sqfmM*QW2P(!)u<$8 zb}&w%DOgo0i#25t7uUl02Er1mi1(kHB7* zGv~BqA}hCPf=K-{BEO*;*ZR{72Yv9{8^3+Ce|gzn zL$#?s*`FS4`noN9=45++PoKfE9&w)7MvLpy?0vevE(Q4{kgO1_vt)`Fz8wm40!;zd zOUfd^K9aI%umMsQ2R2i(B(Mze_H=ulaD1a895+JHL$X}3u9BSq>zjRcx_y_g+vFj2 zMaZe98?xgU+E05s>5FtqAop9qvcTVgwSl*RalkvkzQDV{F~Ivk+-p((0DcYp6X=HQ z9sx0cv1dR#0sjT|0V?QSnnNlu73c<>40H#+rYf2&U;zZ45PS@z1ag2SvNtTV?^pY@ z$1#nD4#3L5j=-V79>7EX|MM7~IEg4_lz91P z2!>9?g_bSfF~?$E2G+sUn98JAQ;{oqYe>2WAC7j5I^L=GDSSdfl0EkZ?{*$ zo71hfV@xKB@dOEC&vv_3a(LJQSd1NiJJYb`y;>x`uD;5wYB6ixt zZ1_C$xSjAR6()x4v^TYRhl#A6_J*E0q3DZfu{g&bBq9z4loJ2$v^!91`z~a%QZ(CT zZ{#%(HplBIVo$k%z@;ex?&9rTu$d}0>_W9u#iL!Q?+6k86>69wI(&sz>n)sL!9Pi? z{>t7AwLkwAOcF#93FAcgZhKqxz8Jn6jki{;287aQ`L1qARoJFd6)F-{rphYx7Wa0` zrnK)tu%n{a9{9}@i|8m$9NA;H+Zx-&^*#0&wNO;al|hpUQt)L>_E?)k6K8YnP1Vz) z++OL~VJ|#W#oWF2SfqFmU@H|Oy!WA*yhB7)LiZ4nxX<1+RDL{NOUmUlnHM)L=anN? z@3S}Zq|f5p+)`wHgBHBI&mQ4JpLEwWo_sclI{WN_KJ*cIhTwx7d!R_Ff=2AQ-|q0C zPnY{$+MblQp7gPEzsHNXZxQW_{q`u^gUwl*AEaYzd?W96hC}}e6EWJ1Xo4yLF&wMqW3|2Qy==km>G2c zNBLDYoO(iRh92YM-a(ADxgt0ZPHCc1o;}uwKAmJ<7cwpsdvoo9w)$no@;q6@sXUB@ zHNy80oR*7vhwRO4_{fXYLl{h_#fC!|{q#8zL%SJ zJUWUN=r5Xmix^S;MgMQ@8sXG$5ev8+7!uW=0(5l`Qr!HB(N9eqHREx(slSTb-`az1 z0RzO%y>=~TQYpNSH-Ky+l?ZHY1*?nx&ftTe)O$ z0(p7TAHjlOIA#yi$|Y0O-l{dHOOPZdi|F_4K_0oVO%}C}BTBO9a@=0A@8lHnpa~J< zugQ9h9!jSpnjrLtudFYtlD@qh>JwAhKHmSjMQ<(fa~SMRktO=jpT_P@A&<|6dfy%x zdbU`gSe*vK%$bJ$% zKUcImDRnr~%8Z{pjvKHy&XaS+BB(;=4x&7M^r30nN!DestY?k~nH)cf?%Mp4OuH0) zf9mF!$h^CUNV{4t#93jSGkd6$0885Xh%eO zT0e2ZU|oLzn+HR0Erm7&lf-$1#~dj74g-9Pu%E)w77=^O9*h%cuTyA(4B>>(D}(kG z%4c#mdE|f|6Z=VhOxz%!W5V||ns?R+9uu_lnkBlNMh#|(@uzVTs6UeXj=oI0{z!`T zw(L8fXp5lE$U1=)Mvfvaj~=e;xXDIc9WWj_YS}3aJK9*jEW*D>-Y<)00Ndfw;%292 z5nl2B?$|UQ7S8Wce2Q4ju!rFiL(%v4ip~@Yt9nGxyw^_f% z{h4~R)rVO0G&Vk#^I)Xxv9oT{SA1~B9%3u;veojS0{;qua^xA8-e}XRoQO;xJ+5xk5%lG#o~SrEp!WP?31bT4_xL;E+m~q zhqHFOS0|~)hx^{Lhb-G1;BLd$Hb$(lYk|GtD<3D~VWv&-M1=9(8dq7+4l~8dwSVJun`4 z1~?vg7C1@AxxgQB`~mO+a0~Dv@GLMNSOmNb45^1d33A6x>nF7XiRdz~6y0fwzHQ0Pg@d1MdRA1>OS|0sjCtXn>0V;C$c% zTr?|RgOK7U;9o$WhFl{*;J-Ky1iE45#QF@k50F!}{EihSum4SnRD}jT79{{N({sSBa+zcE6`~f%; z7!-r%2UY-%1t!Iy|A|b5U>uPC^n#9e>UbLXGLB2eD#`?4Cm2CM~~4jc`f0elLt!ehSLXz%1Y`;7;K0z;A(ffVY5mfsPKC6Z&WymdH*h8e9=(AxDe$I#?01vp z^?@N?uVLsZVm@ZTlG{*E2sBGHSE7Ktf< zutk)u@{&p?eXIL!NbjWK%Zsro%SS`p5y#2vj<`)RnhLMmxUgtCQ*3;>j^>#L<5IIk z$4&My&pa4|kGXBHpnfM7-9{UKC)V9Y3w$Sz-^Ru{I9(*+20{E<7zU@q6EEr0Uh05s z-U+fLvMf4ksV7@vxzvkpwzXD8DD6@@?`9Vx#wAfyh+16| z;dhW(V1{UX#~$Vtm_b=>l)GYjz@*fg&D&hsCDocuN?-BTOeo4 zQS=v@cD1PZH>QNG=4k&wOOvHb^|EqLkD zNsbCH1}~+6>3&qjp>mlUDytZcF>mN-;t!X)@u?GGO-tYjRLRg=yQMSaRhHgxRH<4; zM(!+cL-636JaN!)jvj&NhF-iG(M-ctrGsRmpX#vFlBhbuLl!Ng+&(X3jXxgufwqbb zs-t4$R;eCehSD1+)0;4KIP#kj7TJ)% z4Y3Z;;D(?CBIVtm8glrIkYG<4Q@G}@+#M>do?O@zBS!fnCti8wchM%drYfi>|x zF`bSlzb}&99h%2ccuW@AF!h@JJ{7i9yp_}}P%SCCxI64Ew?I;I70C~yVB_Y*kdbsl zhpI_4%g{f0;@At_X$ljLyLsao79ptZht=|IBJwK)x_kYwnxapZHw%_kvmp;0)jtU>a~GFdax|t=YiKz&XG_fpdXgXt_6l^khF1 zSRc3m*a5f@NbC5Uz*OL3AfDGal_emHAP~Tk3OZrJPsrvX0$df{xn4p<7f9$1O4D?bORt_x}dDNudj zCSV)jm%x$0&A@RwrUAF$I7>hN7?_RY&w)9>JwW=lUApev0rUm#1_lH70O{&27dVCX zl_XdUJOHFE{MW$4z=J^ApymN-BYFhri{GR8eF4AU;2^Tz$oBYU?t#qU=`pb z9cKZn;&>yl8t@9RI`BHMCNKc2t?d5>AhjTv2Bcexp8@LtHvnl|+yd4I-UT)QKG4y_ z7iUTwmjgBez6hjylzo9sfYX3YfqQ|?fknU=pgZ;hu|Q8hrJD@s0|9032c#MY0;xqb zAT?n)uq7}GNb5v%U;>VlfUSX3fo*|r0~5uK5{|jHA3qjvx|a=7uZhf(Sh25(4J94N z)r!LDgC(<~SnY!oK}E5XkIwrzuBiLPo>CC*7w1dCVZSKCk+%OoSljR*+Ik|O)4Rtf zqJOBPf|ti9q|Xs|YB@s0E2SOlZKppG8-DfDMB0}z0is(O$6_zHwPbTav|MWs@reU9 z1cRE?4)jU12)b^<4MTt2Fmzih$~^E7D&0-G(i8L;|3{+E1OH%Kx3!}E1OE!*GhfH` zDuJKETd9UmtTLV>r;Zp237tNwV$sy~;*NLoa?W^vT9BW1DZbrJdt|G=Hrf*}sNlkh zL&iO!mkI^`$^1-~uDT3=Yl{i^wG|!w9rlp6GGpP=pc!!cUO4^HGvABVu(A#OOx`f{ zNP}jeIPdRhR(Ai^}q1@#5-NW(OGL4@1UATNk!c4Ya2=qDk2n%&Vs_41}2km4a`R&WHG z2bW7ZLOfF;_ueABLmgoabSqgfSB9Si^p`d=f=koxfT+Fb7mCu`3umZfzgMHJWVJ`A zryWA-?s;a z((Gop>n=7lubYcK;aFmt%M#bRsBv0SQnrZ&C9%Y$NWD{DT#4v!%9Ro^5so}tt85V$ zg-s_g4PSEU*#j=%S;QAJ&n3Q`c|N#LmgM*km*l8_peLo#DtlQaM=kMZq$5L(5z{K5 z_hV?#<6=k6v4^yxn(G3Wc0L685ot(^LyZ4Axl122e()gPM<<#3L!#?$dtg|{Vu4F# zsUscR<%IWa%)Dbo$6fV`h>gOaxgwGooD8cO_Ap#xD2l?&C=%-`!J$YTVYtEIQ`xc3 ztM)ELR!)h_WibYfgOimUfj-o5hQQxHx}5N<;_x(08@uMQ z5jOY55tM|tRBlwqLaXf+-ZdN*2y52Br3)~zh9fLQ+e>jjbh*PpH|hEbXAOAw6RT@D zD%#u+h=?!kT8#{p;eLQT_RA|m{ehi%%Z<((x?a?o;t0vEP}6Z;^;+}|xs>4fZyeD4 z_n`T|NOY)$q85qKwH#GKb@ek>fkk3NEl05JEd=Bq?9gv>!Q3R zhiLr{#HUY2eV3OCKTqFD|oc2_$`` zoTn!*oyAv|&Cw^UUm~Y3>t7l)aVU=`+6(AxCK@ z8Yp%*b*xk`i+;@<>ze#@k{pje)y0XBT6F{ET>-wSK?~DQBDT5Xhdx)oBlk-3cB*xR zP&$T=a-tT+?#X-=?}9~7qicl>&nGjQJXgi|7HGt)ViCiJ7LH)Go;Zl3uzIIppqzi| zPFyCW6;6x%qjt@Q%Bygi>@vlp27w_JMidL4avTQT-qWJvZa7k-?Ujzhg!4qXK)igm zItIfvE_-K;W1@7XAnba>vDqV1Id^(vWUnO$?+dv zYJKuvMm(hFMR-dTabCo>bgU5j5*!igMR6s;(Z%-p55k$`t%=U99Z`6Z>1F@Ga^m-v zj#A=qyu(kFjCaJ@DxVb{<1ti#W8xhH(alHV9UZ&|{7B`kDxUcReiV&c!4BA4$Ei9l z2bvCaYV?^0Un7EC9qzVrB%pH|B{(|RJkE*R1HHn;he%XRXzfV#YH^MVyC>u+Welhx zxPx%yF~%o4KCxXpFOJ1ynxx(JcNg>5d-{ns?Hp5WWiE)^cBncqza7?j z;6Lpghi&sOi0JZ;F!4)!>|T!vX9sk`F|oP>diI#u*#Wcon7Gsdi(QS2d}}+!tDHL> z98;+f9E8-kNU1Gxncf2-=`1>QM6}LgG(%=bM-d(~Wp+Z1A4;Ds;)4l}K#w>WKNJT$ z;Wn8mZ;VE>b#~;3=KTb%GDEKW*89jwkmiY^&L|;Igm;k;%aGg!`G#MTH?<>a-iBYI z7-OCqc(g6d6dSsrvYFxtoV848xz(jEG*k9*G>-`4+2Ki!R;qJEJ`V7TFirJxVEDtB z@g$)xiUvNdmzQQzPg%L>J;{I2gbBKToJDUvnfHKvaX$XTb+Cul+*cHK#a@LaJ%s92 zJ46I^b8H;=ue50=ht5`v9aVWrmRlZ>LfH*tZB zg?No~#AOoIl4t#AHo{Z-CmO-3e^w({^t8U=#?r`F#`Bd&6!s2^k$^}$S}p*Oft)=Y z_EkH}8LtK8`v|L3zjD)`~ zl5KlmF5&#xp(^QwZ%@Y&Ti6wGp{GOh3cEt(%@&a%7|vyTIo7H_ik-bMseTlfdSS@^ zD2n(95GZyzntO}5-ssRDrQet0vZHyRPYyyD0yVUGc$s+r-o+wSy#Cl;-h-yYk0QG_ z_K>=*%ThcJ>I337)arq3-#(5;s=7+F?TZ<=>Kar^s__30?g-E7>&R*v@(W3-T5j!6 z95a5>L^(caTpN08<6?j*wSM`3ZJiHXR8{)_FAQ_V8Prh`QSS_xrj%ruP`FKrg+Yc& zNkuCvDkc^tDwQSeP+74_NktwiDl9f>qZL;+tk|NWmXZvMl9G&yii`?dwxy!_eV%j9 zeH{1uyRR2K@B4Yq-}~pBbI<)V!gHe)<)!T~Q>I~@R0ir`(!`FXC_`G~o~72PoW<%_w?5G7x%SZ4i#Td_-*W9>Y#RhdVWd2zY* zJw0l=0=`ahU-W1@YOhphxx=>g~?zoxrQ zXf?kU)w$NOkYC02l}P$mv1cWQYQKuZYVDVm7_t2-rmvE|OO)BL3e5^4tU{4~70;}) zricIfHD#P{3f~lel;~e&nehBq1sK2Dn&Pzs1eb#z?(%+vc;b;M{t2RRwPj9_>v-%d zI9!zjGl^oyYUKK~cm}D#ytCRGpLAaz<*M#;sZ&UuJ{8cE?}C$t`R_x2N=(W_3Qvi- zc}VYoSW0ULL;z;kfp00b%f+RSPZ}%wADm>0{SS_fXgru_#fIXE#qY01P-*lLov;=q zzOA1k<($;8()HjyV)0s}d5?5wsOg6L*IIQU--)^T*mB>A70LwiajE>B3^whg!wSPy z47J4|bcqbnz-gF#ntP$0FaVn2lXANP(WYjfqob>}a_KLl8tZ_axA%+%CDjMCD zIqL^`$k5!R4)d6JWrHy){8f>i`apW57-!z4Dt+jjDnt#J%M2nTT zV|2T-02hV#is|c7vwKAvOwzs5zd-hH|J$0_zTn-w3#qk=N7h?Y#K%i0&`>o&eY$<;X)hg&_f|puUCiES zO$oPys7a(v8?DHzV$dVRAjD+YS+J+TZiS75r5kFe!5)I00lOGYP&{lt>>02$*EbWk z0`^SU-LMI;bX>%WkkcZ^ipuBcwUCWgcF42h%1tQjvtsKe)Zkh1h%zrKb7T{SEYJQI z5piGnQ#ZBco2^zn;Cy5=BHbl^-;CPdB_>psChV{eZEkENt*d*BVVd|c1KPL` zML?}Regj(3w|`NCz|2h;1it;t&f}9N(rrcW+rOY-#_#`UfJNmwCPv+e4RTD(xDmBo zhr#P`guMp#bl5`Jvtc*FUIkkO`v~myuymV|ZbSVFdowKERwPTWfzfTLg|Nl2C9t=^ z-U0h3*jiY+uks1(t*||?6z^-g-AFJ5VH@l?)cOwCWY|*JRM`Sos zz|uFy?}eq;|98O7g1rxx-aot_wgUD6*!N&7U_;S#?}Vk>jt{|348x9n7(llfAA!9b zwhDG7?4z)BJ8>86Yp_qi((|=X!cKSM`Wg00*uTK8g53?f7M9Yx8TRR6qVF-xL;rTh zSrOvs7ArGkvpDl6?8(hy@lDp0IhzgC8pCuN`&PxCu8&;>4btF`rQ&R&2#iEf8C`T4%Zz;RvE67Mo(^C_H1fuGfqZA8kbus>F<9 zoI6z^ly{mM2dyf$B2T$YM_B?p9zL=cz-GZNfW6!l^$DoWo2x_dxLUE5;Rp{65hd$G zCx~gcSmll-So3Vc+MoV}>3}b9v5FlJ1WA>S_kz|U#YF*3ZcY;i0@kEC)9AHAe6E2m z!3)PwE2zdcH2w(osTNX=?Fz{!VoI!i!>*Ijo5ZcSbnzxY*TPAyVkz|P!hNeXeb{yx zzEn+bTy`s_#?KdL-iD2LzPRKz>oq)$FzR+}-*3d3$}Co9gEBjAx0VF1#73Ef6tiLJ zq`3=y@ln`p1ftJ29?l z6lr(D-ze6?u>a7+v&M-h?zAH3(EV!K@7KXjgWUkT5VjC@CG196x)|CFdpB$mEVbO2 z0Jv`KSP^=cl{;)sIOQ59&bt9qy7tPl8?4D8bHp=uA@@1r0L&!qat0sS)G}=i4-unp zL>HNkWbjBwsWr*b?G6#M9>!3Zu5-h&2G^h(Da!ja-C}Dgnz1^ZbkvMJ3rl-sA1w8v z&%s^-+X$NryC3#W*ymyIhkXI|5bR5^)JeY#J05v7!_s4KufUeVz6$#QYzu59ET#7h z?7v_esTpep&{Gm`!j43<^cL(a*aNWZVcTGFZwYuqm*IVCnVx z_h5@)KY+al_AqQc>=D?b+8St$y09J*wgjUKz+4DNVN+p0fn5vR4f`1EXRuGgQUbNG zJ+SoN#}}}NVS8bJhW#3rc5H`u~4&v9ur%)BiLi&5oKQ7j^^oeacvpSu+PO^W$=A2c9&UmLk^3t%Fz2B zZgk&+(=KGDc;{X?XNvFdMbMeTy+fMmJEWMV%-S8+jL9?cjR$lL@>Lf);qiLyIyyF~ zHR z;&H6S*@;ol5Q_xRQ1C49Qmom2u{_aF&vN~dG~uq0$_Iz6}aUP=@o4ixTuQsHuhCmFNKC&C7u!1zK|!xib{lfLIf%?)PDjWVxS&2I4vg* z;7KvUQ)NvI(8U9ug2R8Oy!#!CmYkmQ&0C}1xukPC*iS7zniJfdQuDc~|Kq3Do_6f! zLbYR4ux7`P!iG^h{<<}5@;0wPE@I(B)`(CPCg&kkWl~II@k7?bA))3eBKi@_x7?&V z&&GH1(L}ZH)DyRrP;DP=Zn}{ge1pB_fBY-4--DlBE|Gpw@d$3&Ag}$%i)<(CL_6K! zEk>vMgsHT}e4(%j+Gc87sBL+bHI4lH)p}!Rm34RM^s)5y6!~I0Mhs|w@zI_&EA!Om zLAed>7xOlqId(1{@jD^?e+L<1LH^(}o&h~U9C;kaQG)pWaSTE88n;$kD;@Yfu8*Iz zMujFVSh)BK%66D~f3IXw#{7BoOoY9j0sp)U&?p6IYsBQItl4NjMi=T~iDmJc1mRVv}tu=PxWhmQ{>?=lce#YprYXn_}PATD$4z&PEsdm*VHnj{nuVeRRx{`B{sDBF`0fJcH7V z6u%bwr--&^Ed0K;aMmHduW@6YwIL*AwfOW|%);b}|2%6wj=MDv{>|F$@pLWxZQyz{ zZN`5${FJwQ%X61BX1r{f4)?!s?zxS8l**LJ(5pT~F8S~VeTc&?AJ;e_#kGO z0GH7R`d9|-Clar;Szp8`p#*0Vk;^FdqGOeTN{GbkZ=+;Nh(-57i^wFmL```MVHoC+(xw~mr>8*8aP~dEV^?UH-bp)I%v&`Q9_w^ zxr|QG=Q2d48OAy?V@s3E$OX~j zHu5xKSF={aS~Y7mtTnUNA_8BH^TvcPw-bxd@iwYfY>*?~HJH z-2=QnDB7Ni^Sa}6?M;**G7&-?+v|^Xm$F(Wp6MOuUE0Dzt0tGx#acIOL#)Y56@!iu zYb6X8w-Kw!Wu&l{Dn{({dzY55u#E%NuvW`j6Kl<^b+OjX+8}E~q80T@^RKc?k)jC) z8*6#2m9VyrwQAOC#G?&3W;$5tN8oYt5{6 zvDVGnkRtK%i~bSfr_rvsKqlSa!-C#jlglV%t%$WU*2-C{VXc<6X4YC*>t?NoHDiO! zHXa#=Da7uN)8sbdS<7H8QxrcF=glaCp!RdQCYLd^QN6+8mQz3UE{DrV-z0ND1{s>L zjaj45O<{iO;1x;nvzu9M;gG$o^|2Pd*-kM+Jo=K~o0h>srY2;;ntUe;F!ED$YjBU_WpC}M33Yvrs}fRKpr*2hH$TCk#$ zY}Mp4GX8|uVPrO$np{Q&NM%#02?Kc68d&RKt&_EW)&^J$56I+bJ47hNVIQx_Z6vUk z3Q~okUpgehWeDhJSwQ-Q2_ly<2vP+c(u7OE5<8qnlgr2f(Pz5dMlL8oh-M#13!42B z3DCMUVK1{b#F}xd9WGXr+nCB)GHZU;a#+h{ttbFgrP-nh{^ENfF)^Rt%1S{7^BtQE1gMT}UU zG%KwQ0^Qhh8||9V)NR9KK2j^yXtaYO zZjmHH_QgfJyTK~C9^u)CJ~;VKTfh+PO|&Hi5LCQEO&CVpg*hIXR*EJR7Nk-t6)6_R z|1B)Eig|CL%?vBGLxgL>AO)mSvNU0bf=0>I3pC+;0;$v+G+|S)*1=joYXhu#{w$-4 zkKgi74y0m5C7!McjT?x5k`PzmnlO(7QW^GXLK}0pt%Yks1wbmUr3rmLXo^g)NE1#Y z5EeSAn-tMiL7O@md#oL zNENV9lgnrWIb@;RH6f33&Vz_1Y;oz$qF;RbHcpKK2r6cwChSZQO&nuqYC@}hpPiaV z69#&$#j}>qS_W&mtmUy*tSAMUl(1OA0V`RnXRU#?R@T}?P9v^|BJQ_K?9qhI5#*G$ zsMLh+14IkD4^0?#vL-+83NKpw2V^jWi`9gthqV;eaum_ImCIr=2P|Q&inVIi>Orc2 z4Vql?_N^%k9ae!m1t3h_foQ?tUK7qi)(SyU;iRVHDYu)9HSnQ@jT%wB?2 z#`Ftqw4ecEt%BCB-7AO|x6z;pM;&YJto5N8|Yb~sGvDPj2zKd~+^{6ZcGL6-Q#)7pJ*0Na3 z7FAPS-asV_RUBwPYfY?mvev~~KS*uM0ZlmnAICj8xqT}%VU8O_3+A{rp~X`~+szOU ztxxib1s$0D+C=}%>yjefRn;;M{MBO4b=bq55LC)tns5g0!W-l=H@_yFfgoCN25Le( z%;73ITn}iRjN7XT*BMXPaT7G5Ggd?=O(u)EAQd@J6AmL#luWQe6D~eLw788SP3Xp+ zw8MEc;kXAy%ec9kTt+QO#jOL0_QE7{b_;8*np{Q?YrU)uv4+dJjo5k#HFgGxnsD}l zCOD{YO`0&u`-`1vxF*aUuolN!GDyYsYr=I0Xp&5?OcUnFKv=SnNvA?I8~vKx#sF)c zr|gU)HK9poEt$1!)^bGt%W>YA8Ww6fP&;dQq+=5fF7q%Z+Y@)&StN^yI1JMBStt;{ zB3Mi<3w4@YMk{OR=n*RrR%<5{t_honwK&#NSxaXvpS1$kNam78)v z6At#j%6zZFrt~Ysrp(lYj+wOr)(TnM22u%@YQhNP89dc3Gl`WX?m5jBy|e^O3(g-+ z=)qX4VXXnAV(-_4ez{Kl);juSO)euFq|(a~mw$+h5TDGloCEZLVx-oq2?Nn*?MR85 z&>MnOxO7c8u|csiZlxv+us|xqZcR83SsN17r@MydME=bV6s-wkNsvk`UK45#nk+M@ z(S+*?YjKge+4XknIht@u%i0#!%2}&mtrnzeP^SrJ{$4!CENj&yN!+_7DcU{t?{+S6 zqW`tHSurInY}14d!di_u?kiwaUXC1^sM0GcXu@6?3R zV1pfZswSNNAQdiI6Ry)h(`4LIO}I`2VVRFZwnHJcF`CfEuom_YJ94-tOp}35lL=-^ z5_`{ZMF*O|wBYhX6OJp^x>*}yP5$y6V&JrTPDVxCSWW1QSxaFphqYYR3PC6hbv8u` zkzh0EbXmj}O*q~f?MxyxA!CpV7pn<_bkGbLw@?%IK8O~y`H%+oUu%BswClYM@0wd zS3y;hWtwnV%pt2a;Tj#3En^RALgVp*9XDMQS|*SRm!k=tF6b&5w@wqzcMujiY*vVE zW4vew4AX?h7<7h=oTUjZ6o?kLQK`vgG_baxwRYAzSnC0)^m;)7LL9J7c-l{9lC23_ z0i-gi)`Z~*hil+);s3;Q-!g85CZq>aakDj{ZDDN-YvlnJD_Cq`Z9i*mthKY&%UU06 z;V;=4M`*&HXKgBLDVi{Qk;-B&2h3xw7^G@fq6t0H%XqL$);L;|%g6<(8s}-kqYtc= zuvW!dHIayz<(iP(4pa$tXu|NmSv`l3Nmxxd$w0K=Bx@!s{u)S%Pm6qonAB)ZXy#Z; zW-WuYOxE&QD-efz{N9*q7HT+9GixovTY~2Kl{e{5@~d_MBQ;@;4|JB?GJTpb#CXjv zo?jEr64r89+rnBgYn7~3u~x5$&YT7o+c;o5Yds)Um|jgdFk95`tK-^T6Ap9`Ex0Ps zge}cl6KkEUb%6pD1n<8kGl8h(knV;2k&vIEJ@6~ zJt;b^0jvtMUlWE5taY+B$l4HV)?0SmSaH+sxbDekp+FO+P*^Kxt&X*N)>>F=Wvz#` zUe<;{=g8X9uig`(z@TIYp3ld1k3>;ECMsH-e#{>k$ZV57xUw{%wFb?RX*6iU@d{EK zVn`F_G~Tu~`qgAwFj!_Sk+lrgGFi)0B%VIzACb0=1C(-rYLF^KjVA1)gLqFx7A!*( zrh-7U;6XOA@*7NOwLw@R1GQ^H={eAlCbY)y*b$>Oq4{GinY9d%$~03GhF_p_Wggv{ zQ1f<~-Yk?PQ6V-*rY3A&)(TlGk|b_D7#BUe2CR~-)r0}-A-tLXSsmk_9ea-KXAsx@I?)QOiJrM5*A<|09~;CUoX z=v-OrV=dxCJDf)o<_%bjV=Y|~b($G0=7Lnld798dgXYS@v}wW__K}@Qv?iQktR=IS z#acFNg{&2UuBL=Asl#F!2drVOmbF&a+F0ubsRH(B!UW+FJl`q{T_H(4d#)=wCcMio zc7!Gz8LY*Nw|~H;aPkCPWEQhp!XYbIt7NU7wFcJOKq~KcO*kh%#ye}WJlUEs;|!t& zGtQbY08n05474riFHX5As^sD znamzLMfw$cT5u1XwIbHaS*u{Jp0x(n+E{C6tsA6r?$LycjxXdd$fuw<1qzXIJ%|>J zw>4oX!dfS5{j3d$t==fi4}WP#Ow@#ql(j6@idfsiS{ZBQtktvDz*+}uovihN@*H@l z1ILs?)S~GtykIRibh9SRn)liT^k~A4V=aNTEY`AFD`IVnC_7A@7z=eAsFk%g)_Pd$ zWljE8xZK2HU#lWvR0dK7wltx^IHtb+jP^nkX4k)wF=)IJt`N1IstJ$wvzE?Uh9prR zgVEz1ow$~(W>*ad-w(P#Zm=dzc=EdsFGWf%RTE~5M|HQgs~QDc_0-zUlV3LK=WmS`!%`n6q`&C>4j;+6c%f-tR;X{+(b}- z5TyoQBonOCg!@b&T5z996Xt?A+#rWb{T}au%ed*9a7_SGamzJf3X8+laJc>eFkMC- z(1dHbemk;X6S@JA3YVz~SFfOpW!!2_Xj4Hd<9t?No zweWx2aU(Qg-Up;InW_mV5GX@t+@uL7&_KYB96q23ku~8-0@e~iDsr+WY<|!}nP9ah z+&lx(;x>9UA(Q{uTDT^hq_!sBsYr6?rrN7UItR&PEuXa_&{~=07ELGyNEbsBW>9~` zx5{L=TuEZlgGtfi>Ys46*bRXe9Mzg|fc)3i!Zcyz2U1ByYr<&<%9P3O*MvK-AX?n? zQn_4k+G)a+HEVuF)QP9Cn8N{cSt|soOo}vN{0q8NX56OEpokjPA{NUzUzkamL?pjtod0> zVJ)Av0@g}dD`TyWwR+atS?d6a)!lIu1D;U3B9WRf`@mWvYw4_Iu$IqS0c#~7wXwEo z!abd^5aSxT0V6b_8v$XVjgYAj8=*iGCMa1eWvz_08rEuAYhkUGwI0@bSqr0&a$vzo z1tb=o9%U|_%37Qz%nz}a!CDb(TUe`Pt%|k%tTl;8f5(irK|ci~GY!*(mY20Sarkr$ zRr6TL=Rn(7D`l;kwHnr%S!-df6QnkKmnO7T!|`1zxhwpd&>n!Wq+pY5Q;1zr!2v5d zU=L`6jNGdUqbHYLvt)5kRg%|T$U>25|2%G1S}O}}n$V20*2h}7+fFG$6OKgI62-?z zJuM%CDnfxK^w|+1#T4Suy!66lg+I!CJW({#cTC zX&Vde9H@u2Ue>}!+NpHsVgcde7#8@n~T1kyfN#m{X;0#v>3bkhsJx(_1?1pAI+U~r*~z5Uhn_mcqkrb3ODG>1d4|n zi{__kb{PvV&(MrpaQGmB3KL<-uM^0)Ba92@Wn>tVM;Z$jX6i7bj0KC0f2;5wW5J@u zS|4pJxIpRwWIP6r3$$abv0%O(Arkt0t&c+lo1=^c^XxF=jRi|=jz;(;I{XAOfm-GVukf#-~XA0;x|Sp0D(& zQlBsNQ)PI?(}?HEFadmb4J%7jgg6;tiHvX>ai-EwmwKkuXAtX69Z#I55sQ(dE>Y{L_Iehr|M5il%hfuEzrw(0L#V8>K)9T{k_5_HmoQrfK=yk5 zDq5!vpx6IM>(mVB^`*2<8$z$=(E8;UE?#)Cs=zYom)|Lo6&rXD&&i@r!uoKAD z>vm(blGc}8dYQexiq?Ar(*AUYlgKwfSY~0mo0gLeW@Mv6O zh{IPj)??1e?A)hy%^PKnd5e|F{O+NJ#{@Y?NU9X5e?g;8FS=DpXO1G4;=6|hNjWCP8{?hEcw+FYPj)5 z3j8_b2k_`4Cl2|lg`!CIMuQGWuSF#8JLnx7pl_Nuj5r92;yHK%h`wOrFcO)P+3N?r zCA}$3sq9S$(br2HMg~(Rd$T}?r8j#yV-CA>K}V!Jk13zM1t9t|iNh#lqCKj%z!ngF zlEfkVx=(N~4t1o@k2s7{xD=If@Ny7+lEfjuS*NIyy;UIk#)!kHW~yOtE$DOUtz)WZ zZv%)v0OBy@w<{DjvAY>W-|2ARa>%Au_O^j~rMI1_gT0-gW76A2BsR9Aj`ZHC!{~*e zsE>p9gXo1(hcUo3$lf6kz2}J`1P(JrbP=F7Cw<+HUaiET#e@-*_R`0}=p{>s5xtzz zVmHPk@*PHpF_kHfz40J==g(mzFwt*Asf?3B^!A^_@DquZhfqg)6VD+(G^!|rgJ*)q zNN*NXHhXhGqog;NDUZGRpyAS6z*NZIBG44+-4b9dW_Jnba_Qd2RLb5m&=t~K&Q!tP zN>HfuRxwqxw+7^p-das)tLxZZ4+@j+2B!V&Z2~!^x0$Jhy{#ZqdfS-V+1ml47hD`h zCsP-BGjXUmjBa4KboVgzl3RNFKrZR+XBuGdAjmDfLquZUd)TWZq!5msttbMd5~E*1 z9x1(%OwsJMK=eX@!-!>?%HB8-y&B*!;+g0tM^(y+AoLFKCNF37vpWS8CEck^>Fmt_ z(Zl)G z*joznNpBfbIeRNWG16N}byQfz?rKo1bk{J|vbPR2S$gZ48rZuZbc*yg5sAs~qmJ~b zuES`Bps0<5w}YlhZwFH+d%HlVNpCk(4|{t-r%P`iQ$KqLKr^Iwkm{&#h}|fUe7F?7 zB@-RH>L7>!(Nm`AEt%+$QC`}^^mM30?w)Kh`UBLF9t}lriT{e?K`J;s6L^O7CNkjx zAnm26Ic7?43R5b3(?MrSFHKo1q8U|{au$eEcNp1puUR48##ZiJ&@AcBW6EbQT`tmt zb?7abirBjaG+TO$iA2a@)RCSTLvM-yipoGLt8!41^j0ucvbPFEPk5oXWU66rEr=eC zLL0_Z&)x-%NZ?p$AaiV z1oW0naqNu;(Uw7P$&|?6WKgd3`iaD+ov7nVDWpSCl)=F>L3DH5VPr97vo{B{T6%Mt z^4OaXq65u=SxB1-*;@pfC%s#!jtYy}T>_%}ln!GXQz?7PK&jGO&Q!tPN)X*vbQo1c z;?RevBi#&i$ZxwUs^j4Gpo^rpfoVT`n?Q66&|x$)wXnAplrFt(OzrIL09`D-om5AK zUF_}#Es*XWre5~;fi98Wex?ET4uUeIcZf*5@)7E|PzvErb=L?ZF_1dmJRrK|<1iwb zqSO6??>gUie&9Up>~wzU{K$F4+2#D$ z`HAzW^HXQH^E2n?&K~C%&aa$bI(wa8JC8ZParQaCb$;jk-r4W`w{yTb<3G+HoeA%m z|8)*Je{ufo9CH5Z{LR^6-e=x#?lAvsK54#heqi2a-fjlAnRl3Xns=F{=H2FYv&_85 zyw`ldtS}!mcbb*vL*^r9mHDXonEAL_ZSFFkFl)@em`|Cz&8N-3n$MWc=3%qb{Lrj3 zlb$vIX6`ZT&AsN|%?5Ly`H}e#^EtE8+;2W_zF@v+Hkto4Uou}dyUdTxqh`1Hsri}t zxtZBxzGA*=wwSM(ubXd}|1w+6H_f-q17@4~wt3KOHxHR#m|vQI=rzAKkD1?@-<$pB zH|BBkUGoR$t!9Z?ZVK~Zv)25?e8>FC{MPIfyN-ItM%+3h#F&g@`inj9d@bhf42>3@ zN4;CbUqA7V5g(s2H(i8vgPK0^ri-Hvyvp@BY6vw)~8R8A1)K9&)iP+CT9iKwGnP}!`pksZ}BSk3)KfwF`XWr8y`i9}) z#%Q&4&$It*bbaov3JZPqEb+H<=lH}MUwOX^y*N>H`{(!?J9@o!4qUw7+UNaxc<7t6 zMDF49rj7D1?!Rrlfgy%m_K00SdXqvQob}+wcwgg>KYFKzgci>ho)6FSHU44HTOJY` zog|t+!rHN)Py)}CwTpkdonvpEB|Zs@_lf$>=y1;`^^@P*#;#qcbk}*lXlygNJW_Pk z%XhGMWwiLMGdeNUF<#v2jQ5SVLv3F){qDOsRGaV)d8d0CmpXl=EbbjGsy~dL=84>X z&-;I7wQ#&B&%_3(`uMzX&u3>pbMD>jsvakrhrGUMoGNm8Y|g2>x3hO&l-OaS3b`Ml z3a8%Lh!14g+vcGt5qtDJ-*`LXduiLp+{4~YV&$*i7|}-Y@&_l(yO%xLcnIIBwj5x8i4u}he-N)XCy-$u6bHn3Lq`c)w^Oy?u=8hHZp9EFWI45w;gY4}Pqks3t@Gg9@ z^xHW**?H$U@hK&2*K*l4;bnro+sBJP{qCLSiM{;KA(gCtIze=A399BRFLaG~h`rZO z5dBMns=0ID(1wTEdq(twu|6Ml4{~|y^zn{I*f~E+d_Nq8F}3%|^&GQW`_8tc`kkP z=T+6LniE9%%|R(9C3Ig)KQW`0=!v5Ga#Yh!F?CqQqffARw^y`>1l3dAnES<(?2QI>=bgo?{#3)>)Um=J>hq1aQ_h;Y@ZewAdzRQ3>WkrO&OdYUk~vuaZokqdjGWYY4%<e!nbCHjKnKAf1a{aN;wSz^&GD3u-e z%oj=){f)gbUU3{LkGJz(_Qb}PJ?z~o?g{fv_w>fU5>n6N*U_RsIKi^_kA&}K?=KT} zUWHoP>0Pzfi#JT|UA^5a5}ZM`ynFoDcxBY~_Ky+2j|{5i+=s66Hn4a4SW$(zT+)kE zTmJnI_C^Wx@G)G;p|^_8evX|B$BA8|kg#2-$O-$#HL|xYN}O+EXRaOZ8M&X;+6kgM z5VYCu9GoBeJbUq@S@nOMbD}VxG^hRe0(*ZHpP1Ne^Y)rQzQ|(Dc(KQWLfB3FWA~<= z(!}1+B1Oh96k=ENe=hkatI6ZV-%28UqI#Gw-1Dd38y|HxaWZsIp*-h0taoh4&*!yOr$ju2#`TNcbnqOt_S(8M0 zI11WVx3%~+R%(*gI*Acx-r3t1zkJ;<8ruUKG9a_Mn7!PI6uNCOeOKg=cwC!sq;W zW7u2l&6p%oTtNx{&|tlBfW5s@qL|{^=hDqD{4lzWy&Ei1=R!5F%SoH|Hmf&}79+Ps z_;$Ln3x~Y5X$RS}Xrl0~2uiL0KR*||!`>x0Z`~+~ombD;#Y@}SyKJskG)@x7V)__wCzUo$$QtAcCgnF zOCx+S>^yzh;f?RJ^D=Q?1djXeb9iqxCu z`a-@I8%Ox)Cn+8z^Nn~OX6HzFKO5omg?uYQMne8hoJ!_Gu^wjJhcegpJ7iYI zcegaBLJ@C{^m)a)__Y`T0DJNbZr5fpLD zD8#-2eo;>$9|nc|SL_|-n<55D_>5eZ2V{ES`dN5AzA0nrPLU%d6Y0?6zir>GN5tNB zb0&%FJifC-hn?N{l*iW_64EVpjPWI*_^*%gO^GboPSgIexVoaHiT2@xVrYynF{EA0 z8tdCPoIcAT1Bmjd`0)$pBl-5-cAUcNi&o^Vx!S0=1Ibj1ah&vX7?NIx(v90CCvtiM zN{YBN(w7$K-xut_Z8^j9k6?vnuZ-txWgYI>tysSazd&OvltCr_6877Q3S$`bM!3pS zDr-^n7i@)MMV^fd1U0^xkJs7;NV1z`stC zu184RG71WG{pK|#tWZLiBC~4P6WM>Cgx@!M(~d=9_R@*=RYpz?p22#p9wvxZ@I=TmE^s|EBG%dPm#i~{GHeOH>uUTK%%nHi8qF}?yy!JzO z7)pbFWUl_*V1<5q%=3XUMJH6SX6?#?bvLh}uU)95DH^p-<%dOIl<$;Kqf>as`x2+c z;$%D#0>`9b-~>CN(Cq`yN1}K5(!8y%?rEI265W_dohl{Gi4TTMahS=qd%XvOLc zg*TOdVTXZR{*;~P%V6aT6f5(qVC51No!*%^QBWjdGzU(S=)O%e-e))w=r9s0>800gcg#STuFk{&TRBg5xq5Ax?yugD|-vxWlHT8&(#qSc@+!dqQl5 zYBmX_E@y?ptXsd{=s!tWxoWeKf=4P5{p#s(Wap=_aG zMhc$%JCQQonkhd?c@hU%clxm4*2X~g^bnznMqBl)&70SF@C;p$f~1=xgOyoOy2US( zd`ZcfKHEVh=%b_NB&8fX(q3rC;}!`HNMnY`w|to)IgQU-zT0L+TsSXt{`~ZX^HQ$Q zJL|497WwcOgTGk(O~&6T_?v>isrWk;f79?c9e;87I}LxQ<8KE3;_-I|{$}FuO#CI_ uZx;S2&Dr=%#9tEr&c@$4_)Es$9Q^$Of9K-QkH7QqcYfm;i{^ef`~Ly5H} delta 267503 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

g0 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 diff --git a/src/tilde_builtin.cpp b/src/tilde_builtin.cpp index d6e161ec3..c55cfbb75 100644 --- a/src/tilde_builtin.cpp +++ b/src/tilde_builtin.cpp @@ -61,6 +61,7 @@ gb_internal cgValue cg_builtin_raw_data(cgProcedure *p, cgValue const &value) { cgValue ptr = cg_value(value.node, alloc_type_pointer(value.type)); cgValue data_ptr = cg_emit_struct_ep(p, ptr, 0); res = cg_emit_load(p, data_ptr); + GB_ASSERT(is_type_multi_pointer(res.type)); } break; case Type_DynamicArray: @@ -82,7 +83,12 @@ gb_internal cgValue cg_builtin_raw_data(cgProcedure *p, cgValue const &value) { } break; case Type_Pointer: + GB_ASSERT(is_type_array_like(t->Pointer.elem)); + GB_ASSERT(value.kind == cgValue_Value); + res = cg_value(value.node, alloc_type_multi_pointer(base_array_type(t->Pointer.elem))); + break; case Type_MultiPointer: + GB_PANIC("TODO(bill) %s", type_to_string(value.type)); // res = cg_emit_conv(p, value, tv.type); break; @@ -102,6 +108,37 @@ gb_internal cgValue cg_builtin_max(cgProcedure *p, Type *t, cgValue x, cgValue y return cg_emit_select(p, cg_emit_comp(p, Token_Gt, x, y), x, y); } +gb_internal cgValue cg_builtin_abs(cgProcedure *p, cgValue x) { + if (is_type_unsigned(x.type)) { + return x; + } + + if (is_type_quaternion(x.type)) { + GB_PANIC("TODO(bill): abs quaternion"); + } else if (is_type_complex(x.type)) { + GB_PANIC("TODO(bill): abs complex"); + } + + TB_DataType dt = cg_data_type(x.type); + GB_ASSERT(!TB_IS_VOID_TYPE(dt)); + TB_Node *zero = nullptr; + if (dt.type == TB_FLOAT) { + if (dt.data == 32) { + zero = tb_inst_float32(p->func, 0); + } else if (dt.data == 64) { + zero = tb_inst_float64(p->func, 0); + } + } else { + zero = tb_inst_uint(p->func, dt, 0); + } + GB_ASSERT(zero != nullptr); + + cgValue cond = cg_emit_comp(p, Token_Lt, x, cg_value(zero, x.type)); + cgValue neg = cg_emit_unary_arith(p, Token_Sub, x, x.type); + return cg_emit_select(p, cond, neg, x); +} + + gb_internal cgValue cg_build_builtin(cgProcedure *p, BuiltinProcId id, Ast *expr) { ast_node(ce, CallExpr, expr); @@ -149,6 +186,12 @@ gb_internal cgValue cg_build_builtin(cgProcedure *p, BuiltinProcId id, Ast *expr return cg_builtin_len(p, v); } + case BuiltinProc_raw_data: + { + cgValue v = cg_build_expr(p, ce->args[0]); + return cg_builtin_raw_data(p, v); + } + case BuiltinProc_min: if (ce->args.count == 2) { Type *t = type_of_expr(expr); @@ -176,6 +219,96 @@ gb_internal cgValue cg_build_builtin(cgProcedure *p, BuiltinProcId id, Ast *expr } break; + case BuiltinProc_abs: + { + cgValue x = cg_build_expr(p, ce->args[0]); + return cg_builtin_abs(p, x); + } + + case BuiltinProc_debug_trap: + tb_inst_debugbreak(p->func); + return {}; + case BuiltinProc_trap: + tb_inst_trap(p->func); + return {}; + + case BuiltinProc_mem_zero: + { + cgValue ptr = cg_build_expr(p, ce->args[0]); + cgValue len = cg_build_expr(p, ce->args[1]); + GB_ASSERT(ptr.kind == cgValue_Value); + GB_ASSERT(len.kind == cgValue_Value); + tb_inst_memzero(p->func, ptr.node, len.node, 1, false); + return {}; + } + + case BuiltinProc_mem_copy: + { + cgValue dst = cg_build_expr(p, ce->args[0]); + cgValue src = cg_build_expr(p, ce->args[1]); + cgValue len = cg_build_expr(p, ce->args[2]); + GB_ASSERT(dst.kind == cgValue_Value); + GB_ASSERT(src.kind == cgValue_Value); + GB_ASSERT(len.kind == cgValue_Value); + // TODO(bill): This needs to be memmove + tb_inst_memcpy(p->func, dst.node, src.node, len.node, 1, false); + return {}; + } + + case BuiltinProc_mem_copy_non_overlapping: + { + cgValue dst = cg_build_expr(p, ce->args[0]); + cgValue src = cg_build_expr(p, ce->args[1]); + cgValue len = cg_build_expr(p, ce->args[2]); + GB_ASSERT(dst.kind == cgValue_Value); + GB_ASSERT(src.kind == cgValue_Value); + GB_ASSERT(len.kind == cgValue_Value); + tb_inst_memcpy(p->func, dst.node, src.node, len.node, 1, false); + return {}; + } + + + case BuiltinProc_overflow_add: + { + Type *res_type = type_of_expr(expr); + GB_ASSERT(res_type->kind == Type_Tuple); + GB_ASSERT(res_type->Tuple.variables.count == 2); + // TODO(bill): do a proper overflow add + Type *type = res_type->Tuple.variables[0]->type; + Type *ok_type = res_type->Tuple.variables[1]->type; + cgValue x = cg_build_expr(p, ce->args[0]); + cgValue y = cg_build_expr(p, ce->args[1]); + x = cg_emit_conv(p, x, type); + y = cg_emit_conv(p, y, type); + cgValue res = cg_emit_arith(p, Token_Add, x, y, type); + cgValue ok = cg_const_int(p, ok_type, false); + + return cg_value_multi2(res, ok, res_type); + } + + + case BuiltinProc_ptr_offset: + { + cgValue ptr = cg_build_expr(p, ce->args[0]); + cgValue len = cg_build_expr(p, ce->args[1]); + len = cg_emit_conv(p, len, t_int); + return cg_emit_ptr_offset(p, ptr, len); + } + case BuiltinProc_ptr_sub: + { + Type *elem0 = type_deref(type_of_expr(ce->args[0])); + Type *elem1 = type_deref(type_of_expr(ce->args[1])); + GB_ASSERT(are_types_identical(elem0, elem1)); + Type *elem = elem0; + + cgValue ptr0 = cg_emit_conv(p, cg_build_expr(p, ce->args[0]), t_uintptr); + cgValue ptr1 = cg_emit_conv(p, cg_build_expr(p, ce->args[1]), t_uintptr); + + cgValue diff = cg_emit_arith(p, Token_Sub, ptr0, ptr1, t_uintptr); + diff = cg_emit_conv(p, diff, t_int); + return cg_emit_arith(p, Token_Quo, diff, cg_const_int(p, t_int, type_size_of(elem)), t_int); + } + } diff --git a/src/tilde_const.cpp b/src/tilde_const.cpp index 6b1fb5c92..bb4a294a5 100644 --- a/src/tilde_const.cpp +++ b/src/tilde_const.cpp @@ -52,6 +52,13 @@ gb_internal cgValue cg_const_nil(cgProcedure *p, Type *type) { } +gb_internal cgValue cg_emit_source_code_location_as_global(cgProcedure *p, String const &proc_name, TokenPos pos) { + // TODO(bill): cg_emit_source_code_location_as_global + return cg_const_nil(p, t_source_code_location); +} + + + gb_internal void cg_write_big_int_at_ptr(void *dst, BigInt const *a, Type *original_type) { GB_ASSERT(build_context.endian_kind == TargetEndian_Little); size_t sz = cast(size_t)type_size_of(original_type); @@ -109,7 +116,6 @@ gb_internal TB_Global *cg_global_const_string(cgModule *m, String const &str, Ty char name[32] = {}; gb_snprintf(name, 31, "csb$%u", 1+m->const_nil_guid.fetch_add(1)); - TB_Global *str_global = tb_global_create(m->mod, -1, name, nullptr, TB_LINKAGE_PRIVATE); i64 size = str.len+1; tb_global_set_storage(m->mod, tb_module_get_rdata(m->mod), str_global, size, 1, 1); @@ -125,6 +131,7 @@ gb_internal TB_Global *cg_global_const_string(cgModule *m, String const &str, Ty } if (global == nullptr) { + gb_snprintf(name, 31, "cstr$%u", 1+m->const_nil_guid.fetch_add(1)); global = tb_global_create(m->mod, -1, name, cg_debug_type(m, type), TB_LINKAGE_PRIVATE); tb_global_set_storage(m->mod, tb_module_get_rdata(m->mod), global, type_size_of(type), type_align_of(type), 2); } @@ -778,18 +785,47 @@ gb_internal TB_Global *cg_global_const_comp_literal(cgModule *m, Type *original_ } -gb_internal cgValue cg_const_value(cgModule *m, cgProcedure *p, Type *type, ExactValue const &value) { +gb_internal cgValue cg_const_value(cgProcedure *p, Type *type, ExactValue const &value) { + GB_ASSERT(p != nullptr); TB_Node *node = nullptr; + if (is_type_untyped(type)) { + // TODO(bill): THIS IS A COMPLETE HACK, WHY DOES THIS NOT A TYPE? + GB_ASSERT(type->kind == Type_Basic); + switch (type->Basic.kind) { + case Basic_UntypedBool: + type = t_bool; + break; + case Basic_UntypedInteger: + type = t_i64; + break; + case Basic_UntypedFloat: + type = t_f64; + break; + case Basic_UntypedComplex: + type = t_complex128; + break; + case Basic_UntypedQuaternion: + type = t_quaternion256; + break; + case Basic_UntypedString: + type = t_string; + break; + case Basic_UntypedRune: + type = t_rune; + break; + case Basic_UntypedNil: + case Basic_UntypedUninit: + return cg_value(cast(TB_Node *)nullptr, type); + } + } TB_DataType dt = cg_data_type(type); switch (value.kind) { case ExactValue_Invalid: - GB_ASSERT(p != nullptr); return cg_const_nil(p, type); case ExactValue_Typeid: - GB_ASSERT(p != nullptr); return cg_typeid(p, value.value_typeid); case ExactValue_Procedure: @@ -797,13 +833,13 @@ gb_internal cgValue cg_const_value(cgModule *m, cgProcedure *p, Type *type, Exac Ast *expr = unparen_expr(value.value_procedure); Entity *e = entity_of_node(expr); if (e != nullptr) { - cgValue found = cg_find_procedure_value_from_entity(m, e); - GB_ASSERT(are_types_identical(type, found.type)); + cgValue found = cg_find_procedure_value_from_entity(p->module, e); + GB_ASSERT_MSG(are_types_identical(type, found.type), + "%.*s %s == %s", + LIT(p->name), + type_to_string(type), type_to_string(found.type)); GB_ASSERT(found.kind == cgValue_Symbol); - if (p) { - return cg_flatten_value(p, found); - } - return found; + return cg_flatten_value(p, found); } GB_PANIC("TODO(bill): cg_const_value ExactValue_Procedure"); } @@ -812,12 +848,10 @@ gb_internal cgValue cg_const_value(cgModule *m, cgProcedure *p, Type *type, Exac switch (value.kind) { case ExactValue_Bool: - GB_ASSERT(p != nullptr); GB_ASSERT(!TB_IS_VOID_TYPE(dt)); return cg_value(tb_inst_uint(p->func, dt, value.value_bool), type); case ExactValue_Integer: - GB_ASSERT(p != nullptr); GB_ASSERT(!TB_IS_VOID_TYPE(dt)); // GB_ASSERT(dt.raw != TB_TYPE_I128.raw); if (is_type_unsigned(type)) { @@ -830,7 +864,6 @@ gb_internal cgValue cg_const_value(cgModule *m, cgProcedure *p, Type *type, Exac break; case ExactValue_Float: - GB_ASSERT(p != nullptr); GB_ASSERT(!TB_IS_VOID_TYPE(dt)); GB_ASSERT(dt.raw != TB_TYPE_F16.raw); GB_ASSERT(!is_type_different_to_arch_endianness(type)); @@ -846,13 +879,36 @@ gb_internal cgValue cg_const_value(cgModule *m, cgProcedure *p, Type *type, Exac case ExactValue_String: { - TB_Symbol *symbol = cast(TB_Symbol *)cg_global_const_string(m, value.value_string, type, nullptr, 0); - if (p) { - TB_Node *node = tb_inst_get_symbol_address(p->func, symbol); - return cg_lvalue_addr(node, type); - } else { - return cg_value(symbol, alloc_type_pointer(type)); + GB_ASSERT(is_type_string(type)); + cgModule *m = p->module; + + String str = value.value_string; + + char name[32] = {}; + gb_snprintf(name, 31, "csb$%u", 1+m->const_nil_guid.fetch_add(1)); + TB_Global *cstr_global = tb_global_create(m->mod, -1, name, nullptr, TB_LINKAGE_PRIVATE); + i64 size = str.len+1; + tb_global_set_storage(m->mod, tb_module_get_rdata(m->mod), cstr_global, size, 1, 1); + u8 *data = cast(u8 *)tb_global_add_region(m->mod, cstr_global, 0, size); + gb_memcopy(data, str.text, str.len); + data[str.len] = 0; + + if (is_type_cstring(type)) { + cgValue s = cg_value(cstr_global, type); + return cg_flatten_value(p, s); } + + gb_snprintf(name, 31, "str$%u", 1+m->const_nil_guid.fetch_add(1)); + TB_Global *str_global = tb_global_create(m->mod, -1, name, cg_debug_type(m, type), TB_LINKAGE_PRIVATE); + tb_global_set_storage(m->mod, tb_module_get_rdata(m->mod), str_global, type_size_of(type), type_align_of(type), 2); + + tb_global_add_symbol_reloc(m->mod, str_global, 0, cast(TB_Symbol *)cstr_global); + void *len_ptr = tb_global_add_region(m->mod, str_global, build_context.int_size, build_context.int_size); + cg_write_int_at_ptr(len_ptr, str.len, t_int); + + TB_Node *s = tb_inst_get_symbol_address(p->func, cast(TB_Symbol *)str_global); + return cg_lvalue_addr(s, type); + } case ExactValue_Pointer: @@ -860,13 +916,9 @@ gb_internal cgValue cg_const_value(cgModule *m, cgProcedure *p, Type *type, Exac case ExactValue_Compound: { - TB_Symbol *symbol = cast(TB_Symbol *)cg_global_const_comp_literal(m, type, value, nullptr, 0); - if (p) { - TB_Node *node = tb_inst_get_symbol_address(p->func, symbol); - return cg_lvalue_addr(node, type); - } else { - return cg_value(symbol, type); - } + TB_Symbol *symbol = cast(TB_Symbol *)cg_global_const_comp_literal(p->module, type, value, nullptr, 0); + TB_Node *node = tb_inst_get_symbol_address(p->func, symbol); + return cg_lvalue_addr(node, type); } break; } @@ -876,11 +928,6 @@ gb_internal cgValue cg_const_value(cgModule *m, cgProcedure *p, Type *type, Exac return cg_value(node, type); } -gb_internal cgValue cg_const_value(cgProcedure *p, Type *type, ExactValue const &value) { - GB_ASSERT(p != nullptr); - return cg_const_value(p->module, p, type, value); -} - gb_internal cgValue cg_const_int(cgProcedure *p, Type *type, i64 i) { return cg_const_value(p, type, exact_value_i64(i)); } diff --git a/src/tilde_debug.cpp b/src/tilde_debug.cpp index 21594ef07..e6e60be96 100644 --- a/src/tilde_debug.cpp +++ b/src/tilde_debug.cpp @@ -368,7 +368,11 @@ gb_internal TB_DebugType *cg_debug_type_internal(cgModule *m, Type *type) { param_count += 1; } - TB_DebugType *func = tb_debug_create_func(m->mod, TB_CDECL, param_count, return_count, pt->c_vararg); + TB_CallingConv tb_cc = TB_CDECL; + if (pt->calling_convention == ProcCC_StdCall) { + tb_cc = TB_STDCALL; + } + TB_DebugType *func = tb_debug_create_func(m->mod, tb_cc, param_count, return_count, pt->c_vararg); map_set(&m->proc_debug_type_map, original_type, func); map_set(&m->proc_debug_type_map, type, func); diff --git a/src/tilde_expr.cpp b/src/tilde_expr.cpp index b6dbce181..822c637ca 100644 --- a/src/tilde_expr.cpp +++ b/src/tilde_expr.cpp @@ -648,21 +648,22 @@ gb_internal cgValue cg_emit_comp_against_nil(cgProcedure *p, TokenKind op_kind, break; case Basic_any: { - GB_PANIC("TODO(bill): cg_emit_struct_ev"); + GB_ASSERT(x.kind == cgValue_Addr); // // TODO(bill): is this correct behaviour for nil comparison for any? - // cgValue data = cg_emit_struct_ev(p, x, 0); - // cgValue ti = cg_emit_struct_ev(p, x, 1); - // if (op_kind == Token_CmpEq) { - // LLVMValueRef a = LLVMBuildIsNull(p->builder, data.value, ""); - // LLVMValueRef b = LLVMBuildIsNull(p->builder, ti.value, ""); - // res.value = LLVMBuildOr(p->builder, a, b, ""); - // return res; - // } else if (op_kind == Token_NotEq) { - // LLVMValueRef a = LLVMBuildIsNotNull(p->builder, data.value, ""); - // LLVMValueRef b = LLVMBuildIsNotNull(p->builder, ti.value, ""); - // res.value = LLVMBuildAnd(p->builder, a, b, ""); - // return res; - // } + cgValue data = cg_emit_struct_ev(p, x, 0); + cgValue id = cg_emit_struct_ev(p, x, 1); + + if (op_kind == Token_CmpEq) { + TB_Node *a = tb_inst_cmp_eq(p->func, data.node, tb_inst_uint(p->func, data.node->dt, 0)); + TB_Node *b = tb_inst_cmp_eq(p->func, id.node, tb_inst_uint(p->func, id.node->dt, 0)); + TB_Node *c = tb_inst_or(p->func, a, b); + return cg_value(c, t_bool); + } else if (op_kind == Token_NotEq) { + TB_Node *a = tb_inst_cmp_ne(p->func, data.node, tb_inst_uint(p->func, data.node->dt, 0)); + TB_Node *b = tb_inst_cmp_ne(p->func, id.node, tb_inst_uint(p->func, id.node->dt, 0)); + TB_Node *c = tb_inst_and(p->func, a, b); + return cg_value(c, t_bool); + } } break; case Basic_typeid: @@ -685,64 +686,33 @@ gb_internal cgValue cg_emit_comp_against_nil(cgProcedure *p, TokenKind op_kind, break; case Type_Slice: - { - GB_PANIC("TODO(bill): cg_emit_struct_ev"); - // cgValue data = cg_emit_struct_ev(p, x, 0); - // if (op_kind == Token_CmpEq) { - // res.value = LLVMBuildIsNull(p->builder, data.value, ""); - // return res; - // } else if (op_kind == Token_NotEq) { - // res.value = LLVMBuildIsNotNull(p->builder, data.value, ""); - // return res; - // } - } - break; - case Type_DynamicArray: - { - GB_PANIC("TODO(bill): cg_emit_struct_ev"); - // cgValue data = cg_emit_struct_ev(p, x, 0); - // if (op_kind == Token_CmpEq) { - // res.value = LLVMBuildIsNull(p->builder, data.value, ""); - // return res; - // } else if (op_kind == Token_NotEq) { - // res.value = LLVMBuildIsNotNull(p->builder, data.value, ""); - // return res; - // } - } - break; - case Type_Map: { - GB_PANIC("TODO(bill): cg_emit_struct_ev"); - // cgValue data_ptr = cg_emit_struct_ev(p, x, 0); - - // if (op_kind == Token_CmpEq) { - // res.value = LLVMBuildIsNull(p->builder, data_ptr.value, ""); - // return res; - // } else { - // res.value = LLVMBuildIsNotNull(p->builder, data_ptr.value, ""); - // return res; - // } + // NOTE(bill): all of their data "pointer-like" fields are at the 0-index + cgValue data = cg_emit_struct_ev(p, x, 0); + if (op_kind == Token_CmpEq) { + TB_Node *a = tb_inst_cmp_eq(p->func, data.node, tb_inst_uint(p->func, data.node->dt, 0)); + return cg_value(a, t_bool); + } else if (op_kind == Token_NotEq) { + TB_Node *a = tb_inst_cmp_ne(p->func, data.node, tb_inst_uint(p->func, data.node->dt, 0)); + return cg_value(a, t_bool); + } } break; case Type_Union: { - GB_PANIC("TODO(bill): cg_emit_struct_ev"); - // if (type_size_of(t) == 0) { - // if (op_kind == Token_CmpEq) { - // return cg_const_bool(p->module, t_bool, true); - // } else if (op_kind == Token_NotEq) { - // return cg_const_bool(p->module, t_bool, false); - // } - // } else if (is_type_union_maybe_pointer(t)) { - // cgValue tag = cg_emit_transmute(p, x, t_rawptr); - // return cg_emit_comp_against_nil(p, op_kind, tag); - // } else { - // cgValue tag = cg_emit_union_tag_value(p, x); - // return cg_emit_comp(p, op_kind, tag, cg_zero(p->module, tag.type)); - // } + if (type_size_of(t) == 0) { + return cg_const_bool(p, t_bool, op_kind == Token_CmpEq); + } else if (is_type_union_maybe_pointer(t)) { + cgValue tag = cg_emit_transmute(p, x, t_rawptr); + return cg_emit_comp_against_nil(p, op_kind, tag); + } else { + GB_ASSERT("TODO(bill): cg_emit_union_tag_value"); + // cgValue tag = cg_emit_union_tag_value(p, x); + // return cg_emit_comp(p, op_kind, tag, cg_zero(p->module, tag.type)); + } } break; case Type_Struct: @@ -1311,6 +1281,17 @@ handle_op:; } +gb_internal void cg_fill_slice(cgProcedure *p, cgAddr const &slice, cgValue data, cgValue len) { + cgValue slice_ptr = cg_addr_get_ptr(p, slice); + cgValue data_ptr = cg_emit_struct_ep(p, slice_ptr, 0); + cgValue len_ptr = cg_emit_struct_ep(p, slice_ptr, 1); + + data = cg_emit_conv(p, data, type_deref(data_ptr.type)); + len = cg_emit_conv(p, len, t_int); + cg_emit_store(p, data_ptr, data); + cg_emit_store(p, len_ptr, len); +} + gb_internal cgAddr cg_build_addr_slice_expr(cgProcedure *p, Ast *expr) { ast_node(se, SliceExpr, expr); @@ -1338,23 +1319,28 @@ gb_internal cgAddr cg_build_addr_slice_expr(cgProcedure *p, Ast *expr) { } switch (type->kind) { + case Type_Basic: case Type_Slice: { - // Type *slice_type = type; - // cgValue len = cg_slice_len(p, base); - // if (high.value == nullptr) high = len; + if (type->kind == Type_Basic) { + GB_ASSERT(type->Basic.kind == Basic_string); + } - // if (!no_indices) { - // cg_emit_slice_bounds_check(p, se->open, low, high, len, se->low != nullptr); - // } + Type *slice_type = type; + if (high.node == nullptr) { + cgValue len = cg_builtin_len(p, base); + high = len; + } - // cgValue elem = cg_emit_ptr_offset(p, cg_slice_elem(p, base), low); - // cgValue new_len = cg_emit_arith(p, Token_Sub, high, low, t_int); + if (!no_indices) { + // cg_emit_slice_bounds_check(p, se->open, low, high, len, se->low != nullptr); + } - // cgAddr slice = cg_add_local_generated(p, slice_type, false); - // cg_fill_slice(p, slice, elem, new_len); - // return slice; - GB_PANIC("cg_build_addr_slice_expr Type_Slice"); - break; + cgValue elem = cg_emit_ptr_offset(p, cg_builtin_raw_data(p, base), low); + cgValue new_len = cg_emit_arith(p, Token_Sub, high, low, t_int); + + cgAddr slice = cg_add_local(p, slice_type, nullptr, true); + cg_fill_slice(p, slice, elem, new_len); + return slice; } case Type_RelativeSlice: @@ -1414,46 +1400,24 @@ gb_internal cgAddr cg_build_addr_slice_expr(cgProcedure *p, Ast *expr) { } case Type_Array: { - // Type *slice_type = alloc_type_slice(type->Array.elem); - // lbValue len = lb_const_int(p->module, t_int, type->Array.count); - - // if (high.value == nullptr) high = len; + Type *slice_type = type_of_expr(expr); + GB_ASSERT(is_type_slice(slice_type)); + cgValue len = cg_const_int(p, t_int, type->Array.count); + if (high.node == nullptr) high = len; // bool low_const = type_and_value_of_expr(se->low).mode == Addressing_Constant; // bool high_const = type_and_value_of_expr(se->high).mode == Addressing_Constant; - // if (!low_const || !high_const) { // if (!no_indices) { // lb_emit_slice_bounds_check(p, se->open, low, high, len, se->low != nullptr); // } // } - // lbValue elem = lb_emit_ptr_offset(p, lb_array_elem(p, lb_addr_get_ptr(p, addr)), low); - // lbValue new_len = lb_emit_arith(p, Token_Sub, high, low, t_int); + cgValue elem = cg_emit_ptr_offset(p, cg_builtin_raw_data(p, cg_addr_get_ptr(p, addr)), low); + cgValue new_len = cg_emit_arith(p, Token_Sub, high, low, t_int); - // lbAddr slice = lb_add_local_generated(p, slice_type, false); - // lb_fill_slice(p, slice, elem, new_len); - // return slice; - GB_PANIC("cg_build_addr_slice_expr Type_Array"); - break; - } - - case Type_Basic: { - // GB_ASSERT(type == t_string); - // lbValue len = lb_string_len(p, base); - // if (high.value == nullptr) high = len; - - // if (!no_indices) { - // lb_emit_slice_bounds_check(p, se->open, low, high, len, se->low != nullptr); - // } - - // lbValue elem = lb_emit_ptr_offset(p, lb_string_elem(p, base), low); - // lbValue new_len = lb_emit_arith(p, Token_Sub, high, low, t_int); - - // lbAddr str = lb_add_local_generated(p, t_string, false); - // lb_fill_string(p, str, elem, new_len); - // return str; - GB_PANIC("cg_build_addr_slice_expr Type_Basic"); - break; + cgAddr slice = cg_add_local(p, slice_type, nullptr, true); + cg_fill_slice(p, slice, elem, new_len); + return slice; } @@ -1685,6 +1649,207 @@ gb_internal cgValue cg_emit_unary_arith(cgProcedure *p, TokenKind op, cgValue x, return res; } +gb_internal void cg_emit_if(cgProcedure *p, cgValue const &cond, TB_Node *true_region, TB_Node *false_region) { + GB_ASSERT(cond.kind == cgValue_Value); + tb_inst_if(p->func, cond.node, true_region, false_region); +} + +gb_internal void cg_build_try_lhs_rhs(cgProcedure *p, Ast *arg, Type *final_type, cgValue *lhs_, cgValue *rhs_) { + cgValue lhs = {}; + cgValue rhs = {}; + + cgValue value = cg_build_expr(p, arg); + if (value.kind == cgValue_Multi) { + auto const &values = value.multi->values; + if (values.count == 2) { + lhs = values[0]; + rhs = values[1]; + } else { + rhs = values[values.count-1]; + if (values.count > 1) { + lhs = cg_value_multi(slice(values, 0, values.count-1), final_type); + } + } + } else { + rhs = value; + } + + GB_ASSERT(rhs.node != nullptr); + + if (lhs_) *lhs_ = lhs; + if (rhs_) *rhs_ = rhs; +} + +gb_internal cgValue cg_emit_try_has_value(cgProcedure *p, cgValue rhs) { + cgValue has_value = {}; + if (is_type_boolean(rhs.type)) { + has_value = rhs; + } else { + GB_ASSERT_MSG(type_has_nil(rhs.type), "%s", type_to_string(rhs.type)); + has_value = cg_emit_comp_against_nil(p, Token_CmpEq, rhs); + } + GB_ASSERT(has_value.node != nullptr); + return has_value; +} + +gb_internal cgValue cg_build_or_return(cgProcedure *p, Ast *arg, Type *final_type) { + cgValue lhs = {}; + cgValue rhs = {}; + cg_build_try_lhs_rhs(p, arg, final_type, &lhs, &rhs); + + TB_Node *return_region = cg_control_region(p, "or_return_return"); + TB_Node *continue_region = cg_control_region(p, "or_return_continue"); + + cgValue cond = cg_emit_try_has_value(p, rhs); + cg_emit_if(p, cond, continue_region, return_region); + tb_inst_set_control(p->func, return_region); + { + Type *proc_type = base_type(p->type); + Type *results = proc_type->Proc.results; + GB_ASSERT(results != nullptr && results->kind == Type_Tuple); + TypeTuple *tuple = &results->Tuple; + + GB_ASSERT(tuple->variables.count != 0); + + Entity *end_entity = tuple->variables[tuple->variables.count-1]; + rhs = cg_emit_conv(p, rhs, end_entity->type); + if (p->type->Proc.has_named_results) { + GB_ASSERT(end_entity->token.string.len != 0); + + // NOTE(bill): store the named values before returning + cgAddr found = map_must_get(&p->variable_map, end_entity); + cg_addr_store(p, found, rhs); + + cg_build_return_stmt(p, {}); + } else { + GB_ASSERT(tuple->variables.count == 1); + Slice results = {}; + results.data = &rhs; + results.count = 1;; + cg_build_return_stmt_internal(p, results); + } + } + tb_inst_set_control(p->func, continue_region); + if (final_type != nullptr && !is_type_tuple(final_type)) { + return cg_emit_conv(p, lhs, final_type); + } + return {}; +} + +gb_internal cgValue cg_build_or_else(cgProcedure *p, Ast *arg, Ast *else_expr, Type *final_type) { + if (arg->state_flags & StateFlag_DirectiveWasFalse) { + return cg_build_expr(p, else_expr); + } + + cgValue lhs = {}; + cgValue rhs = {}; + cg_build_try_lhs_rhs(p, arg, final_type, &lhs, &rhs); + + GB_ASSERT(else_expr != nullptr); + + if (is_diverging_expr(else_expr)) { + TB_Node *then = cg_control_region(p, "or_else_then"); + TB_Node *else_ = cg_control_region(p, "or_else_else"); + + cg_emit_if(p, cg_emit_try_has_value(p, rhs), then, else_); + // NOTE(bill): else block needs to be straight afterwards to make sure that the actual value is used + // from the then block + tb_inst_set_control(p->func, else_); + + cg_build_expr(p, else_expr); + + tb_inst_set_control(p->func, then); + return cg_emit_conv(p, lhs, final_type); + } else { + TB_Node *incoming_values[2] = {}; + TB_Node *incoming_regions[2] = {}; + + TB_Node *then = cg_control_region(p, "or_else_then"); + TB_Node *done = cg_control_region(p, "or_else_done"); // NOTE(bill): Append later + TB_Node *else_ = cg_control_region(p, "or_else_else"); + + cg_emit_if(p, cg_emit_try_has_value(p, rhs), then, else_); + tb_inst_set_control(p->func, then); + + cgValue x = cg_emit_conv(p, lhs, final_type); + incoming_values[0] = x.node; + incoming_regions[0] = tb_inst_get_control(p->func); + + tb_inst_goto(p->func, done); + tb_inst_set_control(p->func, else_); + + cgValue y = cg_emit_conv(p, cg_build_expr(p, else_expr), final_type); + incoming_values[1] = y.node; + incoming_regions[1] = tb_inst_get_control(p->func); + + tb_inst_goto(p->func, done); + tb_inst_set_control(p->func, done); + + GB_ASSERT(x.kind == y.kind); + GB_ASSERT(incoming_values[0]->dt.raw == incoming_values[1]->dt.raw); + cgValue res = {}; + res.kind = x.kind; + res.type = final_type; + + res.node = tb_inst_incomplete_phi(p->func, incoming_values[0]->dt, done, 2); + tb_inst_add_phi_operand(p->func, res.node, incoming_regions[0], incoming_values[0]); + tb_inst_add_phi_operand(p->func, res.node, incoming_regions[1], incoming_values[1]); + return res; + } +} + + +gb_internal isize cg_control_region_pred_count(TB_Node *region) { + GB_ASSERT(region->type == TB_REGION); + GB_ASSERT(region->input_count > 0); + return region->input_count; +} + +gb_internal cgValue cg_build_logical_binary_expr(cgProcedure *p, TokenKind op, Ast *left, Ast *right, Type *final_type) { + TB_Node *rhs = cg_control_region(p, "logical_cmp_rhs"); + TB_Node *done = cg_control_region(p, "logical_cmp_done"); + + cgValue short_circuit = {}; + if (op == Token_CmpAnd) { + cg_build_cond(p, left, rhs, done); + short_circuit = cg_const_bool(p, t_bool, false); + } else if (op == Token_CmpOr) { + cg_build_cond(p, left, done, rhs); + short_circuit = cg_const_bool(p, t_bool, true); + } + + if (rhs->input_count == 0) { + tb_inst_set_control(p->func, done); + return cg_emit_conv(p, short_circuit, final_type); + } + + if (done->input_count == 0) { + tb_inst_set_control(p->func, rhs); + return cg_build_expr(p, right); + } + + tb_inst_set_control(p->func, rhs); + cgValue edge = cg_build_expr(p, right); + TB_Node *edge_region = tb_inst_get_control(p->func); + + tb_inst_goto(p->func, done); + tb_inst_set_control(p->func, done); + + TB_DataType dt = edge.node->dt; + TB_Node *phi = tb_inst_incomplete_phi(p->func, dt, done, done->input_count); + for (size_t i = 0; i < done->input_count; i++) { + TB_Node *val = short_circuit.node; + TB_Node *region = done->inputs[i]; + if (region == edge_region) { + val = edge.node; + } + tb_inst_add_phi_operand(p->func, phi, region, val); + } + return cg_emit_conv(p, cg_value(phi, t_bool), final_type); +} + + + gb_internal cgValue cg_build_binary_expr(cgProcedure *p, Ast *expr) { ast_node(be, BinaryExpr, expr); @@ -1786,8 +1951,7 @@ gb_internal cgValue cg_build_binary_expr(cgProcedure *p, Ast *expr) { case Token_CmpAnd: case Token_CmpOr: - GB_PANIC("TODO(bill): cg_emit_logical_binary_expr"); - // return cg_emit_logical_binary_expr(p, be->op.kind, be->left, be->right, tv.type); + return cg_build_logical_binary_expr(p, be->op.kind, be->left, be->right, tv.type); case Token_in: case Token_not_in: @@ -1896,15 +2060,14 @@ gb_internal cgValue cg_build_cond(cgProcedure *p, Ast *cond, TB_Node *true_block } else { v = cg_build_expr(p, cond); } - - GB_ASSERT(v.kind == cgValue_Value); - tb_inst_if(p->func, v.node, true_block, false_block); - + cg_emit_if(p, v, true_block, false_block); return v; } gb_internal cgValue cg_build_expr_internal(cgProcedure *p, Ast *expr); gb_internal cgValue cg_build_expr(cgProcedure *p, Ast *expr) { + cg_set_debug_pos_from_node(p, expr); + u16 prev_state_flags = p->state_flags; defer (p->state_flags = prev_state_flags); @@ -2003,6 +2166,468 @@ gb_internal cgValue cg_find_ident(cgProcedure *p, Entity *e, Ast *expr) { return {}; } +cgAddr cg_build_addr_compound_lit(cgProcedure *p, Ast *expr) { + struct cgCompoundLitElemTempData { + Ast * expr; + cgValue value; + i64 elem_index; + i64 elem_length; + cgValue gep; + }; + + + auto const &populate = [](cgProcedure *p, Slice const &elems, Array *temp_data, Type *compound_type) { + Type *bt = base_type(compound_type); + Type *et = nullptr; + switch (bt->kind) { + case Type_Array: et = bt->Array.elem; break; + case Type_EnumeratedArray: et = bt->EnumeratedArray.elem; break; + case Type_Slice: et = bt->Slice.elem; break; + case Type_BitSet: et = bt->BitSet.elem; break; + case Type_DynamicArray: et = bt->DynamicArray.elem; break; + case Type_SimdVector: et = bt->SimdVector.elem; break; + case Type_Matrix: et = bt->Matrix.elem; break; + } + GB_ASSERT(et != nullptr); + + + // NOTE(bill): Separate value, gep, store into their own chunks + for_array(i, elems) { + Ast *elem = elems[i]; + if (elem->kind == Ast_FieldValue) { + ast_node(fv, FieldValue, elem); + if (is_ast_range(fv->field)) { + ast_node(ie, BinaryExpr, fv->field); + TypeAndValue lo_tav = ie->left->tav; + TypeAndValue hi_tav = ie->right->tav; + GB_ASSERT(lo_tav.mode == Addressing_Constant); + GB_ASSERT(hi_tav.mode == Addressing_Constant); + + TokenKind op = ie->op.kind; + i64 lo = exact_value_to_i64(lo_tav.value); + i64 hi = exact_value_to_i64(hi_tav.value); + if (op != Token_RangeHalf) { + hi += 1; + } + + cgValue value = cg_emit_conv(p, cg_build_expr(p, fv->value), et); + + GB_ASSERT((hi-lo) > 0); + + if (bt->kind == Type_Matrix) { + GB_PANIC("TODO(bill): Type_Matrix"); + // for (i64 k = lo; k < hi; k++) { + // cgCompoundLitElemTempData data = {}; + // data.value = value; + + // data.elem_index = matrix_row_major_index_to_offset(bt, k); + // array_add(temp_data, data); + // } + } else { + enum {MAX_ELEMENT_AMOUNT = 32}; + if ((hi-lo) <= MAX_ELEMENT_AMOUNT) { + for (i64 k = lo; k < hi; k++) { + cgCompoundLitElemTempData data = {}; + data.value = value; + data.elem_index = k; + array_add(temp_data, data); + } + } else { + cgCompoundLitElemTempData data = {}; + data.value = value; + data.elem_index = lo; + data.elem_length = hi-lo; + array_add(temp_data, data); + } + } + } else { + auto tav = fv->field->tav; + GB_ASSERT(tav.mode == Addressing_Constant); + i64 index = exact_value_to_i64(tav.value); + + cgValue value = cg_emit_conv(p, cg_build_expr(p, fv->value), et); + GB_ASSERT(!is_type_tuple(value.type)); + + cgCompoundLitElemTempData data = {}; + data.value = value; + data.expr = fv->value; + if (bt->kind == Type_Matrix) { + GB_PANIC("TODO(bill): Type_Matrix"); + // data.elem_index = matrix_row_major_index_to_offset(bt, index); + } else { + data.elem_index = index; + } + array_add(temp_data, data); + } + + } else { + // if (bt->kind != Type_DynamicArray && lb_is_elem_const(elem, et)) { + // continue; + // } + + cgValue field_expr = cg_build_expr(p, elem); + GB_ASSERT(!is_type_tuple(field_expr.type)); + + cgValue ev = cg_emit_conv(p, field_expr, et); + + cgCompoundLitElemTempData data = {}; + data.value = ev; + if (bt->kind == Type_Matrix) { + GB_PANIC("TODO(bill): Type_Matrix"); + // data.elem_index = matrix_row_major_index_to_offset(bt, i); + } else { + data.elem_index = i; + } + array_add(temp_data, data); + } + } + }; + + auto const &assign_array = [](cgProcedure *p, Array const &temp_data) { + for (auto const &td : temp_data) if (td.value.node != nullptr) { + if (td.elem_length > 0) { + GB_PANIC("TODO(bill): range"); + // auto loop_data = cg_loop_start(p, cast(isize)td.elem_length, t_i32); + // { + // cgValue dst = td.gep; + // dst = cg_emit_ptr_offset(p, dst, loop_data.idx); + // cg_emit_store(p, dst, td.value); + // } + // cg_loop_end(p, loop_data); + } else { + cg_emit_store(p, td.gep, td.value); + } + } + }; + + + + ast_node(cl, CompoundLit, expr); + + Type *type = type_of_expr(expr); + Type *bt = base_type(type); + + cgAddr v = cg_add_local(p, type, nullptr, true); + + if (cl->elems.count == 0) { + // No need to create it + return v; + } + + TEMPORARY_ALLOCATOR_GUARD(); + + Type *et = nullptr; + switch (bt->kind) { + case Type_Array: et = bt->Array.elem; break; + case Type_EnumeratedArray: et = bt->EnumeratedArray.elem; break; + case Type_Slice: et = bt->Slice.elem; break; + case Type_BitSet: et = bt->BitSet.elem; break; + case Type_SimdVector: et = bt->SimdVector.elem; break; + case Type_Matrix: et = bt->Matrix.elem; break; + } + + String proc_name = {}; + if (p->entity) { + proc_name = p->entity->token.string; + } + TokenPos pos = ast_token(expr).pos; + + if (cl->elems.count == 0) { + } + + switch (bt->kind) { + default: GB_PANIC("Unknown CompoundLit type: %s", type_to_string(type)); break; + + case Type_Struct: { + TypeStruct *st = &bt->Struct; + cgValue comp_lit_ptr = cg_addr_get_ptr(p, v); + + for_array(field_index, cl->elems) { + Ast *elem = cl->elems[field_index]; + + cgValue field_expr = {}; + Entity *field = nullptr; + isize index = field_index; + + if (elem->kind == Ast_FieldValue) { + ast_node(fv, FieldValue, elem); + String name = fv->field->Ident.token.string; + Selection sel = lookup_field(bt, name, false); + GB_ASSERT(!sel.indirect); + + elem = fv->value; + if (sel.index.count > 1) { + cgValue dst = cg_emit_deep_field_gep(p, comp_lit_ptr, sel); + field_expr = cg_build_expr(p, elem); + field_expr = cg_emit_conv(p, field_expr, sel.entity->type); + cg_emit_store(p, dst, field_expr); + continue; + } + + index = sel.index[0]; + } else { + Selection sel = lookup_field_from_index(bt, st->fields[field_index]->Variable.field_index); + GB_ASSERT(sel.index.count == 1); + GB_ASSERT(!sel.indirect); + index = sel.index[0]; + } + + field = st->fields[index]; + Type *ft = field->type; + + field_expr = cg_build_expr(p, elem); + + cgValue gep = {}; + if (st->is_raw_union) { + gep = cg_emit_conv(p, comp_lit_ptr, alloc_type_pointer(ft)); + } else { + gep = cg_emit_struct_ep(p, comp_lit_ptr, cast(i32)index); + } + + Type *fet = field_expr.type; + GB_ASSERT(fet->kind != Type_Tuple); + + // HACK TODO(bill): THIS IS A MASSIVE HACK!!!! + if (is_type_union(ft) && !are_types_identical(fet, ft) && !is_type_untyped(fet)) { + GB_ASSERT_MSG(union_variant_index(ft, fet) >= 0, "%s", type_to_string(fet)); + + GB_PANIC("TODO(bill): cg_emit_store_union_variant"); + // cg_emit_store_union_variant(p, gep, field_expr, fet); + } else { + cgValue fv = cg_emit_conv(p, field_expr, ft); + cg_emit_store(p, gep, fv); + } + } + return v; + } + + // case Type_Map: { + // GB_ASSERT(!build_context.no_dynamic_literals); + + // cgValue err = cg_dynamic_map_reserve(p, v.addr, 2*cl->elems.count, pos); + // gb_unused(err); + + // for (Ast *elem : cl->elems) { + // ast_node(fv, FieldValue, elem); + + // cgValue key = cg_build_expr(p, fv->field); + // cgValue value = cg_build_expr(p, fv->value); + // cg_internal_dynamic_map_set(p, v.addr, type, key, value, elem); + // } + // break; + // } + + // case Type_Array: { + // cg_addr_store(p, v, cg_const_value(p->module, type, exact_value_compound(expr))); + + // auto temp_data = array_make(temporary_allocator(), 0, cl->elems.count); + + // populate(p, cl->elems, &temp_data, type); + + // cgValue dst_ptr = cg_addr_get_ptr(p, v); + // for_array(i, temp_data) { + // i32 index = cast(i32)(temp_data[i].elem_index); + // temp_data[i].gep = cg_emit_array_epi(p, dst_ptr, index); + // } + + // assign_array(p, temp_data); + // break; + // } + // case Type_EnumeratedArray: { + // cg_addr_store(p, v, cg_const_value(p->module, type, exact_value_compound(expr))); + + // auto temp_data = array_make(temporary_allocator(), 0, cl->elems.count); + + // populate(p, cl->elems, &temp_data, type); + + // cgValue dst_ptr = cg_addr_get_ptr(p, v); + // i64 index_offset = exact_value_to_i64(*bt->EnumeratedArray.min_value); + // for_array(i, temp_data) { + // i32 index = cast(i32)(temp_data[i].elem_index - index_offset); + // temp_data[i].gep = cg_emit_array_epi(p, dst_ptr, index); + // } + + // assign_array(p, temp_data); + // break; + // } + case Type_Slice: { + isize count = gb_max(cl->elems.count, cl->max_count); + + TB_CharUnits backing_size = cast(TB_CharUnits)(type_size_of(bt->Slice.elem) * count); + TB_CharUnits align = cast(TB_CharUnits)type_align_of(bt->Slice.elem); + TB_Node *backing = tb_inst_local(p->func, backing_size, align); + + cgValue data = cg_value(backing, alloc_type_multi_pointer(bt->Slice.elem)); + + auto temp_data = array_make(temporary_allocator(), 0, cl->elems.count); + populate(p, cl->elems, &temp_data, type); + + + for_array(i, temp_data) { + temp_data[i].gep = cg_emit_ptr_offset(p, data, cg_const_int(p, t_int, temp_data[i].elem_index)); + } + + assign_array(p, temp_data); + cg_fill_slice(p, v, data, cg_const_int(p, t_int, cl->max_count)); + return v; + } + + // case Type_DynamicArray: { + // GB_ASSERT(!build_context.no_dynamic_literals); + + // Type *et = bt->DynamicArray.elem; + // cgValue size = cg_const_int(p->module, t_int, type_size_of(et)); + // cgValue align = cg_const_int(p->module, t_int, type_align_of(et)); + + // i64 item_count = gb_max(cl->max_count, cl->elems.count); + // { + + // auto args = array_make(temporary_allocator(), 5); + // args[0] = cg_emit_conv(p, cg_addr_get_ptr(p, v), t_rawptr); + // args[1] = size; + // args[2] = align; + // args[3] = cg_const_int(p->module, t_int, item_count); + // args[4] = cg_emit_source_code_location_as_global(p, proc_name, pos); + // cg_emit_runtime_call(p, "__dynamic_array_reserve", args); + // } + + // cgValue items = cg_generate_local_array(p, et, item_count); + + // auto temp_data = array_make(temporary_allocator(), 0, cl->elems.count); + // populate(p, cl->elems, &temp_data, type); + + // for_array(i, temp_data) { + // temp_data[i].gep = cg_emit_array_epi(p, items, temp_data[i].elem_index); + // } + // assign_array(p, temp_data); + + // { + // auto args = array_make(temporary_allocator(), 6); + // args[0] = cg_emit_conv(p, v.addr, t_rawptr); + // args[1] = size; + // args[2] = align; + // args[3] = cg_emit_conv(p, items, t_rawptr); + // args[4] = cg_const_int(p->module, t_int, item_count); + // args[5] = cg_emit_source_code_location_as_global(p, proc_name, pos); + // cg_emit_runtime_call(p, "__dynamic_array_append", args); + // } + // break; + // } + + // case Type_Basic: { + // GB_ASSERT(is_type_any(bt)); + // cg_addr_store(p, v, cg_const_value(p->module, type, exact_value_compound(expr))); + // String field_names[2] = { + // str_lit("data"), + // str_lit("id"), + // }; + // Type *field_types[2] = { + // t_rawptr, + // t_typeid, + // }; + + // for_array(field_index, cl->elems) { + // Ast *elem = cl->elems[field_index]; + + // cgValue field_expr = {}; + // isize index = field_index; + + // if (elem->kind == Ast_FieldValue) { + // ast_node(fv, FieldValue, elem); + // Selection sel = lookup_field(bt, fv->field->Ident.token.string, false); + // index = sel.index[0]; + // elem = fv->value; + // } else { + // TypeAndValue tav = type_and_value_of_expr(elem); + // Selection sel = lookup_field(bt, field_names[field_index], false); + // index = sel.index[0]; + // } + + // field_expr = cg_build_expr(p, elem); + + // GB_ASSERT(field_expr.type->kind != Type_Tuple); + + // Type *ft = field_types[index]; + // cgValue fv = cg_emit_conv(p, field_expr, ft); + // cgValue gep = cg_emit_struct_ep(p, cg_addr_get_ptr(p, v), cast(i32)index); + // cg_emit_store(p, gep, fv); + // } + // break; + // } + + case Type_BitSet: { + i64 sz = type_size_of(type); + if (sz == 0) { + return v; + } + cgValue lower = cg_const_value(p, t_int, exact_value_i64(bt->BitSet.lower)); + Type *it = bit_set_to_int(bt); + cgValue one = cg_const_value(p, it, exact_value_i64(1)); + for (Ast *elem : cl->elems) { + GB_ASSERT(elem->kind != Ast_FieldValue); + + cgValue expr = cg_build_expr(p, elem); + GB_ASSERT(expr.type->kind != Type_Tuple); + + cgValue e = cg_emit_conv(p, expr, it); + e = cg_emit_arith(p, Token_Sub, e, lower, it); + e = cg_emit_arith(p, Token_Shl, one, e, it); + + cgValue old_value = cg_emit_transmute(p, cg_addr_load(p, v), it); + cgValue new_value = cg_emit_arith(p, Token_Or, old_value, e, it); + new_value = cg_emit_transmute(p, new_value, type); + cg_addr_store(p, v, new_value); + } + return v; + } + + // case Type_Matrix: { + // cg_addr_store(p, v, cg_const_value(p->module, type, exact_value_compound(expr))); + + // auto temp_data = array_make(temporary_allocator(), 0, cl->elems.count); + + // populate(p, cl->elems, &temp_data, type); + + // cgValue dst_ptr = cg_addr_get_ptr(p, v); + // for_array(i, temp_data) { + // temp_data[i].gep = cg_emit_array_epi(p, dst_ptr, temp_data[i].elem_index); + // } + + // assign_array(p, temp_data); + // break; + // } + + // case Type_SimdVector: { + // cgValue vector_value = cg_const_value(p->module, type, exact_value_compound(expr)); + // defer (cg_addr_store(p, v, vector_value)); + + // auto temp_data = array_make(temporary_allocator(), 0, cl->elems.count); + + // populate(p, cl->elems, &temp_data, type); + + // // TODO(bill): reduce the need for individual `insertelement` if a `shufflevector` + // // might be a better option + // for (auto const &td : temp_data) { + // if (td.value.value != nullptr) { + // if (td.elem_length > 0) { + // for (i64 k = 0; k < td.elem_length; k++) { + // LLVMValueRef index = cg_const_int(p->module, t_u32, td.elem_index + k).value; + // vector_value.value = LLVMBuildInsertElement(p->builder, vector_value.value, td.value.value, index, ""); + // } + // } else { + // LLVMValueRef index = cg_const_int(p->module, t_u32, td.elem_index).value; + // vector_value.value = LLVMBuildInsertElement(p->builder, vector_value.value, td.value.value, index, ""); + + // } + // } + // } + // break; + // } + } + + return v; +} + gb_internal cgValue cg_build_unary_and(cgProcedure *p, Ast *expr) { ast_node(ue, UnaryExpr, expr); auto tv = type_and_value_of_expr(expr); @@ -2020,12 +2645,12 @@ gb_internal cgValue cg_build_unary_and(cgProcedure *p, Ast *expr) { // GB_ASSERT(t->kind == Type_Map); // ast_node(ie, IndexExpr, ue_expr); - // lbValue map_val = lb_build_addr_ptr(p, ie->expr); + // cgValue map_val = cg_build_addr_ptr(p, ie->expr); // if (deref) { - // map_val = lb_emit_load(p, map_val); + // map_val = cg_emit_load(p, map_val); // } - // lbValue key = lb_build_expr(p, ie->index); + // cgValue key = lb_build_expr(p, ie->index); // key = lb_emit_conv(p, key, t->Map.key); // lbAddr addr = lb_addr_map(map_val, key, t, alloc_type_pointer(t->Map.value)); @@ -2053,18 +2678,8 @@ gb_internal cgValue cg_build_unary_and(cgProcedure *p, Ast *expr) { // return lb_make_soa_pointer(p, tv.type, addr, index); } else if (ue_expr->kind == Ast_CompoundLit) { - cgValue v = cg_build_expr(p, ue->expr); - - Type *type = v.type; - cgAddr addr = {}; - // if (p->is_startup) { - // addr = cg_add_global_generated(p->module, type, v); - // } else { - addr = cg_add_local(p, type, nullptr, false); - // } - cg_addr_store(p, addr, v); + cgAddr addr = cg_build_addr_compound_lit(p, expr); return addr.addr; - } else if (ue_expr->kind == Ast_TypeAssertion) { GB_PANIC("TODO(bill): &v.(T)"); // if (is_type_tuple(tv.type)) { @@ -2225,7 +2840,8 @@ gb_internal cgValue cg_build_expr_internal(cgProcedure *p, Ast *expr) { Type *type = type_of_expr(expr); GB_ASSERT_MSG(tv.mode != Addressing_Invalid, "invalid expression '%s' (tv.mode = %d, tv.type = %s) @ %s\n Current Proc: %.*s : %s", expr_to_string(expr), tv.mode, type_to_string(tv.type), token_pos_to_string(expr_pos), LIT(p->name), type_to_string(p->type)); - if (tv.value.kind != ExactValue_Invalid) { + if (tv.value.kind != ExactValue_Invalid && + expr->kind != Ast_CompoundLit) { // NOTE(bill): The commented out code below is just for debug purposes only // if (is_type_untyped(type)) { // gb_printf_err("%s %s : %s @ %p\n", token_pos_to_string(expr_pos), expr_to_string(expr), type_to_string(expr->tav.type), expr); @@ -2314,6 +2930,11 @@ gb_internal cgValue cg_build_expr_internal(cgProcedure *p, Ast *expr) { return cg_build_call_expr(p, expr); case_end; + case_ast_node(cl, CompoundLit, expr); + cgAddr addr = cg_build_addr_compound_lit(p, expr); + return cg_addr_load(p, addr); + case_end; + case_ast_node(te, TernaryIfExpr, expr); cgValue incoming_values[2] = {}; @@ -2413,6 +3034,14 @@ gb_internal cgValue cg_build_expr_internal(cgProcedure *p, Ast *expr) { case_ast_node(be, BinaryExpr, expr); return cg_build_binary_expr(p, expr); case_end; + + case_ast_node(oe, OrReturnExpr, expr); + return cg_build_or_return(p, oe->expr, tv.type); + case_end; + + case_ast_node(oe, OrElseExpr, expr); + return cg_build_or_else(p, oe->x, oe->y, tv.type); + case_end; } GB_PANIC("TODO(bill): cg_build_expr_internal %.*s", LIT(ast_strings[expr->kind])); return {}; @@ -2580,6 +3209,7 @@ gb_internal cgAddr cg_build_addr_index_expr(cgProcedure *p, Ast *expr) { // cgValue len = cg_builtin_len(p, slice); // cg_emit_bounds_check(p, ast_token(ie->index), index, len); cgValue v = cg_emit_ptr_offset(p, elem, index); + v.type = alloc_type_pointer(type_deref(v.type, true)); return cg_addr(v); } @@ -2592,7 +3222,9 @@ gb_internal cgAddr cg_build_addr_index_expr(cgProcedure *p, Ast *expr) { cgValue index = cg_build_expr(p, ie->index); index = cg_emit_conv(p, index, t_int); - return cg_addr(cg_emit_ptr_offset(p, multi_ptr, index)); + cgValue v = cg_emit_ptr_offset(p, multi_ptr, index); + v.type = alloc_type_pointer(type_deref(v.type, true)); + return cg_addr(v); } case Type_RelativeSlice: { @@ -2624,6 +3256,7 @@ gb_internal cgAddr cg_build_addr_index_expr(cgProcedure *p, Ast *expr) { // cgValue len = cg_dynamic_array_len(p, dynamic_array); // cg_emit_bounds_check(p, ast_token(ie->index), index, len); cgValue v = cg_emit_ptr_offset(p, elem, index); + v.type = alloc_type_pointer(type_deref(v.type, true)); return cg_addr(v); } @@ -2664,7 +3297,9 @@ gb_internal cgAddr cg_build_addr_index_expr(cgProcedure *p, Ast *expr) { index = cg_emit_conv(p, cg_build_expr(p, ie->index), t_int); // cg_emit_bounds_check(p, ast_token(ie->index), index, len); - return cg_addr(cg_emit_ptr_offset(p, elem, index)); + cgValue v = cg_emit_ptr_offset(p, elem, index); + v.type = alloc_type_pointer(type_deref(v.type, true)); + return cg_addr(v); } } return {}; @@ -2694,6 +3329,23 @@ gb_internal cgAddr cg_build_addr_internal(cgProcedure *p, Ast *expr) { return cg_build_addr_from_entity(p, e, expr); case_end; + case_ast_node(de, DerefExpr, expr); + Type *t = type_of_expr(de->expr); + if (is_type_relative_pointer(t)) { + cgAddr addr = cg_build_addr(p, de->expr); + addr.relative.deref = true; + return addr; + } else if (is_type_soa_pointer(t)) { + cgValue value = cg_build_expr(p, de->expr); + cgValue ptr = cg_emit_struct_ev(p, value, 0); + cgValue idx = cg_emit_struct_ev(p, value, 1); + GB_PANIC("TODO(bill): cg_addr_soa_variable"); + // return cg_addr_soa_variable(ptr, idx, nullptr); + } + cgValue addr = cg_build_expr(p, de->expr); + return cg_addr(addr); + case_end; + case_ast_node(ie, IndexExpr, expr); return cg_build_addr_index_expr(p, expr); case_end; @@ -2804,6 +3456,7 @@ gb_internal cgAddr cg_build_addr_internal(cgProcedure *p, Ast *expr) { if (sub_sel.index.count > 0) { item = cg_emit_deep_field_gep(p, item, sub_sel); } + item.type = alloc_type_pointer(type_deref(item.type, true)); return cg_addr(item); } else if (addr.kind == cgAddr_Swizzle) { GB_ASSERT(sel.index.count > 0); @@ -2821,6 +3474,23 @@ gb_internal cgAddr cg_build_addr_internal(cgProcedure *p, Ast *expr) { } case_end; + case_ast_node(ce, CallExpr, expr); + cgValue res = cg_build_expr(p, expr); + switch (res.kind) { + case cgValue_Value: + return cg_addr(cg_address_from_load_or_generate_local(p, res)); + case cgValue_Addr: + return cg_addr(res); + case cgValue_Multi: + GB_PANIC("cannot address a multi-valued expression"); + break; + } + case_end; + + case_ast_node(cl, CompoundLit, expr); + return cg_build_addr_compound_lit(p, expr); + case_end; + } TokenPos token_pos = ast_token(expr).pos; diff --git a/src/tilde_proc.cpp b/src/tilde_proc.cpp index 41c185dc6..610d715ae 100644 --- a/src/tilde_proc.cpp +++ b/src/tilde_proc.cpp @@ -86,6 +86,10 @@ gb_internal cgProcedure *cg_procedure_create(cgModule *m, Entity *entity, bool i } p->symbol = cast(TB_Symbol *)tb_extern_create(m->mod, link_name.len, cast(char const *)link_name.text, TB_EXTERNAL_SO_LOCAL); } + if (p->name == "main") { + // TODO(bill): figure out when this should be public or not + linkage = TB_LINKAGE_PUBLIC; + } if (p->symbol == nullptr) { p->func = tb_function_create(m->mod, link_name.len, cast(char const *)link_name.text, linkage, TB_COMDAT_NONE); @@ -97,9 +101,9 @@ gb_internal cgProcedure *cg_procedure_create(cgModule *m, Entity *entity, bool i p->symbol = cast(TB_Symbol *)p->func; } - cgValue proc_value = cg_value(p->symbol, p->type); - cg_add_entity(m, entity, proc_value); - cg_add_member(m, p->name, proc_value); + p->value = cg_value(p->symbol, p->type); + cg_add_entity(m, entity, p->value); + cg_add_member(m, p->name, p->value); cg_add_procedure_value(m, p); @@ -275,7 +279,9 @@ gb_internal void cg_procedure_begin(cgProcedure *p) { // } } - p->split_returns_index = param_index; + if (is_odin_like_cc) { + p->split_returns_index = param_index; + } if (pt->calling_convention == ProcCC_Odin) { // NOTE(bill): Push context on to stack from implicit parameter @@ -323,9 +329,15 @@ gb_internal void cg_procedure_end(cgProcedure *p) { return; } if (tb_inst_get_control(p->func)) { + GB_ASSERT(p->type->Proc.result_count == 0); tb_inst_ret(p->func, 0, nullptr); } bool emit_asm = false; + + if (string_starts_with(p->name, str_lit("bug@main"))) { + // emit_asm = true; + } + TB_FunctionOutput *output = tb_module_compile_function(p->module->mod, p->func, TB_ISEL_FAST, emit_asm); if (emit_asm) { TB_Assembly *assembly = tb_output_get_asm(output); @@ -336,45 +348,68 @@ gb_internal void cg_procedure_end(cgProcedure *p) { } } -gb_global String procedures_to_generate_list[] = { - str_lit("bug" ABI_PKG_NAME_SEPARATOR "main"), - str_lit("main"), -}; - gb_internal void cg_procedure_generate(cgProcedure *p) { if (p->body == nullptr) { return; } - bool build_body = false; - - if ( - string_starts_with(p->name, str_lit("runtime" ABI_PKG_NAME_SEPARATOR "_os_write")) || - // p->name == "bug" ABI_PKG_NAME_SEPARATOR "main" || - // p->name == "main" || - false - ) { - build_body = true; - } - - if (build_body) { - cg_procedure_begin(p); - cg_build_stmt(p, p->body); - } + cg_procedure_begin(p); + cg_build_stmt(p, p->body); cg_procedure_end(p); - if (build_body) { + if (string_starts_with(p->name, str_lit("bug@main"))) { // IR Printing TB_Arena *arena = tb_default_arena(); defer (arena->free(arena)); TB_FuncOpt *opt = tb_funcopt_enter(p->func, arena); defer (tb_funcopt_exit(opt)); tb_funcopt_print(opt); - - // GraphViz printing - // tb_function_print(p->func, tb_default_print_callback, stdout); + fprintf(stdout, "\n"); + } + if (false) { // GraphViz printing + tb_function_print(p->func, tb_default_print_callback, stdout); } } +gb_internal void cg_build_nested_proc(cgProcedure *p, AstProcLit *pd, Entity *e) { + GB_ASSERT(pd->body != nullptr); + cgModule *m = p->module; + auto *min_dep_set = &m->info->minimum_dependency_set; + + if (ptr_set_exists(min_dep_set, e) == false) { + // NOTE(bill): Nothing depends upon it so doesn't need to be built + return; + } + + // NOTE(bill): Generate a new name + // parent.name-guid + String original_name = e->token.string; + String pd_name = original_name; + if (e->Procedure.link_name.len > 0) { + pd_name = e->Procedure.link_name; + } + + + isize name_len = p->name.len + 1 + pd_name.len + 1 + 10 + 1; + char *name_text = gb_alloc_array(permanent_allocator(), char, name_len); + + i32 guid = cast(i32)p->children.count; + name_len = gb_snprintf(name_text, name_len, "%.*s" ABI_PKG_NAME_SEPARATOR "%.*s-%d", LIT(p->name), LIT(pd_name), guid); + String name = make_string(cast(u8 *)name_text, name_len-1); + + e->Procedure.link_name = name; + + cgProcedure *nested_proc = cg_procedure_create(p->module, e); + e->cg_procedure = nested_proc; + + cgValue value = nested_proc->value; + + cg_add_entity(m, e, value); + array_add(&p->children, nested_proc); + array_add(&m->procedures_to_generate, nested_proc); +} + + + gb_internal cgValue cg_find_procedure_value_from_entity(cgModule *m, Entity *e) { @@ -388,6 +423,7 @@ gb_internal cgValue cg_find_procedure_value_from_entity(cgModule *m, Entity *e) found = map_get(&m->values, e); rw_mutex_shared_unlock(&m->values_mutex); if (found) { + GB_ASSERT(found->node != nullptr); return *found; } @@ -408,9 +444,6 @@ gb_internal cgValue cg_build_call_expr(cgProcedure *p, Ast *expr) { GB_ASSERT(res.kind == cgValue_Multi); GB_ASSERT(res.multi->values.count == 2); return res.multi->values[0]; - // GB_ASSERT(is_type_tuple(res.type)); - // GB_ASSERT(res.type->Tuple.variables.count == 2); - // return cg_emit_struct_ev(p, res, 0); } return res; } @@ -470,8 +503,9 @@ gb_internal cgValue cg_emit_call(cgProcedure * p, cgValue value, Slice params[param_index++] = local; } } - for (cgValue arg : args) { - Type *param_type = param_entities[param_index]->type; + for_array(i, args) { + Type *param_type = param_entities[i]->type; + cgValue arg = args[i]; arg = cg_emit_conv(p, arg, param_type); arg = cg_flatten_value(p, arg); @@ -629,9 +663,7 @@ gb_internal cgValue cg_handle_param_value(cgProcedure *p, Type *parameter_type, if (p->entity != nullptr) { proc_name = p->entity->token.string; } - GB_PANIC("TODO(bill): cg_emit_source_code_location_as_global"); - // return cg_emit_source_code_location_as_global(p, proc_name, pos); - break; + return cg_emit_source_code_location_as_global(p, proc_name, pos); } case ParameterValue_Value: return cg_build_expr(p, param_value.ast_value); diff --git a/src/tilde_stmt.cpp b/src/tilde_stmt.cpp index 074d2674c..b25be089d 100644 --- a/src/tilde_stmt.cpp +++ b/src/tilde_stmt.cpp @@ -65,7 +65,7 @@ gb_internal cgValue cg_emit_load(cgProcedure *p, cgValue const &ptr, bool is_vol return cg_value(tb_inst_load(p->func, dt, the_ptr, alignment, is_volatile), type); } -gb_internal void cg_emit_store(cgProcedure *p, cgValue dst, cgValue const &src, bool is_volatile) { +gb_internal void cg_emit_store(cgProcedure *p, cgValue dst, cgValue src, bool is_volatile) { GB_ASSERT_MSG(dst.kind != cgValue_Multi, "cannot store to multiple values at once"); if (dst.kind == cgValue_Addr) { @@ -122,10 +122,14 @@ gb_internal void cg_emit_store(cgProcedure *p, cgValue dst, cgValue const &src, return; } + switch (dst.kind) { case cgValue_Value: - switch (dst.kind) { + switch (src.kind) { case cgValue_Value: + if (src.node->dt.type == TB_INT && src.node->dt.data == 1) { + src.node = tb_inst_zxt(p->func, src.node, dt); + } tb_inst_store(p->func, dt, dst.node, src.node, alignment, is_volatile); return; case cgValue_Addr: @@ -367,8 +371,7 @@ gb_internal cgValue cg_emit_ptr_offset(cgProcedure *p, cgValue ptr, cgValue inde Type *elem = type_deref(ptr.type, true); i64 stride = type_size_of(elem); - ptr.node = tb_inst_array_access(p->func, ptr.node, index.node, stride); - return ptr; + return cg_value(tb_inst_array_access(p->func, ptr.node, index.node, stride), alloc_type_pointer(elem)); } gb_internal cgValue cg_emit_array_ep(cgProcedure *p, cgValue s, cgValue index) { GB_ASSERT(s.kind == cgValue_Value); @@ -383,8 +386,7 @@ gb_internal cgValue cg_emit_array_ep(cgProcedure *p, cgValue s, cgValue index) { Type *elem = base_array_type(st); i64 stride = type_size_of(elem); - s.node = tb_inst_array_access(p->func, s.node, index.node, stride); - return s; + return cg_value(tb_inst_array_access(p->func, s.node, index.node, stride), alloc_type_pointer(elem)); } gb_internal cgValue cg_emit_array_epi(cgProcedure *p, cgValue s, i64 index) { return cg_emit_array_ep(p, s, cg_const_int(p, t_int, index)); @@ -425,7 +427,7 @@ gb_internal cgValue cg_emit_struct_ep(cgProcedure *p, cgValue s, i64 index) { case Type_Slice: switch (index) { case 0: - result_type = alloc_type_pointer(t->Slice.elem); + result_type = alloc_type_multi_pointer(t->Slice.elem); offset = 0; break; case 1: @@ -439,7 +441,7 @@ gb_internal cgValue cg_emit_struct_ep(cgProcedure *p, cgValue s, i64 index) { case Basic_string: switch (index) { case 0: - result_type = t_u8_ptr; + result_type = t_u8_multi_ptr; offset = 0; break; case 1: @@ -494,7 +496,7 @@ gb_internal cgValue cg_emit_struct_ep(cgProcedure *p, cgValue s, i64 index) { case Type_DynamicArray: switch (index) { case 0: - result_type = alloc_type_pointer(t->DynamicArray.elem); + result_type = alloc_type_multi_pointer(t->DynamicArray.elem); offset = index*int_size; break; case 1: case 2: @@ -564,6 +566,14 @@ gb_internal cgValue cg_emit_struct_ep(cgProcedure *p, cgValue s, i64 index) { ); } + +gb_internal cgValue cg_emit_struct_ev(cgProcedure *p, cgValue s, i64 index) { + s = cg_address_from_load_or_generate_local(p, s); + cgValue ptr = cg_emit_struct_ep(p, s, index); + return cg_flatten_value(p, cg_emit_load(p, ptr)); +} + + gb_internal cgValue cg_emit_deep_field_gep(cgProcedure *p, cgValue e, Selection const &sel) { GB_ASSERT(sel.index.count > 0); Type *type = type_deref(e.type); @@ -1008,6 +1018,110 @@ gb_internal void cg_build_assign_stmt(cgProcedure *p, AstAssignStmt *as) { } } +gb_internal void cg_build_return_stmt_internal(cgProcedure *p, Slice const &results) { + TypeTuple *tuple = &p->type->Proc.results->Tuple; + isize return_count = p->type->Proc.result_count; + + if (return_count == 0) { + tb_inst_ret(p->func, 0, nullptr); + return; + } + + if (p->split_returns_index >= 0) { + GB_ASSERT(is_calling_convention_odin(p->type->Proc.calling_convention)); + + for (isize i = 0; i < return_count-1; i++) { + Entity *e = tuple->variables[i]; + TB_Node *ret_ptr = tb_inst_param(p->func, cast(int)(p->split_returns_index+i)); + cgValue ptr = cg_value(ret_ptr, alloc_type_pointer(e->type)); + cg_emit_store(p, ptr, results[i]); + } + + if (p->return_by_ptr) { + Entity *e = tuple->variables[return_count-1]; + TB_Node *ret_ptr = tb_inst_param(p->func, 0); + cgValue ptr = cg_value(ret_ptr, alloc_type_pointer(e->type)); + cg_emit_store(p, ptr, results[return_count-1]); + + tb_inst_ret(p->func, 0, nullptr); + return; + } else { + GB_ASSERT(p->proto->return_count == 1); + TB_DataType dt = TB_PROTOTYPE_RETURNS(p->proto)->dt; + + cgValue result = results[return_count-1]; + result = cg_flatten_value(p, result); + TB_Node *final_res = nullptr; + if (result.kind == cgValue_Addr) { + TB_CharUnits align = cast(TB_CharUnits)type_align_of(result.type); + final_res = tb_inst_load(p->func, dt, result.node, align, false); + } else { + GB_ASSERT(result.kind == cgValue_Value); + TB_DataType st = result.node->dt; + GB_ASSERT(st.type == dt.type); + if (st.raw == dt.raw) { + final_res = result.node; + } else if (st.type == TB_INT && st.data == 1) { + final_res = tb_inst_zxt(p->func, result.node, dt); + } else { + final_res = tb_inst_bitcast(p->func, result.node, dt); + } + } + GB_ASSERT(final_res != nullptr); + + tb_inst_ret(p->func, 1, &final_res); + return; + } + + } else { + GB_ASSERT(!is_calling_convention_odin(p->type->Proc.calling_convention)); + + if (p->return_by_ptr) { + Entity *e = tuple->variables[return_count-1]; + TB_Node *ret_ptr = tb_inst_param(p->func, 0); + cgValue ptr = cg_value(ret_ptr, alloc_type_pointer(e->type)); + cg_emit_store(p, ptr, results[return_count-1]); + + tb_inst_ret(p->func, 0, nullptr); + return; + } else { + GB_ASSERT(p->proto->return_count == 1); + TB_DataType dt = TB_PROTOTYPE_RETURNS(p->proto)->dt; + if (results.count == 1) { + cgValue result = results[0]; + result = cg_flatten_value(p, result); + + TB_Node *final_res = nullptr; + if (result.kind == cgValue_Addr) { + TB_CharUnits align = cast(TB_CharUnits)type_align_of(result.type); + final_res = tb_inst_load(p->func, dt, result.node, align, false); + } else { + GB_ASSERT(result.kind == cgValue_Value); + TB_DataType st = result.node->dt; + GB_ASSERT(st.type == dt.type); + if (st.raw == dt.raw) { + final_res = result.node; + } else if (st.type == TB_INT && st.data == 1) { + final_res = tb_inst_zxt(p->func, result.node, dt); + } else { + final_res = tb_inst_bitcast(p->func, result.node, dt); + } + } + + GB_ASSERT(final_res != nullptr); + + tb_inst_ret(p->func, 1, &final_res); + return; + } else { + GB_ASSERT_MSG(results.count == 1, "TODO(bill): multi-return values for the return"); + return; + } + } + + } +} + + gb_internal void cg_build_return_stmt(cgProcedure *p, Slice const &return_results) { TypeTuple *tuple = &p->type->Proc.results->Tuple; isize return_count = p->type->Proc.result_count; @@ -1048,54 +1162,7 @@ gb_internal void cg_build_return_stmt(cgProcedure *p, Slice const &return results[i] = cg_emit_conv(p, results[i], e->type); } - - if (p->split_returns_index >= 0) { - GB_ASSERT(is_calling_convention_odin(p->type->Proc.calling_convention)); - - for (isize i = 0; i < return_count-1; i++) { - Entity *e = tuple->variables[i]; - TB_Node *ret_ptr = tb_inst_param(p->func, cast(int)(p->split_returns_index+i)); - cgValue ptr = cg_value(ret_ptr, alloc_type_pointer(e->type)); - cg_emit_store(p, ptr, results[i]); - } - - if (p->return_by_ptr) { - Entity *e = tuple->variables[return_count-1]; - TB_Node *ret_ptr = tb_inst_param(p->func, 0); - cgValue ptr = cg_value(ret_ptr, alloc_type_pointer(e->type)); - cg_emit_store(p, ptr, results[return_count-1]); - - tb_inst_ret(p->func, 0, nullptr); - return; - } else { - GB_ASSERT(p->proto->return_count == 1); - TB_DataType dt = TB_PROTOTYPE_RETURNS(p->proto)->dt; - - cgValue result = cg_flatten_value(p, results[0]); - TB_Node *final_res = nullptr; - if (result.kind == cgValue_Addr) { - TB_CharUnits align = cast(TB_CharUnits)type_align_of(result.type); - final_res = tb_inst_load(p->func, dt, result.node, align, false); - } else { - GB_ASSERT(result.kind == cgValue_Value); - if (result.node->dt.raw == dt.raw) { - final_res = result.node; - } else { - final_res = tb_inst_bitcast(p->func, result.node, dt); - } - } - GB_ASSERT(final_res != nullptr); - - tb_inst_ret(p->func, 1, &final_res); - return; - } - - } else { - GB_ASSERT(!is_calling_convention_odin(p->type->Proc.calling_convention)); - } - - - GB_PANIC("TODO(bill): %.*s MUTLIPLE RETURN VALUES %td %td", LIT(p->name), results.count, return_results.count); + cg_build_return_stmt_internal(p, slice_from_array(results)); } gb_internal void cg_build_if_stmt(cgProcedure *p, Ast *node) { @@ -1673,13 +1740,7 @@ gb_internal void cg_build_stmt(cgProcedure *p, Ast *node) { // TODO(bill): check if last instruction was a terminating one or not - { - TokenPos pos = ast_token(node).pos; - TB_FileID *file_id = map_get(&p->module->file_id_map, cast(uintptr)pos.file_id); - if (file_id) { - tb_inst_set_location(p->func, *file_id, pos.line); - } - } + cg_set_debug_pos_from_node(p, node); u16 prev_state_flags = p->state_flags; defer (p->state_flags = prev_state_flags); @@ -1838,7 +1899,7 @@ gb_internal void cg_build_stmt(cgProcedure *p, Ast *node) { case_end; case_ast_node(rs, RangeStmt, node); - GB_PANIC("TODO(bill): cg_build_range_stmt"); + GB_PANIC("TODO(bill): cg_build_range_stmt %.*s", LIT(p->name)); // cg_build_range_stmt(p, rs, rs->scope); case_end; @@ -1879,13 +1940,115 @@ gb_internal void cg_build_stmt(cgProcedure *p, Ast *node) { } } +gb_internal void cg_build_constant_value_decl(cgProcedure *p, AstValueDecl *vd) { + if (vd == nullptr || vd->is_mutable) { + return; + } + + auto *min_dep_set = &p->module->info->minimum_dependency_set; + + static i32 global_guid = 0; + + for (Ast *ident : vd->names) { + GB_ASSERT(ident->kind == Ast_Ident); + Entity *e = entity_of_node(ident); + GB_ASSERT(e != nullptr); + if (e->kind != Entity_TypeName) { + continue; + } + + bool polymorphic_struct = false; + if (e->type != nullptr && e->kind == Entity_TypeName) { + Type *bt = base_type(e->type); + if (bt->kind == Type_Struct) { + polymorphic_struct = bt->Struct.is_polymorphic; + } + } + + if (!polymorphic_struct && !ptr_set_exists(min_dep_set, e)) { + continue; + } + + if (e->TypeName.ir_mangled_name.len != 0) { + // NOTE(bill): Already set + continue; + } + + cg_set_nested_type_name_ir_mangled_name(e, p); + } + + for_array(i, vd->names) { + Ast *ident = vd->names[i]; + GB_ASSERT(ident->kind == Ast_Ident); + Entity *e = entity_of_node(ident); + GB_ASSERT(e != nullptr); + if (e->kind != Entity_Procedure) { + continue; + } + GB_ASSERT (vd->values[i] != nullptr); + + Ast *value = unparen_expr(vd->values[i]); + if (value->kind != Ast_ProcLit) { + continue; // It's an alias + } + + DeclInfo *decl = decl_info_of_entity(e); + ast_node(pl, ProcLit, decl->proc_lit); + if (pl->body != nullptr) { + GenProcsData *gpd = e->Procedure.gen_procs; + if (gpd) { + rw_mutex_shared_lock(&gpd->mutex); + for (Entity *e : gpd->procs) { + if (!ptr_set_exists(min_dep_set, e)) { + continue; + } + DeclInfo *d = decl_info_of_entity(e); + cg_build_nested_proc(p, &d->proc_lit->ProcLit, e); + } + rw_mutex_shared_unlock(&gpd->mutex); + } else { + cg_build_nested_proc(p, pl, e); + } + } else { + + // FFI - Foreign function interace + String original_name = e->token.string; + String name = original_name; + + if (e->Procedure.is_foreign) { + GB_PANIC("cg_add_foreign_library_path"); + // cg_add_foreign_library_path(p->module, e->Procedure.foreign_library); + } + + if (e->Procedure.link_name.len > 0) { + name = e->Procedure.link_name; + } + + cgValue *prev_value = string_map_get(&p->module->members, name); + if (prev_value != nullptr) { + // NOTE(bill): Don't do mutliple declarations in the IR + return; + } + + e->Procedure.link_name = name; + + cgProcedure *nested_proc = cg_procedure_create(p->module, e); + + cgValue value = p->value; + + array_add(&p->module->procedures_to_generate, nested_proc); + array_add(&p->children, nested_proc); + string_map_set(&p->module->members, name, value); + } + } +} + gb_internal void cg_build_stmt_list(cgProcedure *p, Slice const &stmts) { for (Ast *stmt : stmts) { switch (stmt->kind) { case_ast_node(vd, ValueDecl, stmt); - // TODO(bill) - // cg_build_constant_value_decl(p, vd); + cg_build_constant_value_decl(p, vd); case_end; case_ast_node(fb, ForeignBlockDecl, stmt); ast_node(block, BlockStmt, fb->body);