Caml1999T031 v]r}v<&CSEgenР$Mach$Mach1asmcomp/CSEgen.mlSS@@ 0@@@@@@%arrayH8@@M@A@A@@@@@@&_none_@@A@@@ $boolE8@@%false^@@ @$true_@@@@@A@@@@@@A@$charB8@@@A@@@@@@A@#exnG8@@AA@@@@@@@@5extension_constructorP8@@@A@@@@@ @@@%floatD8@@@A@@@@@$@@@*floatarrayQ8@@@A@@@@@(@@@#intA8@@@A@@@@@,@A@%int32L8@@@A@@@@@0@@@%int64M8@@@A@@@@@4@@@&lazy_tN8@@O@A@A@Y@@@@@=@@@$listI8@@P@A"[]a@@J@"::b@@@Q@@W@ @@A@Y@@@@@Z@@@)nativeintK8@@@A@@@@@^@@@&optionJ8@@S@A$Nonec@@k@$Somed@@r@@@A@Y@@@@@u@@@&stringO8@@@A@@@@@y@@@$unitF8@@"()`@@@@@A@@@@@@A@ .Assert_failure\ p@@@@Jm@@@@@@V@@A=ocaml.warn_on_literal_pattern@@0Division_by_zeroY @@@A  @+End_of_fileX !@@@A@'FailureU )@%@@A@0Invalid_argumentT 2@.@@A$#@-Match_failureR ;@:67@@\@@Aʠ21@ )Not_foundV I@@@AҠ:9@-Out_of_memoryS Q@@@AڠBA@.Stack_overflowZ Y@@@A⠰JI@.Sys_blocked_io[ a@@@A꠰RQ@)Sys_errorW i@e@@A󠰠[Z@:Undefined_recursive_module] r@qmn@@c@@Aih@ %bytesC8@@@A@@@@@@@@&Stdlib@@@@A054455555@4C@@=S<@@=@0:99:::::@8@@A(&valnumAIUJU@@8@@@A@@@@@@@RUSU@@A@eE@@Aг #int\U @@0XWWXXXXX@$8@@@A!@@B@B@@@@@@@@@@ @@@@@0dccddddd@/@@A((op_classBsYtY@@8@@'Op_pure@@}Z~Z@@G-Op_checkbound@@[.0[.?@@H'Op_load(Asttypes,mutable_flag@@@@@\xz\x@@I(Op_store,r@@@@@]]@@J(Op_other-@@^^@@K@@A@@@@@Y@@@@F@??Z=@@@@@@<<[.2:@@@@=@99\x|\x@@г;(Asttypes;\x9@@C0@f8@@@A@@@@@$@@@"@@>@@@@@@<<]]@@г>$bool]?@@E@@@@@B@>>^<@@@@?@@A@;@@;>@0@@@A(#rhs.Cdd@@8@@@A )operation@@@ՠ@@@@@@@@@@@@dd@@@@"L@@AВгdd@@0@L,8@@@A3@@D@D@@@@@@@@@@ @@г%%array0d!@г)&valnum8d9d@@1@@@6,@@@@"-@@/@@/.@098899999@ @@)EquationsDIfJf @@Б'Rhs_mapEXgYg%@@гР+#Map$Makehh(,ih(4@@ 0gffggggg@Ozt@@@#Ord9+Stdlib__Map+OrderedType#key:@8@@@A!t@@@+@@@@'map.mlig78g78*@@@@oA@!t;@8!a@*@A@A@I@B@@@F ; ?F ; J@@@@$DA@%empty<!a@)@@@(@#I  $I  @@6E@(is_empty=@!a@'@@@&$boolE@@@%@@$@<L  =L  @@OF@#mem>@T@@@#@3!a@"@@@!@@@ @@@@@YO  ZO  $@@lG@#add?@@@@@!a@@U @@@Y @@@@@@@@@@wS  xS  @@H@&update@@;@@@@@&optionJ!a@@@@  @@@@@@@@@@@@@@@@@@ @\dh\d@@I@)singletonA@g@@@ @!a@ @@@ @@ @@@ii9@@J@&removeB@@@@@!a@@@@@@@@@@@@oo@@K@%mergeC@@@@@@`!a@@@@@k!b@@@@t!c@@@@@@@@@@@@@@@@@@@@@@@@@@@@vxb@@)L@%unionD@@@@@@!a@@ @@@@@@@@@@@@@@!@@@%@@@@@@@@@@C48D4y@@VM@'compareE@@!a@@#intA@@@@@@@@D@@@@J@@@@@@@@@@@@@lm@@N@%equalF@@!a@@I@@@@@@@@k@@@@q@@@Y@@@@@@@@@@X\X@@O@$iterG@@Y@@@@!a@$unitF@@@@@@@@@@@ @@@@@@@@@@P@$foldH@@@@@@!a@@!b@@@@@@@@@@@@  @@@@@@@ @@Q@'for_allI@@@@@@!a@@@@@@@@@ߠ @@@@@@@@@@@ @@R@&existsJ@@@@@@!a@@@@@@@@@ @@@@@@@@@@@%&@@8S@&filterK@@@@@@!a@@@@@@@@@' @@@+@@@@@@@@I@DJ@s@@\T@*filter_mapL@@@@@@!a@֠!b@@@@@@@@@P@@@T@@@@@@@@rs@@U@)partitionM@@8@@@@!a@R@@@@@@@@t @@@{@@@@@@@@@@@@@!!!!@@V@(cardinalN@!a@@@@[@@@@@@"""# @@W@(bindingsO@!a@@@@$listI@@@@@@@@@@@#]#a#]#@@X@+min_bindingP@Ǡ!a@@@@@@@ @@@@@$$$$@@Y@/min_binding_optQ@!a@~@@@z@@@}@@|@@@{@@z@%%%%@@"Z@+max_bindingR@!a@x@@@y@@@w @@v@@u@)&l&p*&l&@@<[@/max_binding_optS@!a@s@@@t@@@r@@q@@@p@@o@H''I''L@@[\@&chooseT@9!a@m@@@n@@@l @@k@@j@b''c''@@u]@*choose_optU@S!a@h@@@i5@@@g@@f@@@e@@d@((()@@^@%splitV@E@@@c@w!a@_@@@b @@@^@@@`@@@a@@]@@\@@[@ )) )* @@_@$findW@o@@@Z@!a@X@@@Y@@W@@V@++++@@`@(find_optX@@@@U@!a@S@@@TR @@@R@@Q@@P@,7,;,7,a@@a@*find_firstY@@@@@O@@@N@@M@ܠ!a@K@@@L@@@J @@I@@H@@G@ -- --6@@b@.find_first_optZ@@@@@F@@@E@@D@!a@B@@@C@@@A@@@@@@?@@>@@=@/-//!0-//_@@Bc@)find_last[@@@@@< @@@;@@:@+!a@8@@@9 @@@7 @@6@@5@@4@T40W0[U40W0@@gd@-find_last_opt\@@@@@3.@@@2@@1@P!a@/@@@02@@@.@@-@@@,@@+@@*@~;1v1z;1v1@@e@#map]@@!a@(!b@&@@)@{ @@@' @@@%@@$@@#@C22C22@@f@$mapi^@@c@@@"@!a@!b@@@!@@ @ @@@ @@@@@@@@J44J44I@@g@&to_seq_@!a@@@@&Stdlib#Seq!t@@@@@@@@@@@P44P45#@@h@*to_rev_seq`@נ!a@@@@%#Seq!t@@@@@@@@@@@T5y5} T5y5@@i@+to_seq_froma@@@@ @!a@ @@@ L#Seq!t@@@ @@ @@@@@@@@/X560X562@@Bj@'add_seqb@f#Seq!t@@@!a@@@@@@@5 @@@9@@@@@@@@W]66X]66@@jk@&of_seqc@#Seq!t%@@@!a@@@@@@[@@@@@@ya7M7Qza7M7v@@l@@@@@БA(!t/Fh(Ah(B@@8@@@A#@@@@@@@h(<h(H@@@@,M@@Aг #rhs#h(E @@0@8@@@A!@@G@G@@@@@@@@@@ @@@@@0+**+++++@@@@ࠠ'compare0@N@@0xwwxxxxx@1G@@h(5h(i@ 0~}}~~~~~@@@@@h(j@ fG8@@@Az@@@ Q@ I@@@@ @@@A@gG8@A@A@@@@@@A@h @@@ R@@@i@ @@@ U@@@ T@@ S@@@j@,@@@ Z@@@@ Y@@@ X@@ W@@ V@@@k@@@@ `@@2@@@ _6@@@ ^@@ ]@@ \@@ [@@@l@(@@@ i@@Ҡ@@@ hˠ@@@ g@@ f@Q@@@ eU@@@ d@@ c@@ b@@ a@@@m@G@@@ m@d@@@ l@@ k@@ j@@@n@V@@@ r@s@@@ qw@@@ p@@ o@@ n@@@o@@k@@@ @@@@ ~@@@@ }@@@ |@@ {@@ z@@ y@@@@ x@@@@ w@@@ v@@ u@@ t@@ s@@@p@@@@@ @@@@@ @@ @@ @@ @@@@ @@@@ Š@@@ @@ @@ @@ @@@q@@@@@@ @@ @@ @ؠ@@@ @ޠ@@@ @@@ @@ @@ @@ @@@r@@@@@@ @@ @@ @@@@ @@@@ @@@ @@ @@ @@ @@@~s@@@@@ @}y@@@ @@ @@ @@@@ v@@@ @@ @@ @u@r@qt@@ @@@ @p@ll@@ @@ @@ @+w@@@ @tt@@ @@ @@ @h@e@du@@!@@@ @c_@@@ @@ @@ @Ck@@@ ^@@@ @@ @@ @]@Z@Yv@@:@@@ @XT@@@ @@ @@ @\`@@@ S@@@ @@ @@ @R@O@Nw@@S@@@ @MI@@@ @@ @@ @uU@@@ yY@@@ @@ @@ @H@E@Dx@@m@@@ @C?>@@@ @@ @@ @L@@@ H@@@ @@ @@ @:@7@6y@@@@@ @51@@@ @@ @@ @=@@@ D@@@ РI@@@ @@ @@ @@ @0@-@,z@+@@@ '@@@ @@ @&@#@"{@͠!@@@ @@@ ݠ,@@ @@@ @@ @@@|@@@@ @@@ @@ @@ @@@ }@ @@@ @@@ @@ @@@ @@ @@@~@@@@ @@@  @@ @@ @@@@@@@  @@@ @@ @@@ @@ @@@@.@@@ @@@ @@ @@ @@@@?@@@ 1@@@ @@ @@@ @@ @@@@<@@@ @Y@@@ `@@@ ؠ@@@ j@@@ @@ @@ @@ @@@@\@@@ @y@@@ @@ @@ @@@@k@@@ @@@@ Š@@@ @@ @@ @@@@@@@@ @@@ @@ @@@@ @@@ @@ @@ @@ @@@@@@@@ @@@ @@ @@@@ @@@ @@ @@@ @@ @@ @@@@@@@@ #@@@ "@@ !@ڠ@@@ @@@ @@ @@ @@ @@@@@@@@ ,@@@ +@@ *@@@@ )@@@ (@@ '@@@ &@@ %@@ $@@@@@@@ 1@@@@ 0@@@ /@@ .@@ -@@@@@@@@ 8@@@ 7@@ 6@%@@@ 5)@@@ 4@@ 3@@ 2@@}@|@3{@@@ =wts'@@@ <@@ ;@@@ :@@ 9@r@o@n@Jm@@@ Bih>@@@ Az@@ @@@@ ?@@ >@g@d@c@I@@@ I@fb@@@ H^]Z@@@ Go@@ F@@@ E@@ D@@ C@\@Y@X@WVm@@@ PU@@ O@@@ N@[@@@ M_@@@ L@@ K@@ J@Q@N@M@LK@@@ UJ@@ T@@@ SN@@@ R@@ Q@F@C@@@@ Fg@@ŠA(!tH Qjlv Rjlw@А!a@0 V U U V V V V V@  @A@A@@@@@@{z@nm@]\@43@@@@@@@@ml@TS@43@)(@@@@@@@@@@ts@[Z@>=@%$@@@@@@@@@@o Oh8@@@A@A@G@B@@@ jln l@@@@ P@@ jls jlu@@BA@8m@A6mutable_load_equations@ {!tzJ@@@@ kz kz@@ Q/other_equations @ !tJ@@@@ l l@@ R@@A@I@@@@@/@@@,@%% kz@@Ш@г('Rhs_map* kz kz@А!a/ kz kz@@@8 @@;@J@@2@..$ l@@Ш@г1'Rhs_map3 l.@А!a7 l l@@@@6@@C@J@@:@@A@c@@cb@0        @@@@ࠠ%empty  +n ,n@@@@@@@I@0 1 0 0 1 1 1 1 1@u@@@ຠ,t {@@v@@,hg@A@A^@[@Ao@l6mutable_load_equations Go Ho@డ %empty'Rhs_map So To @  ̠ @@@@ @   @@0@@J@J@ J@/@%/other_equations kp  lp  @డ %empty'Rhs_map wp # xp 0@$@@OI@"@@J@&J@)J@'N@@@ o p 2@@YQ@@ n@@@T@ࠠ#add  r4: r4=@@@@ 2@@@DI@+@R .@@@I@1@o@I@7@ @@@I@=I@@@@I@>@@?I@8@@9I@2@@3I@,@@-I@*0        @@@ S@@@@(op_class  r4> r4F@@@90        @E r46 x 6@@@@@@"op r4G r4I@@@B0        @ O@@ U@@@@@!v r4J r4K@@@I0        @V@@ V@@@@@!mr4Lr4M@@@S0@]@@W@@@@ఐI(op_classsPZsPb@/@@~0@f@@.X@@@Ġ'Op_load(thn)thu@8 @@@@ A@CB@A @@ Ġ'Mutable6thv7th}@8'Mutable(Asttypes,mutable_flag@@@@@@AB@@A4parsing/asttypes.mligWugW~@@@ S@@@@ @@L@H2@@@%@@3@@3@@ຠ6mutable_load_equationsVuWu@డ #add'Rhs_mapdvev@@@@@@ @ @@@ @@@@@@@@@@ {@ x@@@@@K@Z@I@NI@X@0 @@K@Y4 @@K@W@K@V@K@U@K@Tt@@ఐ"opvv@@@@@ఐ!vvv@@@@@ఐ!mvv@@@@6mutable_load_equationsvv@ @@lE@@L@hL@vL@s@@c @@L@@K@RK@xK@g@@@J@J@|@ఐܠ!muu@Ű@@+@uv@@(I@J@@ww@@S@@S@@ຠ,II@@@J@J@/other_equationsx x @డ #add'Rhs_mapx x @@@@l@@K@@&I@I@I@@ˠ @@K@Ϡ@@K@@K@@K@@K@@@ఐR"op3x 4x @:@@@@ఐN!v@x !Ax "@6@@)@@ఐL!mOx #Px $@5@@8@/other_equationsVx %Wx 4@ @@G@@L@L@L@G@@S @@NL@@@K@K@K@R@@ఐq!mtxux@Z@@]@xx@@I@I@c@@A~sPT@@I@Bg@@A{A@I@<0~~@z@@@@AA@I@60@@@@@AA@I@00@@@@@AA@@@@0@@@@@@@Π@ࠠ$findz 8 >z 8 B@@@@@@@I@@@@@I@@@@I@@@@I@@@I@@@I@@@I@0@1+@,@T@@@@(op_classz 8 Cz 8 K@@@-0@9z 8 :  @@@@@@"opz 8 Lz 8 N@@@70@ C@@Z@@@@@!mz 8 Oz 8 P@@@?0@K@@ [@@@@ఐ8(op_class{ S ]{ S e@@@a0@R@@\@@@Ġ'Op_load| k q| k x@Ġ'Mutable| k y| k @@@@@@@L@@@@@@@@@@డ $find'Rhs_map/}  0}  @@@@@@ @@@ @@@@@ @ @@@@@J@@I@$I@I@I@I@@@J@ @J@@J@M@@ఐ"op\}  ]}  @g@@Z@@ఐ}!mk}  l}  @f@@i@6mutable_load_equationsr}  s}  @8 @@#4@@K@K@K@x@@O @@4y@@~  ~  @@@@@@డ9$find'Rhs_map    @c@@@@@J@@FUI@@@J@@J@@J@@@ఐΠ"op    @@@@@ఐ̠!m    @@@@/other_equations  @ @@q+@@K@K@K@@@:@@@@A{ S W@@@@AA@I@0@@@@@AA@*I@0@@@@@A A@@50@@*0@@@@@@@@ࠠ4remove_mutable_loadsA  A  @@@@@4I@D@@@EI@,Ƞ@@@6I@-@@.I@+0@=e_@`@Y@@@@!m A   A  @@@ 0@,A  C 4 _@@@@@ຠۡ6mutable_load_equationsB  B  "@డ%empty'Rhs_map(B  %)B  2@հ@@e>@@J@8J@;J@90.--.....@'3I@*@G^@@@/other_equations=C 4 :>C 4 I@ఐB!mHC 4 LIC 4 M@@@^@/other_equationsOC 4 NPC 4 ]@ @@{gI@=@@J@AJ@FJ@C)@@@]B  L@@hI@1-@@AWOA@@vm@@H0^]]^^^^^@V@@@@T@TS@i@@@#@@A@E@@r@@@]@@0onnooooo@y@@wfxD ` c@0uttuuuuu@@@@@|f@@A()numberingIF e jF e s@@8@@(num_next@;@@@IG v zG v @@a'num_eqs@[!t~c@@@a@@@c@@@eH  H  @@b'num_regb@#Reg#Map!t{@@@r@@@tI  I  @@c@@A@@@@@F e eI  @@@@`@@@;G v @@Ш@гC#intG v G v @@K0@p@@ \ [A@ T SA@ Q P@ J I@ ? >@ . -@  @@@@@@|{@ba@KJ@65@@@@@@@@@wv@hg@UT@FE@32@@@@@@@@{z@fe@QP@<;@"!@@@@@@vA@u@{@A@_@@@ơR_8@@@A@@@@@}@@@z@@lk@@@K@Jl@@JH  @@Ш@г)EquationsTH  UH  @г%array]H  ^H  @г&valnumfH  gH  @@@@@ @@@@@@K@f@@qI  @@Ш@г#Reg|I  @г&valnumI  I  @@@@@@@@K@u@@@A@@@@0@@@@ࠠ/empty_numberingcK K OK K ^@@@@@@J@0@@@@ະ, @@@@@,@A@A@,@B@A@@A@(num_nextL a eL a m@@L a pL a q@@/@@K@K@K@!@'num_eqsL a sL a z@డ%empty)EquationsL a }L a @@@@O@@  @@FCB@@K@@@K@@@K@K@K@L@A'num_regL a L a @డA#Map%empty#RegL a L a @#Reg#Map!t!a@j@@@n@'map.mliI  I  @@+Stdlib__MapE@@kd@@K@@@K@K@K@@@@&L a c'L a @@@@)K K K@@@*ocaml.text Generate a fresh value number [v] and associate it to register [r]. Returns a pair [(n',v)] with the updated value numbering [n']. :N  ;O  4@@@@@@076677777@@@Pd@@@ࠠ0fresh_valnum_regdKQ 6 :LQ 6 J@@@@@@@$J@@Y#key@@@J@@@@!J@ @@@%J@@@J@@@J@@@J@6@@!nf|Q 6 K}Q 6 L@@@-0zyyzzzzz@D9Q 6 6S i @@@@@@!rgQ 6 MQ 6 N@@@70@ C@@f@@@@@ࠠ!vhR Q WR Q X@@@@@@K@0@#P@@g@@@ఐ=!nR Q [R Q \@#@@f@(num_nextR Q ]R Q e@ @@@@R Q S@@ະ"(num_nextS i tS i |@డ!+S i S i @@ @@@@ @@@ @@@@@@@'%addintBA @@@@ [5:5: [5:5h@@ p@@@@@K@@@@K@@@K@@K@@K@0@[hb@c@h@@@@ఐp!vS i S i @@@:@@L@L@L@@@A!S i "S i @@D@@L@L@L@(@@ @@@@K@K@L@0@@@J@ @@J@@@J@J@'num_regGS i HS i @డ#Map#add#RegXS i YS i @@@@@|@!a@\@d @@@{h @@@z@@y@@x@@w@]S  ^S  @@\H@@@@@K@@@@K@ K@@ @@K@@@K@@K@@K@@K@@@ఐ !rS i S i @@@=@@ఐ!vS i S i @@@)K@@@ఐ:!nS i S i @ @@c@'num_regS i S i @ @@G@@L@L@ L@ @@m @@@@K@@@K@K@K@@@ఐ`!nS i mS i n@F@@@S i lS i @@w@ఐF!vS i S i @@@z@@S i kg@@@J@&@0l@@J@J@@AdoA@J@0@c@@@@A{sA@@@@*0@z@@@@x@xw@@ࠠ1array_fold_transfiW  W  @@@@@@@@C@!a@J@0@@@Bf@@@J@2@@A@@@@@?J@,@@@@J@L@'J@U@@@ZJ@R@@@f&(J@`@@@g@@eJ@S@@TJ@M@@NJ@-@@.J@+0JIIJJJJJ@ @@ce@@@@!fk@]W  ^W  @@@P@@@H@OI@@@GH@@F@@E@@D0hgghhhhh@lqW  raZj@@@@@б@гi)numberingW  W  @@q@@@/@@б@АnsW  W  @@Вгp)numberingW  W  @@x@@@1.@@А!b{3W  W  @@@@@3:@@@@@4=  @@@+@@5@. @@W  W  @@@D@@@!nlW  W  @@@0@Rkb@e@j@@@@@!am@W  W  @@@@@[0@!@@k@@@  @ г%arrayW  W  %@А!aW  W  @@@@@@W @@W  W  &@@@ @@డ%Array&lengthY V ^Y V j@@%arrayH!a@@@@#intA@@@@@-%array_lengthAA @@@)array.mliaa@@-Stdlib__ArrayA"!@@@J@J@@@K@@@K@@K@0)(()))))@]lc@f@Bl@@@@ఐt!a<Y V k=Y V l@@@>@@L@L@L@@@H @@8@@@@@SZ r vTZ r w@@G@@L@L@0UTTUUUUU@,@@@ @@@ఐ!neZ r |fZ r }@@@:@@lZ r mZ r @@%LJ@@@J@@@uZ r {vZ r @@L@@J@76@@J@@J@J@*@A[  [  @@@@L@L@0@e@@@ @@@@ࠠ"n'[  [  @@@@@@K@O@ࠠ!b[  [  @@@J@J@\@@[  [  @@ @@c@ఐm!f[  [  @@@@@@K@@@@K@@K@@K@@K@}@@ఐ*!n[  [  @@@@@డ%Array#get[  [  A@!a@@@@@@@@ @@@@/%array_safe_getBA@@@@d::d:r@@BA@@@@L@@@@L@@L@@L@@@ఐ^!a3&[  @5@@4@@M@ M@ M@ @@@7[  8[  @@:@@M@ M@M@@@NM@@@@|N@@K@@@E[  R@@ఐ"n'P[  Q[  @@@dm@@'@@J@J@0UTTUUUUU@. @@on@@@ఐ!bj[  k[  @@@@@n[  o[  @@'@@J@@@u[  v[  @@% @J@!@7@@J@$@ࠠ!l\  \  @@@{@@@`@@~@@K@c@@@ࠠ!b\  \  @@@@@@:K@,@@@6K@&0@}("@#@o@@@డ}%Array$make\  \  @@@@@@!a@)@@@@@@@.caml_make_vectBA@@@@uu@@D@@@@@K@-@:>=@@K@+@K@*@K@)8@@ఐd!l\  \  @B@@4@@L@7L@9L@8L@@@\  \  @@YU@@F@@`V@@\  @ࠠ!n \   \  @@@#refJ@zK@?@@@DK@'p@డ#ref#\  $\  @@!a@@@@q@@p,%makemutableAAɠ@@@,,,X@@Ұ@@@%,(@@K@>@K@=@@ఐ!nI\  J\  @w@@@@*@@>@@N\  @@!iY]  Z]  @@@@@`]  a]  @@@@K@HK@G0baabbbbb@@@|pf`@a@~q@@@డ@@k@@J@ A@@A~A@J@0@}@@@@AA@@@@V0@@@@@@@  [valnum_reg n r] returns the value number for the contents of register [r]. If none exists, a fresh value number is returned and associated with register [r]. The possibly updated numbering is also returned. [valnum_regs] is similar, but for an array of registers. fj@@@@@@0@@@ u@@@ࠠ*valnum_regll@@@@ s@@@J@X@@@@J@^J@d g@@@|J@e@@fJ@_@@`J@Y@@ZJ@W0@@!n1l2l@@@'0/../////@>38l9p!9@@@@@@!rDlEl@@@10BAABBBBB@ =@@[y@@@@ఐ*!nWnXn@@@M0UTTUUUUU@ G@@nz@@@డ #Map$find#Regnnon@@ @@@!@ t!a@@@@ @@@@@ m++ n++@@ l`@@@ *@@J@l@ mJ@j@@J@k@J@i@J@h8@@ఐ\!rnn@B@@E@@ఐ~!nnn@d@@T@'num_regnn @  @@ -@@K@uK@~K@{c@@P @@/d@@nn @@6@J@k@Ġ)Not_foundo o @8)Not_found#exnG@@@@@@ A@A&_none_@@A@@kI@@@@*@@M@@@ఐ 0fresh_valnum_regp!%p!5@@@@ S@@K@@ @@K@ ^@@K@ o@@K@@K@@K@@K@@@ఐޠ!n p!6 p!7@İ@@@@ఐؠ!rp!8@@@@@1@@J@J@@@ m@@J@c@@AA@J@]0!  !!!!!@@@@@AA@@@@0%$$%%%%%@@@@@@@5@ࠠ+valnum_regs7r;?8r;J@@@@@@@J@@ @@@J@@@@J@'@@@ݠ @@@K@@@@@@J@@@J@@@J@0_^^_____@nd^@_@xx@@@@!nrr;Ksr;L@@@70pooppppp@Cyr;;zsRu@@@@@@"rsr;Mr;O@@@A0@ M@@|@@@@ఐ1array_fold_transfsRTsRe@T@@@@@@J@@U@@J@Ơ@@J@@J@@J@@J@@}@@J@@xi@@J@@@J@t@@J@@J@@J@@J@@J@0@:F}@=@}@@@@ఐɠ*valnum_regsRfsRp@k@@@ 8@@K@@ |@@K@  #@@K@@K@@K@@K@"@@ఐ!nsRqsRr@e@@/@@ఐy"rssRs@8@@;@@h@@J@>@@A{A@J@0@z@@@@AA@@@@ 0@@@@@@@@ࠠ-find_equationxx@@@@~@@@ 0J@ @ @@@!CJ@ @ Y@@@ /J@   @@@!B@@@!AJ@ @@@ J@ @@ J@ @@ J@ @@ J@ 0>==>>>>>@ @ @W{@@@@(op_classQxRx@@@:0ONNOOOOO@FXxY|jr@@@@@@!ndxex@@@D0baabbbbb@ P@@{@@@@@#rhsuxvx@@@L0srrsssss@X@@@@@@@ภ$Somez&*z&.@8R@@T@A@AA@A]@@డN$find)Equationsz&/z&=@@@@@]@t@@@\@ Ѡ@@@[@@Z@@Y@@X@ @ @@@@@J@ !@@@J@ @ J@ @@J@ @J@ @J@ @J@ 0@GS@J@A@@@@ఐ(op_classz&>z&F@e@@@@ఐh#rhsz&Gz&J@@@@@ఐ!nz&Kz&L@p@@-@'num_eqsz&Mz&T@ F @@ >@@K@ .K@!DK@!@<@@vz&U@@A>@@y@@Ƞ@@J@ C@Ġ)Not_found {V] {Vf@<@@@@X@@M@!IQ@@ภ$None|jn@8@@@@AA@A@@@@@J@!NJ@!K_@@y "@@J@ c@@AA@J@ 0@@@@@AA@J@ 0#""#####@@@@@AA@@ @@!V0'&&'''''@@@@@@@렰@ࠠ3find_reg_containing9:@@@@ @@@!J@!X@ @@@!J@!^ @@@!J@!@@@!J@!_@@!`J@!Y@@!ZJ@!W0TSSTTTTT@LF@G@m~@@@@!ngh@@@*0eddeeeee@6no )@@@@@@!vz{@@@40xwwxxxxx@ @@@C@@@@డ #Map$fold#Reg@@@ :@@@@!a@@!b@@@@@@@@ @@@@  @@@@@@@   @@ Q#"@@@@ Z@@J@!n@sJ@!j@qJ@!h@J@!m@J@!l@J@!k@  @@J@!i@  @J@!g@J@!f@J@!e0@MY@P@D@@@@@!r@@@ @@L@!@@@"v'@@@5J@!J@!0@)! @@@!@@ E@@@@@#res  @@@J@!0        @'@@ F@@@@డ!=  @@!a@@$boolE@@@'@@&@@%&%equalBA@@@@yy@@Q@@@D@F@@K@!@K@!@K@!0 3 2 2 3 3 3 3 3@2@6@7@ LG@@@@ఐ`"v' F G@?@@\@@ఐݠ!v S T@@@ @@@@ *@@K@!L@!%@ภ$Some c d@ߠఐ!r m n@|@@8@@@@!9@ఐ{#res y z @A@@wD@ }@@yJ@!G@@A~A@@6J@!8J@!@K@!K@!0        @@@@@AA@@@@K@!@K@!K@!0        @@@@@A   @@@ ;@@K@!@@@K@!@K@!@K@!~K@!0        @@@@@ఐI!n    @/@@o@'num_reg    $@  @@ @@K@!}K@!K@!@@ภ$None  %Y@@Z@@{J@!@@<]@@~J@!c/@@AU`A@J@!]0        @T@@@@AldA@@@@!0        @k@@@@i@ih@~@ࠠ4find_regs_containing nr n@@@@O@@@$J@!@ <@@@$J@$@@@$J@!ʠ  @@@"NJ@!@@@!J@!@@@!J@!@@!J@!@@!J@!0! ! ! ! ! ! ! ! @@@!#B@@@@!n!n!n@@@70!!!!!!!!@C!$nn!%`l@@@@@@"vs!0n!1n@@@A0!.!-!-!.!.!.!.!.@ M@@!GI@@@@డ %Array&length!E!F@ E@@@ E\J@$J@"J@"J@!@@K@! E@@K@!@K@!0!S!R!R!S!S!S!S!S@&2i@)@!lJ@@@@ఐ:"vs!f!g@@@w@@%@@ Z@@@!@@!u!v@@ i@@L@!L@!0!w!v!v!w!w!w!w!w@$@@@ @@@ภ$Some!!@@!!@@@@ @@J@!@A!!@@ @@L@!L@!0!!!!!!!!@E@@@ @@@ఐp3find_reg_containing!!@@@@@@K@"@@@K@"\@@K@"@@K@"@K@"@K@" @@ఐ!n!!@@@-@@డ   堡  !!A A@@ @@L@"@ @@L@"@L@"@L@"G@@ఐ "vs!@@@S@@@!!@@ @@M@"'M@"+M@"*c@@+*@@d@@Y+@@͠@@@"@@@"l@Ġ$None""@@@@@@@M@"6@@M@"5@@@@ภ$None"#"$ @@@@+J@"EJ@"B@Ġ$Some"4 "5 @ࠠ!r "= "> @@@@@@"=@@@@@@@M@"?@@M@">@@@@ภ$Some"Q ""R &@͠ఐ!!r"^ )"_ *@!@"@"rK@@Y0"^"]"]"^"^"^"^"^@ ,@@@@"f '"g ,@@hJ@"MJ@"I @@@@IJ@"JJ@"G@@A"r"s-9@@NJ@!@ࠠ!l":>":?@@@ s@@@!.@@ v@@K@!1@@@ࠠ"rs":G":I@@@ !t@@@$^K@$P@@@$ZK@$K0""""""""@L)#@$@"P@@@డ!v%Array$make":L":V@ @@@ @@K@$Q@" %@@K@$O@K@$N@K@$M@@ఐK!l":W":X@(@@ @@L@$[L@$]L@$\2@@డ$%dummy#Reg":Y":b@H@@@@/asmcomp/reg.mliE = =E = I@@\  @@QK@@< @@WL@@":C@@!i"y"y@@@@@#y#y@@"G@@K@$bK@$a0########@i~x@y@#Q@@@డ!  #y#y@ @@@ @@K@$h@ @@K@$g @@K@$f@K@$e@K@$d@@ఐ!l#1y#2y@@@ @@L@$tL@$vL@$u0@@A#By#Cy@@ @@L@$sL@$xL@$w@@@ @@"@@K@$zL@$rF@@ఐ#3find_reg_containing#\#]@M@@@@@M@$@@@M@$4@@M@$@@M@$@M@$@M@$0#k#j#j#k#k#k#k#k@f{ @@K@$K@$K@${@#{y#|%@@#R@@@@ఐo!n##@U@@@@డ"]    ##A A@@ @@N@$@ @@N@$@N@$@N@$5@@ఐ"vs#@V@@A@@ఐ!i##@K@@KN@@('@@O@@d(@@f@@@$@@@$W@Ġ$None##@@@@@z@@O@$@@O@$0########@k@@@ @@@డ"%raise##@@@@@!a@@@&%raiseAA@@@^BB^Bg@@@@@@@@M@$ @@K@%FL@$L@$|L@$M@$@M@$0@@ภ$Exit$$@8$ExitG@@@ @@@ A@AD@@D@  @@7@@N@$N@$I@@@@@#J@Ġ$Some$/$0@ࠠ!r$8$9@@@@@@$@@@@@ @@O@$@@O@$@@@@డ# _  ] $O $PA A@@ @@M@$M@$@@M@$@ x@@M@$@  @@M@$@M@$@M@$@M@$0$b$a$a$b$b$b$b$b@5/@0@${S@@@@ఐ⠐"rs&$u @i(@@ Π'@@N@$N@$N@$@@ఐ!i$$@@@%@@ఐ^!r$G@.H@@?1@@JI@@L@$4@@A$M@@@#@ @@J@%IK@%G0$$$$$$$$@@@@ภ$Some$'2$'6@%ఐ "rs$'7$'9@@@J@%N@@@@J@%K@@J@%M@E @@@Ġ$Exit$:H$:L@@@@@$@@M@%S,@@ภ$None$P[$P_@@@@J@%LJ@%XJ@%U;@@$fo@@&=@@@J@$J?@@A$@@J@!j@@AA@J@!0$$$$$$$$@@@@@AA@@@@%c0$$$$$$$$@@@@@@@࠰@ࠠ-set_known_reg$$@@@@g@@@%J@%e@@@@%J@%k@X@@@%J@%q~@@@%J@%r@@%sJ@%l@@%mJ@%f@@%gJ@%d0%%%%%%%%@A;@<@%1H@@@@!n%+%,@@@-0%)%(%(%)%)%)%)%)@9%2%3@@@@@@!r%>%?@@@70%<%;%;%<%<%<%<%<@ C@@%UU@@@@@!v%O%P@@@?0%M%L%L%M%M%M%M%M@K@@%fV@@@@ະ@@J@%J@%ɠƠ@@J@%@@J@%@@J@%J@%ġ'num_reg%u%v@డ#Map#add#Reg%%@.@@@.@@K@%@J@%J@%J@%@ @@K@%@@K@%@K@%@K@%@K@%0%%%%%%%%@NZ@Q@%W@@@@ఐs!r%%@[@@@@ఐo!v%%@@@@@ఐ!n%%@@@-@'num_reg%%@& @@ӠJ@@L@%L@%L@%<@@V @@-@@K@%K@%K@%E@@ఐŠ!n%%@@@P@%@@J@%vT@@AA@J@%p0%%%%%%%%@@@@@AA@J@%j0%%%%%%%%@@@@@AA@@@@%0%%%%%%%%@@@@@@@㠰@ࠠ+array_fold2& & @@@@@@@%J@&=@@@&@@@@&CJ@&DA@&EJ@&AA@&BJ@&>A@&?J@%@J@%@=J@&U@@@&aJ@%@I"J@&h@@@&tJ@%/@@%J@%@@%J@%@@%J@%@@%J@%0&B&A&A&B&B&B&B&B@+SM@N@&[T@@@@!f&U&V@@@F0&S&R&R&S&S&S&S&S@R&\&],0@@@@@@!n&h&i@@@=0&f&e&e&f&f&f&f&f@ \@@&Y@@@@@"a1&y&z@@@I0&w&v&v&w&w&w&w&w@Q@@&Z@@@@@"a2&&@@@N0&&&&&&&&@]@@&[@@@@@ࠠ!l&&@@@@@@%K@%0&&&&&&&&@#g@@&\@@@డ%v%Array&length&&@@@@J@%@@K@%@@K@%@K@%@@ఐV"a1&&@>@@+@@@@/,@@&@@డ%Ƞʰ&&@ǰ@@@@@K@%K@%@@@K@%@K@%@K@%0&&&&&&&&@JWQ@R@']@@@@ఐ_!l&&@@@@@డ%%Array&length' ' @ @@@ J@%@@L@%@@L@%@L@%.@@ఐ"a2'$'%@@@;@@@@FM@%>@@'+',@@@@K@%L@%F@'3@@ @@J@&K@%M@@ࠠ!n'C'D@@@97J@&@@@& K@&0'I'H'H'I'I'I'I'I@b@@@డ&#ref'X'Y@5@@@N@@K@&@K@&@@ఐ!n'k'l@@@@ @@@@'!@@'p@@!i'{'|@@@@@''@@&@@K@&K@&0''''''''@LF@G@'^@@@డ&[!''@@@@@@K@&@@@K@&@@K@&@K@&@K@&@@ఐ!l''@ð@@:@@L@&!L@&#L@&"0@@A' ' @@D@@L@& L@&%L@&$@@@ @@' @@K@&'L@&F@@డ&  ''@ @@@͠J@&.@@L@&/@ @@L@&-@L@&,@L@&+0''''''''@^s@@K@&sK@&vK@&(@''*@@(_@@@@ఐ!n''@u@@)@@M@&9M@&;M@&:#@@ఐĠ!f((@@@2@@డ&(#($@@@@J@&H@@N@&I@N@&GG@@ఐ!n(7@@@.@@O@&NO@&PO@&O[@@ @@\@@డ'^]\_(N(OA[A@@[@@N@&W@V@@N@&V$@N@&T@N@&Sv@@ఐ"a1(f@ذ@@5@@ఐ!i(r(s@@@@@('@@>@@డ'H((%AA@@F@@N@&j@@@N@&iL@N@&g@N@&f@@ఐ"a2(!@@@]@@ఐ-!i(#($@@@@@('@@f@@(@@@@)@@@@K@&{L@&8@@@@J@&~K@&|0((((((((@-@@@డ'(,.(,/@@@@J@%J@&@@J@&@J@&@@ఐ!nx@Jy@@ˠ@@K@&K@&K@&(@@ @@)@@@*@q@@@@@@@@@@@AZA@J@%0((((((((@Y@@@@AoA@J@%0((((((((@n@@@@AA@J@%0((((((((@@@@@AA@@@@&0((((((((@@@@@@@@ࠠ.set_known_regs(26)2D@@@@l@@@&J@&@@@@&J@&@@@&J@&@(h@@@&J@&@@@&J@&#J@&@@&J@&@@&J@&@@&J@&0)&)%)%)&)&)&)&)&@& @!@)?X@@@@!n)92E):2F@@@60)7)6)6)7)7)7)7)7@B)@22)AOr@@@@@@"rs)L2G)M2I@@@@0)J)I)I)J)J)J)J)J@ L@@)ca@@@@@"vs)]2J)^2L@@@B0)[)Z)Z)[)[)[)[)[@T@@)tb@@@@ఐb+array_fold2)mOQ)nO\@B@@@@nJ@&@d@WAJ@&AJ@&AJ@&@ @p@@J@&@g@@J@&@J@&@J@&@J@&@J@&0))))))))@,8p@/@)c@@@@ఐ-set_known_reg)O])Oj@R@@@@@K@&@F@@K@&@@@K@&@@K@&@K@&@K@&@K@&#@@ఐ!n)Ok)Ol@i@@0@@ఐ}"rs)Om)Oo@e@@=@@ఐy"vs)Op@F@@I@@h@@J@&L@@A{A@J@&0))))))))@z@@@@AA@J@&0))))))))@@@@@AA@@@@&0))))))))@@@@@@@@ࠠ(set_move))@@@@\@@@'XJ@&@@@@'J@&@@@@'K@'T@@* @@ະ,@@J@'LJ@'J'$#@@J@'T@@J@'S@@J@'RJ@'N"'num_reg*0<*0C@డ$#Map#add#Reg*0F*0Q@@@@@@K@'-@7@@K@'%K@'HK@'@K@'+@@@K@',@@K@'*@K@')@K@'(@K@''0********@@@+h@@+i@@@@ఐҠ#dst+0R+0U@@@ @@ఐ!v+0V+ 0W@@@2!@@ఐ֠"n1+.0X+/0Z@,@@0@'num_reg+50[+60b@ @@8Q@@L@';L@'EL@'B?@@] @@T@@K@'$K@'GK@':H@@ఐ"n1+Q04+R06@O@@S@+U02.@@IJ@&W@1@@@@A2A@VJ@&0+W+V+V+W+W+W+W+W@@@@@A+6A@cJ@&0+[+Z+Z+[+[+[+[+[@*@@@@AB:A@@ni@@'^0+_+^+^+_+_+_+_+_@A@@@@?@?>@T@ࠠ.set_fresh_regs+q+r@@@@@@@'J@'`@I)@@@'@@@'J@'f@ b)@@@'J@'l@@@@'J@'r@@@'J@'s@@'tJ@'m@@'nJ@'g@@'hJ@'a@@'bJ@'_0++++++++@@@+d@@@@!n++@@@;0++++++++@G++.m@@@@@@"rs ++@@@E0++++++++@ Q@@+k@@@@@#rhs ++@@@I0++++++++@Y@@+l@@@@@(op_class ++@@@P0++++++++@]@@+m@@@@@ࠠ"n1 + + @@@@@@'K@'y0++++++++@&l@@,n@@@ࠠ"vs , , @@@Ƞ+S@@@'@@@'K@'z@@, ,@@"@@'}@ఐ1fresh_valnum_regs,(,)%@1@@@@@K@'@@@K@'@@K@' @@K@'+@@K@'@@K@'@K@'@K@'@K@'F@@ఐ!n,Q&,R'@@@S@@ఐ"rs,^(,_*@@@`@@:@@IK@'c@@,e@@ະĐ@@J@'J@'ơ'num_eqs,v.:,w.A@డ*:#add)Equations,.D,.Q@@@@@W@@@@V@@@@@Uà@@@T@@S@@R@@Q@@P@@ڰ@@@@@K@'@@@K@'@@@K@'@@K@'K@'K@'K@'@@@K@'@@K@'@K@'@K@'@K@'@K@'0,,,,,,,,@@@,o@@,p@@@@ఐ(op_class,.R,.Z@Ѱ@@=@@ఐ#rhs,.[,.^@@@T!@@ఐࠐ"vs,._,.a@(@@C.@@ఐO!n,.b,.c@5@@=@'num_eqs-.d-.k@Y @@3b@@L@'L@'L@'L@@ @@we@@K@'K@'K@'U@kg`@@J@'@@J@'J@'@ఐ0"n1-).2-*.4@g@@@@J@'J@'J@'r@-4.0}@@J@'wv@@@7@@ATA@J@'q0-6-5-5-6-6-6-6-6@S@@@@AiA@J@'k0-:-9-9-:-:-:-:-:@h@@@@A~A@J@'e0->-=-=->->->->->@}@@@@AA@@@@'0-B-A-A-B-B-B-B-B@@@@@@@@ࠠ0set_unknown_regs-T-U@@@@@@@(VJ@(@a@@@(?K@(@@@(,J@(@@@(SJ@(@@( J@(@@(J@(0-p-o-o-p-p-p-p-p@ @@-j@@@@!n--@@@+0--------@7--J@@@@@@"rs--@@@50--------@ A@@-r@@@@ະ@@J@(JJ@(H  @@J@(R@@J@(Q@@J@(PJ@(L 'num_reg--@డ,%Array*fold_right--,@@@!b@@!a@@@9@@8@w@@@7@  @@6@@5@@4@aaa@@Y@@@@@?8@@K@(@@K@(K@(FK@( @K@(@K@(@@@K@(@@K@(@K@(@K@(0--------@iu@l@.s@@@@డU#Map&remove#Reg.-.;@@@@@@!a@F@@@#@@@@@@@@oo@@K@@@@@L@(:@3KK@(GK@(CK@(3@@L@(9= @@L@(8@L@(7@L@(6D@@ఐ"rs.O<.P>@N@@Q@@ఐߠ!n.^?._@@Ű@@`@'num_reg.eA.fH@ @@|K@(>K@(Bj@@@@~k@@ఐ!n.t .u @۰@@v@.x @@ J@( z@@AA@J@(0.y.x.x.y.y.y.y.y@@@@@AA@@'"@@(Z0.}.|.|.}.}.}.}.}@@@@@@@@ࠠ=remove_mutable_load_numbering..@@@@@@@(J@(\@@@(J@(]@@(^J@([0........@,RL@M@.q@@@@!n..@@@0........@'..@@@@@ະ/@@J@(J@('num_eqs..@డ,4remove_mutable_loads)Equations..@@@@@`@@@_@@^@@o @@@ML@@K@(n@@K@(mK@(K@(}K@(r@@K@(s @@K@(q@K@(p0........@JVg@M@/u@@@@ఐ`!n/ / @@@w@'num_eqs//@h @@B3@@L@(zL@(L@(|"@@H @@6@@K@(lK@(K@(y+@zvo@@J@(@@J@(J@(@ఐ!n/8/9@>@@A@/<@@J@(aE@@AA@@@@(0/=/</</=/=/=/=/=@@@@@@@@ࠠ.kill_addr_regs/O37/P3E@@@@@@@)J@(@@@)J@(@@(J@(0/[/Z/Z/[/[/[/[/[@@@/tt@@@@!n/n3F/o3G@@@0/l/k/k/l/l/l/l/l@'/u33/v_@@@@@ະՐ@@J@)J@)א@@J@)@@J@)@@J@) J@) 塠'num_reg/JU/J\@డ#Map&filter#Reg/_m/_{@@@Q@@@@!a@$boolE@@@@@@@@@@@@@@@@@@@@D@s@@T%$@@@@s@@K@(@@@K@(K@)K@(K@('@@K@(@K@(@K@(@ߠ@@K@(@@K@(@K@(@K@(0////////@{@~@/w@@@@@!r/_/_@@@@@M@(@@@"_n0 _0 _@@@>K@(K@(000 0 00000@)!@@@(@@0*x@@@@డ."<>0#_0$_@@!a@@ @@@*@@)@@()%notequalBA'ˠ@@@@''@@'R@@@#Cmm2machtype_component@@L@(L@(@ @@L@(@L@(@L@(00H0G0G0H0H0H0H0H@;KA@B@0ay@@@@ఐe!r0]_0^_@J@@@@M@(@#Reg#typ0i_0j_@,#typ @@@0@@@@B,,(raw_name r(Raw_name!t@@@A@ @A X X@@wJ,%stamp#intA@@@@A@A Y Y@@K",#loc"(location@@@AC!@A [TX [Tn@@M,%spill-$boolE@@@AD-@A \ \@@N,$part9&optionJ)@@@@@@AE>@A ] ]@@O,&interfJ$listI @@@@@@AFN@A ^26 ^2M@@P,&preferZ1@@@ڠO@@@@@@@@AGd@A _ _@@Q,°reepZ@@@AHn@A ` `@@R,*spill_costzd@@@AIx@Aaa1@@S,'visitedn@@@AJ@A b]ab]u@@T@AZZ5@@L@@@@ภ#Cmm$Addr1 _1 _@8$Addr#Cmm2machtype_component@@@#1@@@AD@@A/asmcomp/cmm.mliTT@@@ B@@@M@(@@@@j@@L@(L@(@@AA@@Tr@@L@(@L@(L@(01'1&1&1'1'1'1'1'@@@@@A1._|1/_@@@@@L@(@d@@L@(@L@(@L@(L@(01716161717171717@Q@@@@ఐߠ!n1I_1J_@^@@a@'num_reg1P_1Q_@ @@S@@L@(L@)L@(p@@ @@@@K@(K@)K@((@@ఐ!n1lJN1mJO@@@@1pJL@@J@(7@@AA@@ @@)01q1p1p1q1q1q1q1q@@@@@@@@ࠠ2insert_single_move11 @@@@$Mach+instruction@@@)IJ@)@#Reg!t@@@)]J@)@!t@@@)dJ@)#$@@@)HJ@)$@@)%J@)@@)J@)@@)J@)011111111@Tjd@e@1v@@@@!i1 1 @@@:011111111@F11>@@@@@@#src1 1@@@?011111111@ P@@1{@@@@@#dst11@@@B011111111@S@@1|@@@@డ1*instr_cons11 @@n0instruction_desc@@@y@%arrayHm@@@x@@@w@ i@@@v@@@u@@@@t@@@s@@r@@q@@p@@o@0asmcomp/mach.mlic ^ ^e  @@|.-@@@+@@J@)4@)@@J@)3@@J@)2@&@@J@)1@@J@)0@@@J@)/@@J@).@J@)-@J@),@J@)+@J@)*02=2<2<2=2=2=2=2=@[g@^@2V}@@@@ภ#Iop2O"2P%@8#IopY@@@^@)operation@@@L@A@BG@A@M  AM  @@@gภ%Imove2h&2i+@8%Imove@@@8@@@@NN@AShTh@@@`@  @@ @@K@)TK@)X8@@2{!2|,@@@@K@)NK@)S@@@ఐ#src2/22@@@P@@2-24@@@@K@)M@@K@)LK@)^\@@ఐʠ#dst272:@i@@l@@252<@@@@K@)K@@K@)JK@)ex@@ఐ!i2=@@@<@@@@J@)(@@AA@(J@)"022222222@@@@@AA@:J@)022222222@@@@@A A@@J@@@)n022222222@@@@@@ @#@ࠠ+insert_move2@D2@O@@@@U@@@*^J@*0@@@*FJ@)p@V@@@*K@)@@@*J@)v@|@@@*_J@)|J@)}@@)~J@)w@@)xJ@)q@@)rJ@)o033333333@[@@3!z@@@@$srcs!3@P3@T@@@6033333333@B3"@@3#@@@@@@$dsts"3.@U3/@Y@@@:03,3+3+3,3,3,3,3,@ L@@3E@@@@@!i#3?@Z3@@[@@@<03=3<3<3=3=3=3=3=@N@@3V@@@@డ2%Array&length3T^f3U^r@T@@@TwJ@)J@)J@)J@)J@)@@K@)W@@K@)@K@)03e3d3d3e3e3e3e3e@)5g@,@3~@@@@ఐa$srcs3x^s3y^w@G@@@@(@@l@@@)@@3}3}@@{@@L@)L@)033333333@$@@@ @@@ఐ[!i3}3}@,@@J@) @A33@@@@L@)L@)@@@@డ3*instr_cons33@@@@@@J@)@%@@J@)@@J@)@ @@J@)@@J@)@B@@J@)E@@J@)@J@)@J@)@J@)@J@)F@@ภ#Iop33@ภ%Imove33@~@@@@@K@)K@)`@@33@@@@K@)K@)h@@ఐ預$srcs44@ϰ@@u@@ఐ㠐$dsts4 4@˰@@@@ఐߠ!i44@@@@@l@@J@)J@)@@4(4)@@@@L@)@@@@@ࠠ$tmps$47(548(9@@@%arrayH@@@)@@@)K@)@డ",createv_like#Reg4R(<4S(L@@@@@@@@#@@@@@@@@@~H  H  @@!`_@@@@@K@)@@K@)8@@K@)@@K@)@K@)@@ఐn$srcs4(M4(Q@T@@@@7@@M@@4(1@@@ࠠ"i1%4Ub4Ud@@@K@)044444444@0hb@c@4@@@ఐ+array_fold24Ug4Ur@ {@@@@J@*!K@)@@@K@* K@)@ AK@)AK@)AK@)@@Ƞ@@K@)@Π@@K@)@K@)@K@)@K@)@K@)1@@ఐQ2insert_single_move4Us4U@ǰ@@@M@@L@*@D@@L@*@;@@L@*Z@@L@*@L@*@L@*@L@*P@@ఐ!i4U4U@@@]@@ఐɠ$tmps5U5U@g@@X@@L@*L@*$L@*"r@@ఐ렐$dsts5U5U@Ӱ@@!@@s@@l@@5U^@@ఐ+array_fold25$5%@ @@@@%J@*,@B@@@J@*]J@*. AJ@*3AJ@*2AJ@*1@@ES@@J@*/@K@@J@*-@J@*+@J@**@J@*)@J@*(05B5A5A5B5B5B5B5B@@@5[@@@@ఐҠ2insert_single_move5U5V@H@@@@@K@*X@@@K@*W@@@K@*V@@K@*U@K@*T@K@*S@K@*R#@@ఐߠ"i15t5u@-@@0@@ఐj$srcs55@P@@=@@ఐW$tmps5l@m@@f@@K@*EK@*cK@*aQ@@uv@@nR@w@@o@x@@J@)@@A5^`|@@J@)@@AcA@J@){055555555@b@@@@AxA@J@)u055555555@w@@@@AA@@@@*m055555555@@@@@@@0A@+cse_generic55@)J(J'J,#cse_generic&JБࠠ$self*55@55@@2class_of_operationA@@@@*L@*(H@@@+'L@*@@*L@*@@*L@*}2is_cheap_operationA@@@@,L@*@@@1 L@*@@*L@*@@*L@*'fundeclA@'fundecl@@@>L@*L@*@@*L@*@@*L@*@@*@*L@*@*L@*~@*L@*ub@@*vL@*{066666666@GA@B@66~k8@@@AXAW+A*EAD@@? K@?@?@?@?K@*n@@*o@@@@6768s9:9=@@@@6J~8@@@AlAk?A>YAX.K@?K@?"K@?#K@?$K@*p.@K@*q@@@@@@@ @~7@@z@A@vq@@*@@*@A#cseBA@#@@@.AL@*@@@@>L@*L@*@@*@@*@@*@g@A@c\@@*@@*@A@A@{@@*@@*@*kill_loadsBA@"L@*$L@*@@*@@*@ABC'*undef*C@AhK@?@@? K@*r@6b@W@@K@*s@K@*t@@@6j@_@@@)selfpat-*+6m6m@}@ɰ6u|6u@AA@&self-16ࠠ&self-*5A@066666666@i@0@Aef1@2@Ѡ3@IJ4@ABCD@!1@6+x@6@6@@@!!@@@@"op76u6u@@@L@*066666666@', @*@66 @,@6@@@@ఐ"op66@@@6@@066666666@$@@@Ġ%Imove66@@@@@*066666666@@@@@+@Ġ&Ispill77@8&Ispill@@@ANN@Aii@@@a@@  @@=@@=@@ @@>@Ġ'Ireload77@8'Ireload@@@BNN@Ajj@@@b@@  @@P&@@P&@@* @@Q'@@ภ%false7-7.@867@@@N@@@@B@@A7@@6@ @@@@M@+$;@7: @@YL@*L@+ A@Ġ*Iconst_int7M7N@8*Iconst_int@)nativeintK@@@@A@NN@A@AENN@A?rac@t@@8@@$funcX@@@@$MrasNra@@l&ty_resY@#Cmm(machtype@@@%]s^s@@m'ty_argsZ@$listI'exttype@@@'@@@&rsss@@n%alloc[@$boolE@@@(tt@@o@EA@@@@@8t@@@8Bp@8hu8hv@@R@@Q@*@@@[@@@@@@@@@Ġ'Iopaque8hy8h@8'IopaqueN@@@MNN@A~  ~  @@@.A@@  @@@@@@ @@@@ภ8h8h@@@@@@M@+-@8h@@L@+)@Ġ,Istackoffset88@8,Istackoffsett@#intA@@@)@AFNN@Auu@@@[q@88@@@@O@*@@@@@!@@!@@ภ(Op_other88@87R*@@@BCB@A7Q@@7N@@@L@+0L@+.@Ġ%Iload99@8%Iload@,memory_chunk@@@*$Arch/addressing_mode@@@+(Asttypes,mutable_flag@@@,@CGNN@AvvM@@@r@9394@@"@@O@*09392929393939393@M@@@@9<9=@@$@@O@* @ࠠ#mut89H9I@@@(@@@*@@@A9O@@|@@|@@ภ'Op_load9V9W@+.ఐ#mut9`9a@@@9t@@7@@M@+7M@+9M@+809g9f9f9g9g9g9g9g@* @@@@@@L@+5L@+2@Ġ&Istore9}9~@8&Istore@,memory_chunk@@@-o/addressing_mode@@@.@@@/@CHNN@AxwNPywN@@@s@99@@@@O@*@@99@@@@O@*@ࠠ#asg999@@@#@@@*@@@:9@@@@@@ภ(Op_store99@88#+@8!AACB@A8@@8ఐ#asg99@@@9@@82@@M@+?M@+AM@+@099999999@, @@@@@@L@+=L@+:@Ġ&Ialloc99@8&Ialloc@@@@<@AINN@Ayy @@8@@%bytes@@@@0yy@@tt'dbginfo@)Debuginfo-alloc_dbginfo@@@1yy @@u@IA@@@@@9@@@:'Av@:: @@/@@P@*5@@@8@@M6@@M6@Ġ%Ipoll:)#:*(@8%Ipoll@@@@:@AMNN@A@  @  @@8@@,return_label@&optionJ%label@@@7@@@6-@  .@  @@C@MA@@@@@:!@@@:`@D@:T):U*@@(@@P@*n@@@1@@o@@o@@r@@p@@ภ6:b5:c:@5@@@5@@M@+F}@:i.@@L@+B@Ġ&Iintop:vW[:wWa@8&Iintop@1integer_operation@@@2@AJNN@Adz  ez  =@@@wĠ+Icheckbound:Wb:Wm@8+Icheckbound@@@@@@LMA@AwZz|xZz@@@ U@@":Wn@@@@O@+@@@(@@@@@@ภ-Op_checkbound:Wr:W@89$,|@@@ACB@A9#@@9 @@@L@+IL@+G@Ġ&Iintop::@A@::@@C@@O@+@@@ @@@@@@ภ'Op_pure::@@@@L@+ML@+K@Ġ*Iintop_imm::@8*Iintop_immq@c@@@3@@@4@BKNN@A{ > @{ > g@@@ ZxĠ+Icheckbound::@f@@@@z@@O@+  @@::@@@@O@+ @@@(;@@.@@.@@ภ-Op_checkbound;; @d@@@)L@+QL@+O$@Ġ*Iintop_imm;;@@@;;@@@@O@+8@@;&;'@@F@@O@+@@@@;,@@YB@@YB@@ภ'Op_pure;3;4@@@@TL@+UL@+SO@Ġ%Inegf;R;S@8%Inegf@@@ENN@A :| h j ;| h q@@@ y@@  @@q@@q@Ġ%Iabsf;d;e@8%Iabsf@@@FNN@A L| h r M| h y@@@ z@@  @@@@@@ @@@Ġ%Iaddf;w;x @8%Iaddf @@@GNN@A _| h z `| h @@@ {@@  @@@@@@0 @@@Ġ%Isubf; ; @8%Isubf "@@@HNN@A r| h  s| h @@@ |@@  @@@@@@C @@@Ġ%Imulf; ; @8%Imulf 5@@@INN@A | h  | h @@@ }@@  @@@@@@V @@@Ġ%Idivf; ; @8%Idivf H@@@JNN@A | h  | h @@@ (~@@  @@@@@@i @@@Ġ+Ifloatofint;  ;  )@8+Ifloatofint [@@@KNN@A }   }  @@@ ;@@  @@@@@@| @@@Ġ+Iintoffloat;  ,;  7@8+Iintoffloat n@@@LNN@A }   }  @@@ N@@@  @@ @@ @@ @@ @@ภ'Op_pure;  ;;  B@7@@@L@+YL@+W@Ġ)Ispecific; C G; C P@8)Ispecific @2specific_operation@@@5@ALNN@A      @@@ wB@<  C Q<  C R@@@@O@+%@@@@@=&@@=&@@ภ(Op_other< C V< C ^@@@@8L@+]L@+[3@@A<@@"@@AP A@T A@@@LG@L@,@L@,L@,0<&<%<%<&<&<&<&<&@U@@@@A@@^@SN@L@,@L@,@L@,0<-<,<,<-<-<-<-<-@@@@<4uu@@L<:  <;  @AA@&self-1[ࠠZ@y0@@A@&self-1aࠠ`@0=S=R=R=S=S=S=S=S@@@@  @@@@!nb=d","?=e","@@@@L@-0=c=b=b=c=c=c=c=c@@@=}@@=@@@@@!ic=y","A=z","B@@@L@>L@.CL@9'L@-$0=~=}=}=~=~=~=~=~@)@ @=@@@@ఐ!i="E"M="E"N@@@=@@0========@(@@@$desc="E"O="E"S@,$desc @@@K @@@C@@ ,$next  @@@D@A@A D M Q D M c@@ a,#arg  !t@@@F@@@E@B@A E d h E d y@@ 1b,#res# à .!t@@@H@@@G@C(@A F z ~ F z @@ Bc,#dbg4!t@@@I@D4@A G   G  @@ Nd,$live@ H#Set!t@@@JAEB@A H   H  @@ \e@A C 1 5 C 1 L@@ ```T@@ @@@-+^@Ġ$Iend> "Y"]> "Y"a@8$Iend @@@@BG@A L   L  @@@ f@@  @@ @@T@-00>>>>>>>>@@@@@@Ġ'Ireturn>"Y"d> "Y"k@8'Ireturn @@@ABG@A N   N  @@@ h@@  @@ /@@T@-3@@@@$ @@ 3@@S@-4@Ġ#Iop>8"Y"n>9"Y"q@ Ġ-Itailcall_ind>A"Y"r>B"Y"@3@@ >D"Y"@@ @@S@-:2@@@@@ O@@S@-;6@@6@@D @@ S@@R@-<:@Ġ#Iop>X"Y">Y"Y"@ Ġ-Itailcall_imm>a"Y">b"Y"@@@>f"Y">g"Y"@@B@@R@-CU@@@>l"Y"@@ @@R@-DZ@@@@@ w@@R@-E^@@^@@l @@ {@@Q@-Fb@Ġ%Iexit>"">""@8%Iexit 1@@@@Z@ADBG@A mR   nR  @@@ l@>"">""@@@@Q@-J@@@@@ @@Q@-K@@@@ @@ @@P@-L@Ġ&Iraise>"">""@8&Iraise W@&Lambda*raise_kind@@@]@AFBG@A T   T  @@@ 'p@>"">""@@@@P@-P@@@@@ @@P@-Q@@@@ @@ @@O@-R@@ఐZ!i>"">""@=@@VL@-@Ġ#Iop>"">""@ Ġ%Imove>"">""@ @@@@ @@Q@-Y0>>>>>>>>@Y@@@Ġ&Ispill>"">""@@@@@ @@Q@-\ @@@@ @@P@-]@Ġ'Ireload?""?""@@@@@ @@P@-`@@?""?""@@ @@O@-a#@@@7@@ @@O@-b'@@'@@@ࠠ"n1o?!#M#W?"#M#Y@@@,@@@-N@-@ఐC(set_move?2#M#\?3#M#d@@@@,@@N@-@+@@N@-@+@@N@-,@@N@-@N@-@N@-@N@-1@@ఐ!n?Q#M#e?R#M#f@ΰ@@>@@డ>&(p(o(n(q?`#M#g?a#M#pA(mA@@(m, @@O@. O@-@@O@-@(m@@O@- @O@-@O@-]@@ఐ !i?#M#h@!@@k@#arg?#M#i?#M#l@ְ(@@('@@P@.P@.P@.z@@@?#M#n?#M#o@@(@@P@.P@.P@.@@A@@@9@@డ>s((((?#M#q?#M#zA(A@@(,Z@@O@.)O@.@@O@.@(@@O@. @O@.@O@.@@ఐW!i?#M#r@9!@@R@#res?#M#s?#M#v@(@@('@@P@. P@.%P@."@@@?#M#x?#M#y@@(@@P@.P@.'P@.&@@A@@@9@@A@@@@?#M#SC@@V @@M@.JM@.HT$next@ #~#@ #~#@ఐ$self@ #~#@ #~#@ \@@ C0@ @ @ @ @ @ @ @ @{@@@%@@@ \ @ #~#@@@ @  @N@.:@N@.9 @@ఐ"n1@& #~#@' #~#@@@ @@ఐ!i@5 #~#@6 #~#@@@'@$next@< #~#@= #~#@ @@.@@2@@ /@@@M@.R@@M@.QM@.N@@M@.X@@M@.WM@.T@@M@.\M@.Z@@M@.`M@.^@ఐ!i@l #~#@m #~#@ڰ@@^@@p #~#@q #~#@@L@.aL@-e@@@a@Ġ#Iop@ ##@ ##@2Ġ)Icall_ind@ ##@ ##@@@@@:@@Q@-i@Ġ)Icall_imm@ ##@ ##@@@ ##@ ##@@@@Q@-m@@@ @@N@@Q@-n@@ @@R@@P@-o@Ġ(Iextcall@ ##@ ##@`@@ ##@ ##@@b@@P@-s@@@ @@f@@P@-t@@@ ##@ ##@@l@@O@-u@@@F@@@@O@-v@@@@/@@M@.~M@.|-$next@&&@&&@ఐ$self@&&@&&@ 5@@ @ 1@&&@@@ @  @N@.n@N@.m@@ఐ.d/empty_numbering@&&@&&@-@@ O@.u@@ఐ!iA &&A &&@z@@@$nextA&&A&&@m @@O@.w(@@2@@ )@iji@@M@.@@M@.M@.cdc@@M@.@@M@.M@.]^@@M@.M@.XY@@M@.M@.@ఐР!iAE&&AF&&@@@X@AI&&AJ&&@@L@.L@.b_@Ġ#IopAY&&AZ&&@ Ġ'IopaqueAb&&Ac&&@@@@@@@O@-}x@@@@@o@@O@-~|@@|@@ѐy@@M@.M@.ϡ$nextA|''A}''@ఐ7$selfA''A''@ װ@@ @ ӰA''"@@@ 4@ / *@N@.@N@.@@ఐ//empty_numberingA''#A''2@.a@@ CO@.@@ఐ9!iA''3A''4@@@5@$nextA''5A''9@ @@:O@.@@2@@ R@   @@M@.@@M@.M@.@@M@.@@M@.M@.@@M@.M@. @@M@.M@.@ఐr!iA'' A'' @U@@n@A'' A'':@@sL@.L@.@Ġ#IopA';'?A';'B@Ġ&IallocB';'DB';'J@@B ';'KB ';'L@@@@P@-0B B B B B B B B @y@@@@@B';'CB';'M@@@@P@-@@@@@@@P@- @@ @Ġ#IopB#';'PB$';'S@ԠĠ%IpollB,';'UB-';'Z@@B1';'[B2';'\@@@@P@-&@@@B7';'TB8';']@@@@P@-,@@@@@C@@P@-0@@0@@D @@G@@O@-4@@@ࠠ"n1pBN&* *BO&* *@@@/@@@.N@.f@ఐ.kill_addr_regsB_&* *B`&* *+@@@@/@@N@./@@N@.@N@.z@@ఐ&$selfBx&* *-By&* *1@ ư@@ @ B}&* *<@@@  @O@.@@ఐ*!nB&* *=B&* *>@@@&@@B&* *,B&* *?@@ @@2@@>@@B&* *@@@ࠠ"n2qB'*C*NB'*C*P@@@0@@@.N@.0BBBBBBBB@]W@X@B@@@ఐ^0set_unknown_regsB'*C*SB'*C*c@@@@0@@N@.@V/b@@N@.@@N@.0'@@N@.@N@.@N@.!@@ఐ"n1B'*C*dB'*C*f@+@@0;@@O@.O@.O@.5@@ఐq!iB'*C*gB'*C*h@T@@mD@#resB'*C*iB'*C*l@- @@/@@O@.@@O@.O@.O@.V@@J@@ZW@@B'*C*J@@c @@M@/M@/a$nextC(*p*C(*p*@ఐɠ$selfC(*p*C(*p*@ i@@ P0CCCCCCCC@z@@C2@@@ i C$(*p*@@@ @  @N@/@N@/  @@ఐ"n2C3(*p*C4(*p*@@@ O@/@@ఐϠ!iCD(*p*CE(*p*@@@)@$nextCK(*p*CL(*p*@ @@O@/2@@6@@ 3@@@M@/&@@M@/%M@/"@@M@/,@@M@/+M@/(@@M@/0M@/.@@M@/4M@/2@ఐ!iC}(*p*xC~(*p*y@@@b@C(*p*wC(*p*@@ L@/5L@.i@@@@@@@Ġ#IopC)**C)**@Dࠠ"opdC)**C)**@@@H@@@-0CCCCCCCC@ @@@@@@@@@O@-@@@@ఐb$selfC***C***@ @@ 0CCCCCCCC@!!@@C@@@  C***@@@  @N@/: @@ఐ."opC***C***@@@ O@/>@@@@ @Ġ'Op_pureC+**C+**@ 0@@@@ 0CCCCCCCC@,@@@Ġ-Op_checkboundC+**C+**@ F@@@@  @@@@  @Ġ'Op_loadC+**C+*+@5̠@C+*+C+*+@@Bn@@Q@/HQ@/D@@@ @@@@D+**D+*+@@ !@(op_classrD+*+ D +*+@ @@'(@@'(@@@ࠠ"n1sD,++&D,++(@@@.@@@/uO@/X0DDDDDDDD@j6@@@/E@@D7@@@ࠠ$vargtD.,++*D/,++.@@@.2y@@@/w@@@/vO@/Y@@D;,++%D<,++/@@%@@/\!@ఐ'+valnum_regsDJ,++2DK,++=@&@@@/@@O@/f@/0@@O@/e@@O@/d/.@@O@/a/2@@O@/c@@O@/b@O@/`@O@/_@O@/^I@@ఐ!nDs,++>Dt,++?@@@V@@ఐ !iD,++@D,++A@@@ e@#argD,++BD,++E@ڰ @@/V16@@P@/y@@P@/xP@/P@/}w@@N@@]O@/tz@@D,++!@@@ࠠ"n2uD-+I+WD-+I+Y@@@2@@@/O@/0DDDDDDDD@@@D@@D@@@ఐj0set_unknown_regsD-+I+\D-+I+l@@@@2'@@O@/@b1n@@O@/@@O@/23@@O@/@O@/@O@/$@@ఐĠ"n1D-+I+mD-+I+o@-@@2G@@P@/P@/P@/8@@డ$Proc1destroyed_at_oper$ProcD-+I+qD-+I+@@$Mach0instruction_desc@@@0(%arrayH#Reg!t@@@0'@@@0&@@0%@0asmcomp/proc.mliv " "v " ]@@$ProcZ#"@@@ @@P@0G@@P@0F@@P@0E@P@0Dx@@ఐ!iE2-+I+E3-+I+@@@@$descE9-+I+E:-+I+@ @@D@@Q@0PQ@0TQ@0R@@ED-+I+pEE-+I+@@1@@P@/@@P@/P@0VP@0N@@ @@@@ES-+I+S@@ఐ'L-find_equationE_.++E`.++@&@@@7@@O@0g@2@@O@0f@'@@@O@0e'<3Ӡ3@@O@0d@@O@0c@@O@0b@O@0a@O@0`@O@0_0EwEvEvEwEwEwEwEw@@@E@@@@ఐ(op_classE.++E.++@j@@7@@P@0|P@0~P@0}@@ఐ"n1E.++E.++@@@3 @@P@0{P@0P@0,@@ఐ"opE.++E.++@@@C@@P@0P@0P@0E@ఐ$vargE.++E.++@@@CˠC@P@0@P@0P@0P@0]@@E.++E.++@@'@@P@0zP@0e@@@@'4D4C@@@0y@@@0x@@@0wq@Ġ$SomeE/++E/++@'sࠠ$vresF/++F/++@@@4b4a@@@0@@@00FFFFFFFF@@@@@@ @@'נ4n4m@@Q@0@@Q@0@@Q@0 @ @  @@ఐ%@4find_regs_containingF"2,u,F#2,u,@!@@@3@@P@0@/44r@@P@0@@P@0'%22@@P@0@@P@0@@P@0@P@0@P@00F9F8F8F9F9F9F9F9@D>@?@FR@@@@ఐ4"n1FL2,u,FM2,u,@@@3@@Q@0Q@0Q@0@@ఐ`$vresF`2,u,Fa2,u,@"@@/o4@@Q@0@@Q@0Q@0Q@00@@M@@(:%n3@@@0@@@0@@@0<@Ġ$SomeF3,,F3,,@(ࠠ#resF3,,F3,,@@@%36@@@0@@@00FFFFFFFF@Y@@@@@ @@(d%3B@@R@0@@R@0@@R@0 @ @  @డEs"&&F4,- F4,-@@&@@@K@&@@@J&@@@I@@H@@G(%sequandBA>Z@@@@>Y##>Z##3@@>X]@@@@@P@0@@@P@0@@P@0@P@0@P@00FFFFFFFF@QK@L@F@@@@డE#notF3,,F3,,@@@@@F&@@@E@@D(%boolnotAA>@@@>"">""@@>\@@@@@Q@1@@Q@1@Q@1-@@ఐ $selfG3,,G3,,@a@@H>@YG3,,@@@% @R@1C@@ఐ"opG%3,,G&3,,@n@@2S@1R@@G+3,,G,3,,@@2U@@G.3,,G/3,,@@@@Q@1Q@1R@1 _@@డF#notGC4,-GD4,-@[@@@K@@Q@1[@@Q@1@Q@1v@@డh1regs_are_volatile$ProcG]4,-G^4,-,@@^\!t@@@00@@@0/$boolE@@@0.@@0-@`{  a{  @@_]@@@@@R@1&@@R@1%@@R@1$@R@1#@@ఐ#resG4,--G4,-0@@@34=@@S@11S@1/@@S@1.S@12S@10@@G4,-G4,-1@@@@R@1!R@17S@1-@@G4,-G4,-2@@@@Q@0Q@19R@1 @@ @@'\@@P@1;Q@0@@ࠠ"n3G9.D.ZG9.D.\@@@5+@@@1TQ@1<0GGGGGGGG@@@@ఐՠ.set_known_regsG9.D._G9.D.m@°@@@5=@@Q@1A@04@@Q@1E@@Q@1D@06-@@Q@1C@@Q@1B@Q@1@@Q@1?@Q@1>$@@ఐࠐ"n1G9.D.nG9.D.p@I@@8R@1ZR@1Y5@@ఐ !iH 9.D.qH 9.D.r@ y@@ D@#resH9.D.sH9.D.v@ R @@1!4@@R@1X@@R@1WR@1_R@1\V@@ఐ*$vresH*9.D.wH+9.D.{@@@196w@@R@1V@@R@1UR@1gR@1en@@e@@ro@@H:9.D.V@@ఐc+insert_moveHD<./HE<./@"@@@1Q@@P@1r@@P@1q@1Z@@P@1p@@P@1o@@@P@1n@P@1m@P@1l@P@1k0HYHXHXHYHYHYHYHY@@@Hr@@@@ఐߠ#resHl<./Hm<./@@@1{5@@Q@1Q@1@@Q@1Q@1Q@1@@ఐ !iH<./H<./@ @@ -@#resH<./H<./@ ϰ @@1@@Q@1@@Q@1Q@1Q@1?@@ఐ Y$selfH<./H<./ @@@P@H<./$@@@V@QL@Q@1@Q@1W@@ఐ"n3H<./%H<./'@a@@eR@1f@@ఐ [!iH<./(H<./)@ >@@ Wu@$nextH<./*H<./.@ 1 @@ \R@1~@@H<./H<.//@@v@@@@ L@9L@9L@8L@8L@8L@8L@8L@8L@5L@8L@5L@8L@4L@4L@4L@4L@4L@4-L@3L@4L@3L@4 L@3|L@3L@2L@2L@2ZL@2jL@1L@1L@1@A@@=L@0V@@I&=/0/@I'=/0/A@@*('5@@R@0@@R@0@@R@0@@ @@@ࠠ"n3I=A00&I>A00(@@@6@@@1Q@1@ఐ O.set_known_regsINA00+IOA009@<@@@6@@Q@1@2`5@@Q@1@@Q@1@2i7@@Q@1@@Q@1@Q@1@Q@1@Q@1@@ఐ̠"n2IrA00:IsA00<@@@7R@1R@1@@ఐ !iIA00=IA00>@ @@ @#resIA00?IA00B@ ̰ @@269@@R@1@@R@1R@1R@1@@ఐ$vresIA00CIA00G@f@@27@@R@1@@R@1R@1R@1@@e@@q@@IA00"@@ @@P@1P@1 $nextIB0K0eIB0K0i@ఐ $selfIB0K0lIB0K0p@ @@0IIIIIIII@@@I@@@  IB0K0t@@@@|w@Q@1@Q@1 @@ఐ"n3IB0K0uIB0K0w@@@R@1@@ఐ !iIB0K0xIB0K0y@ i@@ )@$nextJB0K0zJB0K0~@ \ @@ R@12@@6@@3@ X Y X@@P@1@@P@1P@1 R S R@@P@1@@P@1P@1 L M@@P@1P@1 G H@@P@2P@2@ఐ !iJ4B0K0^J5B0K0_@ @@ b@J8B0K0]J9B0K0@@ZL@2L@1i@@@@@AJ@2,u,JAC00@@\L@00J>J=J=J>J>J>J>J>@@@@Ġ$NoneJND00JOD00@+:@@@@,88@@Q@0@@Q@0@@Q@0@ @ @@@ࠠ"n3JfF01JgF01@@@7@@@2%P@2d@ఐ.set_fresh_regsJwF01 JxF01@@@@7@@P@2@5G7'@@P@2@@P@2@@@P@2@<@@P@27@@P@2 @P@2 @P@2 @P@2 @P@2 @@ఐ"n2JF01JF01@#@@8 @@Q@2*Q@2,Q@2+@@ఐ @!iJF01JF01@ #@@ <@#resJF01JF01"@  @@57i@@Q@2)@@Q@2(Q@21Q@2.@@ఐ;"opJF01$JF01&@ @@H@@Q@2MQ@2CQ@2B@ఐ$vargJF01(JF01,@:@@HH@Q@2O@Q@2NQ@2FQ@2D@@JF01#JF01-@@p@@Q@2'Q@2H@@ఐ(op_classK F01.KF016@@@=v@@Q@2&Q@2QQ@2P @@ @@@@KF01 @@ '@@O@2nO@2l }$nextK*G1:1PK+G1:1T@ఐ 堐$selfK7G1:1WK8G1:1[@@@l0K5K4K4K5K5K5K5K5@@@KN@@@ K@G1:1_@@@@@P@2^@P@2] @@ఐ預"n3KOG1:1`KPG1:1b@@@Q@2e@@ఐ 렐!iK`G1:1cKaG1:1d@ ΰ@@ )@$nextKgG1:1eKhG1:1i@  @@ Q@2g2@@6@@3@   @@O@2v@@O@2uO@2r   @@O@2|@@O@2{O@2x  @@O@2O@2~  @@O@2O@2@ఐ$!iKG1:1IKG1:1J@@@ b@KG1:1HKG1:1j@@L@2L@2i@@@@@AK.++KH1k1x@@L@/V0KKKKKKKK@,@@@W@@@@@@Ġ(Op_storeKI1y1KI1y1@ĠKI1y1KI1y1@@@@@J!@@Q@/M0KKKKKKKK@@@@@@@@@@@Ġ(Op_otherKI1y1KI1y1@@@@@ @@ @@@@@@@ࠠ"n1KL292FKL292H@@@9F@@@2O@2@ఐ0set_unknown_regsKL292KKL292[@N@@@9W@@O@2@8@@O@2@@O@29c@@O@2@O@2@O@2@@ఐ!nL L292\L L292]@@@,@@డ)1destroyed_at_oper$ProcLL292_LL292u@'@@@'@@P@2"@@P@2@@P@2@P@2J@@ఐĠ!iL9L292vL:L292w@@@Y@$descL@L292xLAL292|@ @@K@@Q@2Q@2Q@2g@@LKL292^LLL292}@@8@@P@2@@P@2P@2P@2u@@k @@wv@@LZL292B@@@ࠠ"n2LeM22LfM22@@@9@@@2O@20LhLgLgLhLhLhLhLh@@@L@@@ఐ&0set_unknown_regsLzM22L{M22@ڰ@@@9@@O@2@9*@@O@2@@O@29@@O@2@O@2@O@2!@@ఐ"n1LM22LM22@+@@:@@P@2P@2P@25@@ఐ9!iLM22LM22@@@5D@#resLM22LM22@ @@V9b@@P@2@@P@2P@2P@2V@@J@@ZW@@LM22@@+@@N@2N@2)$nextLN22LN22@ఐ$selfLN22LN22@1@@0LLLLLLLL@z@@L@@@1 LN22@@@@@O@2@O@2 @@ఐ"n2LN22LN22@@@P@2@@ఐ!iM N22M N22@z@@)@$nextMN22MN22@m @@P@22@@6@@3@iji@@N@3@@N@3N@3cdc@@N@3 @@N@3 N@3 ]^@@N@3N@3XY@@N@3N@3@ఐР!iMEN22MFN22@@@b@MIN22MJN22@@_L@3L@2i@@@@@@ n@Ġ(Op_storeM[O22M\O22@ĠذMcO22MdO22@@@@@K@@P@/S @@@@@ @@ @@@ࠠ"n1MtR3f3sMuR3f3u@@@:@@@3*O@3@ఐ 10set_unknown_regsMR3f3xMR3f3@@@@:@@O@3@ ):5@@O@3@@O@3:@@O@3@O@3@O@3@@ఐC!nMR3f3MR3f3@ @@?@@డ1destroyed_at_oper$ProcMR3f3MR3f3@@@@@@P@33@@P@32@@P@31@P@30@@ఐ[!iMR3f3MR3f3@>@@W@$descMR3f3MR3f3@: @@@@Q@3@@MR3f3MR3f3@@ :@@P@3,@@P@3+P@3BP@3:*@@k @@w+@@MR3f3o@@@ࠠ"n2MS33MS33@@@;e@@@3[O@3I0MMMMMMMM@ N@@N@@@ఐ 0set_unknown_regsNS33NS33@q@@@;z@@O@3P@ :@@O@3O@@O@3N;@@O@3M@O@3L@O@3K!@@ఐ"n1N/S33N0S33@+@@;@@P@3^P@3`P@3_5@@ఐР!iNES33NFS33@@@D@#resNLS33NMS33@ @@ :@@P@3]@@P@3\P@3eP@3bV@@J@@ZW@@N\S33@@@ࠠ"n3NgT33NhT33@@@O@3l0NfNeNeNfNfNfNfNf@huo@p@N@@@ఐ($selfNzT33N{T33@Ȱ@@@NT33@@@@O@3o@@ఐ"n2NT33NT34@!@@P@3s&@@@@'@@NT33@@@@N@3N@3$nextNU44NU44@ఐ_$selfNU44NU44!@@@0NNNNNNNN@JSM@N@N@@@ NU44%@@@`@[V@O@3@O@3 @@ఐb"n3NU44&NU44(@@@b@@ఐc!iNU44)NU44*@F@@_'@$nextNU44+NU44/@9 @@dP@30@@4@@|1@565@@N@3@@N@3N@3/0/@@N@3@@N@3N@3)*@@N@3N@3$%@@N@3N@3@ఐ!iOU44OU44@@@`@OU44OU440@@+L@3L@3g@@@@@@@-@@Y@@AO***O V414:@@L@/60OOOOOOOO@ k@@@Ġ+IifthenelseO-Y44O.Y44@8+Iifthenelse@$test@@@M@@@N@@@O@CABG@A#O  $O  ;@@@iࠠ$testeOKY44OLY44@@@@@@-0OLOKOKOLOLOLOLOL@@@@ࠠ$ifsofOYY44OZY44@@@@@@-@ࠠ%ifnotgOfY44OgY44@@@@@@-@@@@OmY44@@t@@O@- @@ @@@ࠠ"n1O{Z44O|Z44@@@<@@@3N@30O~O}O}O~O~O~O~O~@@:@;@O4.@/@O)#@$@O@@@ఐ"B0set_unknown_regsOZ44OZ45@ @@@<@@N@3@":-/empty_numberingP\55P\55@=@@jO@4(@@ఐ`!iP\55P\55@C@@\@$nextP\55P\55@6 @@aO@4*@@2@@y@232@@M@47@@M@46M@43,-,@@M@4=@@M@4P < h@@@jࠠ%indexhQF]55QG]55@@@! @@@-@@@-0QKQJQJQKQKQKQKQK@@@@ࠠ%casesiQX]55QY]55@@@)@@@-@@@-@@@@Qc]55@@j@@O@-@@@@@ࠠ"n1Qq^55Qr^55@@@>@@@4ZN@4H0QtQsQsQtQtQtQtQt@:4@5@Q*$@%@Q@@@ఐ$50set_unknown_regsQ^55Q^55@"@@@>@@N@4O@$->9@@N@4N@@N@4M>@@N@4L@N@4K@N@4J$@@ఐG!nQ^55Q^55@$@@C1@@డ 1destroyed_at_oper$ProcQ^55Q^56 @ °@@@ @@O@4c  @@O@4b@@O@4a@O@4`O@@ఐ_!iQ^56Q^56@B@@[^@$descQ^56Q^56@> @@ @@P@4lP@4pP@4nl@@Q^55Q^56@@$>@@O@4\@@O@4[O@4rO@4jz@@k @@~{@@Q^55@@[$descQ_66'R_66+@ภ'IswitchR_66.R_665@ఐˠ%indexR_666R_66;@@@@@N@4@@N@4N@4N@40RRRRRRRR@@@R3@@@డP%Array#mapR0_66=R1_66F@@@!a@,!b@*@@@<<@@@Q i @@@!kࠠ(rec_flagjSea66Sfa66@@@*@@@-0SfSeSeSfSfSfSfSf@@@@ࠠ(handlerskSsa66Sta66@@@10@@@-!@@@-@@-@@@-@ࠠ$bodylSa66Sa66@@@"@@@-&@@@YSa66@@!@@O@-+@@+@@@ࠠ#auxSb66Sb66@@@@@@4N@43N@4@@4N@4  N@4@@4N@4@@4N@40SSSSSSSS@'^X@Y@SRL@M@S<6@7@S@@@@%paramࠠ%nfailSb66Sb66@@@+0SSSSSSSS@<Sb66Sc67 @@@@ࠠ'handlerSb66Sb66@@@6@@Sb66Sb66@@A=@P@4@@ఐ$%nfailSc66Sc66@O@%@T @@Q0SSSSSSSS@(0 P@@T@@@ఐ$selfTc66Tc66@\@@C@XTc66@@@@@N@4@N@4@@ఐA/empty_numberingT"c66T#c67@@@@O@5*@@ఐM'handlerT1c67V@2W@@6@@&X@@7@@=Y@@N@4:@@AP\A@@@@50T5T4T4T5T5T5T5T5@c@@@@a@$descTDe77#TEe77'@ภ&IcatchTLe77*TMe770@ఐ(rec_flagTVe771TWe779@@@@@N@5N@5!N@5 0T[TZTZT[T[T[T[T[@@@Tt@@@డS4$List#mapTqe77;Tre77C@@@!a@6!b@6@@7X@$listI@@@7W@@@7V@@7U@@7T@(list.mli@@,Stdlib__ListU$#@@@@X@@N@5N@8N@8N@8@N@8N@8p  @N@5N@8N@8N@8n@N@8q@2@@N@8o/@@N@8m@N@8l@N@8k\@@ఐ&#auxTe77DTe77G@f@@@0@O@84@O@8@O@8s@@ఐj(handlersTe77HTe77P@@@bN@@O@8|O@8O@8@@x @@B@@N@5N@8N@8{@ఐ$selfTe77RTe77V@K@@2@GUe77Z@@@@@N@8@N@8@@ఐ!nUe77[Ue77\@@@@@ఐ$bodyUe77]Ue77a@]@@O@8@@'@@@@U%e77b@@#.@@N@5N@5@$nextU1f7d7rU2f7d7v@ఐ점$selfU>f7d7yU?f7d7}@@@s@UCf7d7@@@@@N@8@N@8@@ఐB/empty_numberingURf7d7USf7d7@B@@O@8@@ఐ!iUcf7d7Udf7d7@Ѱ@@@$nextUjf7d7Ukf7d7@İ @@O@8@@2@@@@@M@8@@M@8M@8@@M@8@@M@8M@8@@M@8M@8Ǡ@@M@8M@8@ఐ'!iUe77Ue77@ @@#?@Ue77Uf7d7@@(L@8L@4F@@@@Ġ(ItrywithUg77Ug77@8(Itrywith#b@$*@@@[$.@@@\@BEBG@A#S  #S  @@@$1mࠠ$bodymUg77Ug77@@@$@@@@-8@ࠠ'handlernUg77Ug77@@@$M@@@-E@@@,Ug77@@#@@O@-J@@J@@F$descUh77Uh77@ภ(ItrywithUh77Uh77@Aఐ$selfVh77Vh77@N@@ 50UUUUUUUU@nA;@<@V60@1@V@@@Q V h77@@@@@N@8@N@8@@ఐ!nVh77Vh77@@@@@ఐ_$bodyV(h77V)h77@$@@O@8*@@.@@+@ఐ蠐$selfV:i78V;i78 @@@ o:@V?i78@@@@@N@8@N@8A@@ఐC/empty_numberingVNi78VOi78@C@@O@8P@@ఐ'handlerV]i78V^i78&@W@@O@8_@@)@@`@@rVdi78'@@$m@@N@8N@8g@á$nextVpj8)87Vqj8)8;@ఐ+$selfV}j8)8>V~j8)8B@˰@@ }@ǰVj8)8F@@@ (@ # @N@9@N@9@@ఐC/empty_numberingVj8)8GVj8)8V@CU@@ 7O@9 @@ఐ-!iVj8)8WVj8)8X@@@)@$nextVj8)8YVj8)8]@ @@.O@9 @@2@@ F@@@M@9@@M@9M@9@@M@9 @@M@9M@9@@M@9$M@9"@@M@9(M@9&@ఐf!iVh77Vh77@I@@b@Vh77Vj8)8^@@gL@9)L@8@@AV"E"G@@kL@-(@@Aq A@@rL@-rL@-@L@>tL@>s0VVVVVVVV@n@@@@AA@A@@@ @  @L@>@L@>@L@>~L@>{0VVVVVVVV@@@@@A @@!2@ @  @L@>@L@>@L@>@L@>2@W ",",*@@! Wl8`8gWl8`8n@AA@&self-1ࠠ o  p n n@!N0WWWWWWWW@ m@@@   p p@!P@@@!fW*l8`8oW+l8`8p@@@!L@>0W*W)W)W*W*W*W*W*@ !c@ @WD !e@ @WF@@@@డV$List#memWDn88WEn88@@!a@5@͠ @@@7$boolE@@@7@@7@@7@#&&#&'@@f@@@&V.codegen_option@@L@>L@>@ @@L@>@@L@>@L@>@L@>0WlWkWkWlWlWlWlWl@CQG@H@W@@@@ภ#Cmm&No_CSEWn88Wn88@8&No_CSE!@@@#@@@AB@@A&r!!&s!!@@@&z@  @@,M@>@@ఐu!fWn88Wn88@*@@q-@3fun_codegen_optionsWn88Wn88@,3fun_codegen_options!@@@j';.codegen_option@@@d@@@c@C ,(fun_name "@@@_@@@A%W  %W  -@@&.r,(fun_args%&+!t@@@a@@@`@A@A%X . 2%X . H@@&?s,(fun_body,&F@@@b@B!@A%Y I M%Y I c@@&Ht5,'fun_dbg5!t@@@e@D-@A%[  %[  @@&Tv,(fun_pollA<.poll_attribute@@@f@E9@A%\  %\  @@&`w,3fun_num_stack_slotsM%@@@h@@@g@FH@A%]  %]  @@&ox,2fun_contains_calls\k@@@i@GR@A%^  %^  @@&yy@A%Z d h%Z d @@&}utl@@Ġ@@M@>M@>M@>@@u@@7@@L@>M@>@ఐ!fX$o88X%o88@@@@ wx@@L@>L@>̠tut@@L@>@@L@>L@>Рn(fun_bodyXCq89XDq89@ఐ8$selfXPq89XQq89@!@@"@!XUq89@@@!@!!@M@>@M@>@@ఐE͠/empty_numberingXdq89Xeq89+@E(@@" N@>@@ఐO!fXuq89,Xvq89-@@@K@(fun_bodyX|q89.X}q896@ @@N@>@@2@@"@ߐݠ@@L@>@@L@>L@>ؠ@@L@>L@>ޠ@@L@>L@>@@L@>@@L@>L@>@@L@>L@>@ఐ!fXq89Xq89@D@@G@Xq89Xq898@@L@>K@Xn88@@M@@AA@ A@@@""@L@>@L@>L@>0XXXXXXXX@@@@@A@@"@""@L@>@L@>@L@>x@Xl8`8`@@@""X"@""@ @#A#"A""A"P@?0@?4@?3@?2"Ǡ@@?1@@#@A@# #@@?&@@?%@A""A@"@""@@?)@@?(@@?'@"@A@""@@?+@@?*@A# @A@##@@?-@@?,@""A@""@@?/@@?.@ABC#J"@"@"@2#M@"@""@###5@@""@0YYYYYYYY@"@@@WWA@WWA@WWA@V@G@GF@@GGA@FE@EC@D=@>='@= ;@;:@;9@98@8L4 @462@3'0@05/@/G-@-+@+*@*)@)'@'&-@&a#@# @l=<@# @#A@#@o=@#@# A@#8@@@A# @@@@#@@@#A@#8@@@A#zA#y#eA#d#OA#NQ@?6@?9@?8@?7#@@?5@@@@#$@@@#!A@@0YUYTYTYUYUYUYUYU@#B# @##"@#.@#+#@##@#0@#-# @#A@''@@@??K@@@?>@@?W@@?V#A@'''@@@?K#@@@?J@@?U@@?T#A@'#{@@@?G@@?S@@?R@?Q@?P@?O#v@@?N@@#@A@)%@@?=@@?<@A#E#DA@G@@@?D@((@@@?C@@?B@@?A@@?@@#@A@$$@@?F@@?E@A#°@A@62@@?I@@?H@#>#=A@@@?M@@?L@ABC#2@@@?;@#@#$@#A@(='r@@@?[L/@@@?Z@@?s@@?r#A@(J'@@@?g#@@@?f@@?q@@?p#A@(W#@@@?c@@?o@@?n@?m@?l@?k#Π @@?j @@$@A@)%@@?Y@@?X@A##A@G[@@@?`@(p(m@@@?_@@?^@@?]@@?\@#@A@$$@@?b@@?a@A$@A@62@@?e@@?d@##A@@@?i@@?h@ABC @#@#$V8@@@A$BA@('@@@?L@@@?@@?@@?$8A@('@@@?~$0@@@?}@@?|@@?{$-A@($&@@@?z@@?y@@?x@?w@?v@?u@@?t@@@@$@@@$$8@@@A$nA@('@@@?L@@@?@@?@@?$LA@($E@@@?@@?@@?$nA@((@@@?$f@@@?@@?@@?@@?@?@?@?@@?@@@@$2@@@$/@@Q@!td@@@@0@@@@/V@@@.@@-@@,@WvWv@@X A@ H************************************************************************ZA@@ZA@L@ H ZBMMZBM@ H OCaml ZCZC@ H ZDZD3@ H Xavier Leroy, projet Gallium, INRIA Rocquencourt ZE44ZE4@ H ZFZF@ H Copyright 2014 Institut National de Recherche en Informatique et ZGZG@ H en Automatique. ZHZHg@ H ZIhhZIh@ H All rights reserved. This file is distributed under the terms of ZJZJ@ H the GNU Lesser General Public License version 2.1, with the ZKZKN@ H special exception on linking described in the file LICENSE. ZLOOZLO@ H ZMZM@ H************************************************************************ZNZN5@ T Common subexpression elimination by value numbering over extended basic blocks. ZP77ZQ|@> Classification of operations ZWZW@ 0 pure arithmetic, produce one or several result ZZZZ-@ / checkbound-style: no result, can raise an exn Z[.DZ[.w@- memory load Z\xZ\x@ + memory store, false = init, true = assign Z]Z]@ : anything else that does not allocate nor store in memory Z^Z^B@ We maintain sets of equations of the form valnums = operation(valnums) plus a mapping from registers to valnums (value numbers). [`DD[b@9 next fresh value number [G v [ G v @8 mapping rhs -> valnums [H  [H  @< mapping register -> valnum [I  )[I  I@ * Generate a fresh value number [v] and associate it to register [r]. Returns a pair [(n',v)] with the updated value numbering [n']. Gࠠ $ Same, for a set of registers [rs]. [U  [U  @ * [valnum_reg n r] returns the value number for the contents of register [r]. If none exists, a fresh value number is returned and associated with register [r]. The possibly updated numbering is also returned. [valnum_regs] is similar, but for an array of registers. ?. Look up the set of equations for an equation with the given rhs. Return [Some res] if there is one, where [res] is the lhs. [&uww['v@ 4 Find a register containing the given value number. [,~tt[-~t@ = Find a set of registers containing the given value numbers. [2++[3+l@ a Associate the given value number to the given result register, without adding new equations. [8nn[9@ c Associate the given value numbers to the given result registers, without adding new equations. [>!![?e@ y Record the effect of a move: no new equations, but the result reg maps to the same value number as the argument reg. [Dtt[E@ p Record the equation [fresh valnums = rhs] and associate the given result registers [rs] to [fresh valnums]. [Jff[K@ v Forget everything we know about the given result registers, which are receiving unpredictable values at run-time. [Poo[Q@ 9 Keep only the equations satisfying the given predicate. [VLL[WL@ ; Forget everything we know about registers of type [Addr]. [\[]1@ @ Prepend a set of moves before [i] to assign [srcs] to [dsts]. [b[c@ f Parallel move: first copy srcs into tmps one by one, then copy tmps into dsts one by one [h[i'@ Default classification of operations. Can be overridden in processor-specific files to classify specific operations better. [n[o-s@3 treated specially [t[u@3 treated specially [zh[{h@3 treated specially [?[V@ B Operations that are so cheap that it isn't worth factoring them. [ ` `[ ` @ b Forget all equations involving mutable memory loads. Performed after a non-initializing store [!![!8!f@ } Perform CSE on the given instruction [i] and its successors. [n] is the value numbering current at the beginning of [i]. [!![!"*@ b For moves, we associate the same value number to the result reg as to the argument reg. [""[#)#L@  For function calls, we should at least forget: - equations involving memory loads, since the callee can perform arbitrary memory stores; - equations involving arithmetic operations that can produce [Addr]-typed derived pointers into the heap (see below for Ialloc); - mappings from hardware registers to value numbers, since the callee does not preserve these registers. That doesn't leave much usable information: checkbounds could be kept, but won't be usable for CSE as one of their arguments is always a memory load. For simplicity, we just forget everything. [ ##[&a&@ , Assume arbitrary side effects from Iopaque [&&[&'@  For allocations, we must avoid extending the live range of a pseudoregister across the allocation if this pseudoreg is a derived heap pointer (a pointer into the heap that does not point to the beginning of a Caml block). PR#6484 is an example of this situation. Such pseudoregs have type [Addr]. Pseudoregs with types other than [Addr] can be kept. Moreover, allocations and polls can trigger the asynchronous execution of arbitrary Caml code (finalizer, signal handler, context switch), which can contain non-initializing stores. Hence, all equations over mutable loads must be removed. ['a'g[%)* @ & This operation was computed earlier. [0++[0+,$@ = Are there registers that hold the results computed earlier? [1,%,3[1,%,t@ We can replace res <- op args with r <- move res, provided res are stable (non-volatile) registers. If the operation is very cheap to compute, e.g. an integer constant, don't bother. [5-6-H[8. .C@ ] This is n1 above and not n2 because the move does not destroy any regs [:..[;..@ We already computed the operation but lost its results. Associate the result registers to the result valnums of the previous operation. [>/E/W[@/0@ ; This operation produces a result we haven't seen earlier. [E00[E00@ An initializing store or an "other" operation do not invalidate any equations, but we do not know anything about the results. [J11[K128@ b A non-initializing store can invalidate anything we know about prior mutable loads. [P22[Q3*3e@ For control structures, we set the numbering to empty at every join point, but propagate the current numbering across fork points. [W4;4=[X44@ A CSE can trigger bad register allocation behaviors, see MPR#7630 [m8s8u[m8s8@@*./ocamlopt"-g)-nostdlib"-I&stdlib"-I1otherlibs/dynlink0-strict-sequence*-principal(-absname"-w>+a-4-9-40-41-42-44-45-48-66-70+-warn-error"+a*-bin-annot,-safe-string/-strict-formats"-I%utils"-I'parsing"-I&typing"-I(bytecomp"-I,file_formats"-I&lambda"-I*middle_end"-I2middle_end/closure"-I2middle_end/flambda"-I=middle_end/flambda/base_types"-I'asmcomp"-I&driver"-I(toplevel2-function-sections"-c\"-I'asmcomp\ 3/home/barsac/ci/builds/workspace/step-by-step-build 0/$#"! @0PIfemb%$0\)\(\(\)\)\)\)\)@\'@@$Arch0&s= k&1Ǥ(Asttypes0'$O~7+Backend_var0@3AM_{5Build_path_prefix_map0xөvĠ\U0%iJSA 6x8CamlinternalFormatBasics0cEXy*Su}Ck)Targetint0aDFscgjg .Type_immediacy0dV^25b)̓ԆSj%Types0lm?ƈ(Warnings0zdͦkUe$@@Aa[[@@-.L1M@@*!+@@IJ@JK@&'~@KLM@3!454 7*@13GPP@<(=AAB#@=?'U"U%@'*[@@+-GIM~O@@@>@ @./TU[[@@/1Ӱ[6[9@@OPPP@?AB@@8+