Caml1999T037sWSSC6Unbox_specialised_args-ocaml.warning ,middle_end/flambda/unbox_specialised_args.mlQQ@5+a-4-9-30-40-41-42-66 QQ@@QQ@@@@@@QQ@@3@@@@@@#intA;@@@A@@@@@&_none_@@A@A@$charB;@@A@@@@@@A@&stringQ;@@ A@@@@@ @@@%bytesC;@@A@@@@@@@@%floatD;@@A@@@@@@@@$boolE;@@%falsec@@@$trued@@#@@@A@@@@@$@A@$unitF;@@"()e@@.@@@A@@@@@/@A@ #exnG;@@@A@@@@@3@@@#effH;@@O@A@A@@@@@@<@@@,continuationI;@@Q@@P@B@A@nY@@@@@@K@@@%arrayJ;@@R@A@A@@@@@@U@@@ $listK;@@S@A"[]f@@b@"::g@@@T@@o@ @@A@Y@@@@@r@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@A@@@@@@@@%int32N;@@A@@@@@@@@%int64O;@@A@@@@@@@@&lazy_tP;@@X@AJA@Y@@@@@@@@5extension_constructorR;@@A@@@@@@@@*floatarrayS;@@A@@@@@@@@&iarrayT;@@Y@A[A@Y@@@@@@@@*atomic_locU;@@Z@AdA@@@@@@@@@.Assert_failure`#@@@@@J@@@@@@@@[@@AϠ=ocaml.warn_on_literal_patternӐ@@0Division_by_zero]#@@@A٠  @+End_of_file\#$@@@Aᠰ@'FailureY#,@'@@A꠰@0Invalid_argumentX#5@0@@A󠰠$#@-Match_failureV#>@@=@9@;@@a@@A54@)Not_foundZ#O@@@A =<@-Out_of_memoryW#W@@@AED@.Stack_overflow^#_@@@AML@.Sys_blocked_io_#g@@@A$U'T'@)Sys_error[#o@j@@A-^0]0@:Undefined_recursive_modulea#x@@w@s@u@@h@@A>oAnA@:Continuation_already_takenb#@@@AFwIvI@&Stdlib@@Р?Int_replace_polymorphic_compare?Int_replace_polymorphic_compareRR@@ 3@@@@@@3@@@R@@ @#ASAATT@@AAР8Augment_specialised_args8Augment_specialised_argsTT@@ 3@@@@@T@@!WBUU@AAAР*2What_to_specialise#ASAUU @ U U@@@3@EZeZe@@@H@@@ - @@@@@M/@@ZeZe@@డ "&&\\@@U@@@K@[@@@J_@@@I@@H@@G(%sequandBA @@@@*stdlib.mli@@&Stdlib]@@@@@@@ @@@@ y@@@ @@ @@ 3@i`Y@\@T@@@@డG!![[@@(#ref!a@@@@i@@h'%field0AA:@@@89@@7@@@@Y@@@ G@ HG@ @@@ @@ 6@@డ'Clflags6unbox_specialised_args'Clflags6 [@ [[@<@&Stdlib#ref$boolE@@@ @@@ @1utils/clflags.mliIIIn@@'Clflags@S@@S<@@@ H@ GH@ Ek@@]"@@>l@@డ#not?\@\@@@@@F@@@E@@D(%boolnotAA@@@LLLt@@\@@@@@@@ L@@@ K@@ J@@డ(Variable#Map(is_empty(Variables\t\@ w\x\@@|\}\@ @@(Variable#Map!t!a@@@@p$boolE@@@o@@n@6utils/identifiable.mlimm@@+Stdlib__Mapc@+!@@@'Flambda.specialised_to@@@+H@@@@@@@@@@@ఐP/set_of_closures\\@@@/set_of_closures@@@,@)@0specialised_args\\@30specialised_args @@@2(Variable#Map!t7@@@/@@@.@@B3.function_decls>5function_declarations@@@+@@@@@>middle_end/flambda/flambda.mli$$$$@@CN@3)free_vars #Map!tR@@@-@@@,@@A@@'''';@@UO@236direct_call_surrogates2/#Map!t6!t@@@1@@@0@@C0@@(22)23@@jQ@@@,(6(8-(6(i@@nP@\M@@Gw@@@*V@@\@@@@@ S@@I@_@@@@@@@ @AH@ Rg@@Y@@h@A@D@E@A@@@⠰@ఠ2what_to_specialise\>^?^1@KEA@@#env7Inline_and_simplify_aux#Env!t@@@&}D@G/set_of_closures/set_of_closures@@@QD@L!t@@@D@M@@ND@H@@ID@F3SRRSSSSS@E>@?@@@@@࣠++^A/w^3x^6@FA@@33dccddddd@B^d@@@@@^2 @--_A@^9^H@@1@@@R3yxxyyyyy@!K@@@@@;  @GA: г='Flambda^K^R@D^S^b@@@L@@@O @@"@@@Q@@^7^c@@@ఠ2what_to_specialise`_fn_f@HA@@]@@@G@U3@5A:@=@2@@@డ&create!W_f_f@ _f_f@@/set_of_closures'Flambda/set_of_closures@@@l@@@k@@j@ /middle_end/flambda/augment_specialised_args.mli\^@@8Augment_specialised_argsE@@@@@@}@@@|@@{6@ఐ{/set_of_closures_f_f@@@@+@@@H@H@J@@; @@NK@A@_fj @@డ#not``@ݰ@@@@@@@@@@@3@drk@l@m@@@@ఐ ,precondition6`7`@̰@@D@&~D@# D@%D@@@@@@@@@@@#@ఐߠ#envT`U`@İ@@0@ఐؠ/set_of_closuresa`b`@@@'@@@H@H@D@@l`m`@@.@@@@H@N@@Z @@&@@@G@U@ఐȠ2what_to_specialiseaa@\@@"_@@ఠ7projections_by_functionmcc@IA@@*Projection#Set!t@@@%@@@%G@3@~@@@డH#Map*filter_map(VariabledJdR@ dSdV@@dWda@ @@@H#key@@@[@!a@&optionL!b@@@@Z@@Y@@X@`@@@Wd@@@V@@U@@T@S@O`@3)@@@@&@@@@4function_declaration@@@I@(h@@@#I@@@@@@@@@@@@@@@@@@@3@@@@@࣠@(_fun_varnAebq eby@,JA@@Y@@@ @@@@-function_decloA@0eb{1eb@@;@@@3@n@@@@@@@@  @HKAGгJ'FlambdaIebJeb@QMebNeb@@@Y@@@ @@UebzVeb@@@`"@@@@ఐ7-function_decldfef@5@8@*@@4function_declaration@@@@3XWWXXXXX@;H @@@$stubufvf@3$stub@@@E$boolE@@@?@@E/3.closure_origin .Closure_origin!t@@@9@@@ @@-88-884@@V@3¶ms$listK)Parameter!t@@@;@@@:@@A @@.8587.858Q@@W@3$body/!t@@@<@@B+@@/8R8T/8R8]@@X@3.free_variables:#Set!t@@@=@@C9@@288288@@Y@3,free_symbolsH&Symbol#Set!t@@@>@@DI@@699699@@%Z@X3#dbgX)Debuginfo!t@@@@@@FW@@?;;?;;@@3\@3&inlinef&Lambda0inline_attribute@@@A@@Ge@@A<<A<<@@@A]@3*specialiset4specialise_attribute@@@B@@Hq@@ C0.'@@@=@@@<" @@@;@@@:@@9@@8@@7.@Oఐ2#envh+h.@@@b;@Nఐ-/set_of_closuresjPsjP@@@@@@%@%O@0specialised_argsjPjP@@@b@@@# M@%M@%@@@%a@]ఐ-function_decli/Bi/O@v@@j@@@#M@%M@%u@@hjP@@x@@@@L@%{@f@@}@ebljP@@@+@@@@%@@@@@@@J@%J@%Y@@F@@@@@@@@@@@d@@ఐ/set_of_closuresd#d2@S@@Z@@@& @& z@.function_decls#d3$dA@D@@E@@@&@& @$funs/dB0dF@3$funsP@@@8d#Map!t@@@7@@@6@@C3/is_classic_mode@@@3@@@@@a44b44@@R@32set_of_closures_id2Set_of_closures_id!t@@@4@@A@@o5254p525^@@S@36set_of_closures_origin*6Set_of_closures_origin!t@@@5@@B#@@}"66~"666@@T@8@@'7(7*'7(7U@@U@W>@@8~@@@&H@&H@&@@@& @@c@@@A@{c@@@ఠ5invariant_params_flown  %n  :@LA@@(Variable#Map!t $Pair#Set!t@@@&k@@@&jG@&*3@{@@@@@డ0Invariant_params7invariant_param_sources0Invariant_paramso = Eo = U@ o = Vo = m@@@'Flambda5function_declarations@@@&H'backend,Backend_intf!S@@&GE>@@@&F@@@&E@@&D@@&C@ 'middle_end/flambda/invariant_params.mliort@@0Invariant_paramsA@,'@@@$@@@&S@@&R]V@@@&Q@@@&P@@&O@@&NO@@ఐs/set_of_closureso = no = }@8@@?@@@&q@&oc@.function_decls o = ~ o = @)@@R@@@&mH@&rH@&pq@Mడ7Inline_and_simplify_aux#Env'backend7Inline_and_simplify_aux (p   )p  @  ,p   -p  @@ 1p   2p  @ @@@@@$,Backend_intf!S@@$@@$@ .middle_end/flambda/inline_and_simplify_aux.mlii  i 7@@B@ @@@@@@&v@@&u@@&t@@ఐ堐#env Zp   [p  @ʰ@@@@ ^p   _p  @@@@&lI@&|@@@@@A@ gn  ! @@డ#Map$fold(Variable yr   zr  @  }r   ~r  @@ r   r  @ @@@@@@?@!a@@#acc@@@>@@=@@<@@@@;@  @@:@@9@@8@ @\@* @@@@@@@&@*Projection#Set!t@@@&F@&@X@@@'F@&@@&@@&@@&@?@@@&@  @@&@@&@@&3        @'G@@A@B@@@@࣠@'fun_varA r   r  @ MA@@@@@&3        @@@@@ @@+extractionsA r   r  @ NA@@B3        @('@@@&@@@@@@  @@2what_to_specialiseA r   r  @ OA@@H3        @!Y@@@@@@@@డ*Projection#Set$fold*Projection s  $ s  .@  s  / s  2@@ #s  3 $s  7@ @@@}#elt@@@M@#acc@b@@L@@K@@@@J@  @@I@@H@@G@ !middle_end/flambda/projection.mliJ  J  @@+Stdlib__Set\@* @@@@@@@&@J@&@@&@@&@@@@&@  @@&@@&@@&3 ? > > ? ? ? ? ?@Ua@X@Y@@@@࣠@*projectionA@ gs  > hs  H@@_!t@@@' 3 X W W X X X X X@@@@  @ }PAJ@@@&M@&г*Projection s  K s  U@ s  V s  W@@@!@@@& @@ s  = s  X@@@f@@@'%@@@@2what_to_specialiseA t Y k t Y }@ QA@@U3        @MD<@?@3@@@@@@@ఠ%group u   u  @ RA@@(Variable!t@@@'N@'3        @*u@!@"@@@డ/projecting_from*Projection u   u  @  u   u  @@@*!t@@@'@@@@@@M  M  @@1W@@@@@@@'4@@@'@@'/@@ఐ*projection u   u  @V@@&@@@' O@'"O@'!C@@4 @@LD@A@ u   @@  డ#Map#mem(Variable v   v  @  v   v  @@ #v   $v  @ @@_@@@u@!a@@@@t@@@s@@r@@q@@d@"@@@t@@@'*@@@@'~N@')@@@'(@@@''@@'&@@'%3 8 7 7 8 8 8 8 8@@@@@@@ఐ%group \v   ]v  @ @@@@@'lO@'k@@ఐ砐/set_of_closures pv   qv  @@@@@@'@'|)@0specialised_args |v   }v  @@@:@@@'}4@@ v   v  @@@@@'O@'4<@ v  @@ ,@@@'N@'D@@ఠ2what_to_specialise w  & w  8@ SA@@?@@@'N@'3        @W@@@డ 3new_specialised_arg!W x ; K x ; L@  x ; M x ; `@@@Z@@@u'fun_var(Variable!t@@@t%group !t@@@s*definition*Definition!t@@@r@@@q@@p@@o@@n@@m@`ev~@@F@83@@@@@@'0.@@@')'@@@'$"@@@'@@@'@@'@@'@@'@@']@@ఐr2what_to_specialise x ; a x ; s@N@@j@OఐE'fun_var x ; u x ; |@,@@S@@@'z@Sఐy%group *x ; ~ +x ; @۰@@`@@@'O@'O@'@]ภ (Projection_from_existing_specialised_arg =y   >y  @; (Projection_from_existing_specialised_argfd!t@@@'@*Projection!t@@@'@AA@B@AfV#gV]@@@eB@ఐ*projection ]z   ^z  @@@@@@'O@'O@'@@ hy   iz  @@@@@'O@'@@@@@A@ qw  " @@డ #Map$find(Variable |   |  @  |   |  @@ |   |  $@ @@@@@@ !a@3@@@@@@@@ @ U@@@@@@@'@ (@@@'N@'@@@'@@'@@'3        @e@@@@@@ఐ%group |  % |  *@q@@@@@'O@'@@ఐL5invariant_params_flow |  + |  @@ @@I)@@@'&@@U@@-'@Ġ)Not_found } F ` } F i@;)Not_found#exnG@@@@@@  A@A&_none_@@A@@  ?@@ =^@@@@@@@*@@@@*@@@*@@*@@*3        @=I@@@A@@@@డ %equal(VariableIPgIPo@ IPpIPu@@@ !T!t@@@ @ @@@ $boolE@@@ @@ @@ @ jcm jc@@/Stdlib__Hashtbl`@#@@@@@@*@@@@*@@@*@@*@@*C@@ఐ{'fun_varPIPvQIP}@b@@@@@*S@@ఐϠ.target_fun_var`IP~aIP@@@<@@@*T@*e@@S@@@@@*@*T@*m@@డ #not|J}J@ =@@@ =@@@* <@@@*@@*@@డ *#Map#mem(VariableJJ@ JJ@@JJ@ @ @@@@@@*@ - @@@+T@*@@@*@@@*@@*@@*@@ఐ"/target_spec_argJJ@@@ @@@*U@*@@ఐ P/set_of_closuresKK@ @@ @@@+@+@0specialised_argsKK@ @@ 7@@@+@@JK@@ @@@*@+U@*@@{ @@@@@*@+T@*@@@@ @@@+S@*@ఐK2what_to_specialise M'= M'O@L!NPg@@ @@ఠ*projectionBTT@(XA@@H@@@+0S@+3        @!@@@డ3map_projecting_from*Projection2U3U @ 6U!7U4@@@c@@@!f@!t@@@!t@@@@@x@@@@@@@@P U UP U @@X@'"@@@@@@+$@@@@+#@@@+"@@+!@@@+ @@+@@+3TSSTTTTT@h@@@@ఐ*projectionvU5wU?@԰@@@@@+4T@+6T@+5\@A࣠@#varCAV@bV@e@YA@@M@@@+<q@@@@  డ :%equal(VariableWiWi@ WiWi@@@@@@@@+F@@@@+E@@@+D@@+C@@+B3@8{@@@+;@2@3@@@@ఐB#varWiWi@@@@@@+VW@+U@@ఐ.%groupWiWi@@@@@@+^W@+]*@@WiWi@@ t@@@+cW@+P2@Wi@@d@@@+eV@+d9@ఐZ/target_spec_argXX@4@@@@@+gU@+fH@@@I@V@]X@@@@@@+3@@@+2@@+1T@+lT@+i@@@@@A@T@@డV3new_specialised_arg!W%Z&Z@ )Z*Z@@q@@@ @@@+xqo@@@+wjh@@@+vec@@@+u @@@+t@@+s@@+r@@+q@@+p3-,,-----@B/(@)@*@@@@ఐ2what_to_specialiseQZRZ,@N@@@ఐ͠.target_fun_var^[-N_[-\@@@@@@+S@+S@+$@ఐ%groupr[-^s[-c@#@@@@@+S@+S@+8@ภ (Projection_from_existing_specialised_arg]]@Hఐt*projection]]@K@@N@@@+S@+S@+U@@]]@@@@@+S@+]@@}@@3S@+`@NPm^@@@IPd@@:@G^@@@k@@@*@@HH@@*?@@*>P@+P@+@@ఐ$flow__@F@@p@@@*=P@/;P@/:P@@ఐ82what_to_specialise` ` -@"@@ t@@@/>`@@@@B@@@A|  @@@n @@9@T @@:@ @@"@s  8` .@@@@@@&@@@&@@&K@/KK@/H@@ఐ+extractionsa/;a/F@@@P@@ఐ 2what_to_specialisebGSbGe@@@O@@@@@ r   bGf@@@ I@@@&@l@``@@&@@&@@&G@/`G@/\;@@ఐ 7projections_by_function$cgo%cg@@@ ~G@/k@@@/jf@@ఐ |2what_to_specialise7d @  @@ @@@/u@@ @@^@ @@@ @@ @@` @@  @ 2 @@  ~@  A@ D@/ @A@ @  @ @F@# @  @ @ @@365566666@  @@PW2Qe@ 3<;;<<<<<@D@@@@UW@@гР$Make#ASAjgkg@ ngog@@@3\[[\\\\\@e@w&@T @ C1@@@)@@@#Arg@!S7rewrite_set_of_closures#env7Inline_and_simplify_aux#Env!t@@@/2duplicate_function#env#Env!t@@@//set_of_closures /set_of_closures@@@/'fun_var!t@@@/+new_fun_var!t@@@/@ 4function_declaration@@@/@#Map!t .specialised_to@@@/@@@/@@/@@/@@/@@/@@//set_of_closures /set_of_closures@@@/&optionL@ $expr@@@/@-Inlining_cost'Benefit!t@@@/@@/@@@/@@/@@/@@/@ v @ | @@ L@@@@@@Р!)Transformgg@@@ @ @@@@@B@@@%g@@@@/@@@/@@@/@@@/@@@/@@@@/ʠ@@@@/@@@/@@/@@/@@/@@/@@/}|@@@/{@xw@@@/ @vsr@@@/@@/@@@/@@/@@/@@/@q@n@@@@@@/@@@/@@@/@@@/@@@/@@@@/ߠ@ՠ@@@/@@@/@@/@@/@@/@@/@@/@@@/Π@@@@/נ@@@@/@@/@@@/@@/@@/@@/@@@@g@@@]@(A@"@@ A@@@@@@@_@3@h`_@@@ұ6Unbox_specialised_args@@A J@Aݱ I@@ H************************************************************************A@@A@L@ H BMMBM@ H OCaml CC@ H DD3@ H Pierre Chambart, OCamlPro E44E4@ H Mark Shinwell and Leo White, Jane Street Europe F F@ H GG@ H Copyright 2013--2016 OCamlPro SAS HHg@ H Copyright 2014--2016 Jane Street Group LLC IhhIh@ H  J!J@ H All rights reserved. This file is distributed under the terms of &K'KN@ H the GNU Lesser General Public License version 2.1, with the ,LOO-LO@ H special exception on linking described in the file LICENSE. 2M3M@ H 8N9N5@ H************************************************************************>O66?O6@ q CR-soon mshinwell: consider caching the Invariant_params *relation* as well as the "_in_recursion" map DlEm @ % If for function [f] we would extract a projection expression [e] from some specialised argument [x] of [f], and we know from [Invariant_params] that a specialised argument [y] of another function [g] flows to [x], we will add [e] with [y] substituted for [x] throughout as a newly-specialised argument for [g]. This should help reduce the number of simplification rounds required for mutually-recursive functions. J  KF@ I Rewrite the projection (that was in terms of an inner specialised arg of [fun_var]) to be in terms of the corresponding inner specialised arg of [target_fun_var]. (The outer vars referenced in the projection remain unchanged.) POsQS@@-./boot/ocamlc)-nostdlib"-I&./boot*-use-prims2runtime/primitives"-g0-strict-sequence*-principal(-absname"-w8+a-4-9-40-41-42-44-45-48+-warn-error"+a*-bin-annot/-strict-formats"-I2middle_end/flambda"-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(toplevel"-I%tools"-I'runtime"-I1otherlibs/dynlink"-I-otherlibs/str"-I4otherlibs/systhreads"-I.otherlibs/unix"-I8otherlibs/runtime_events"-c =/builds/workspace/precheck/flambda/false/label/ocaml-linux-32 >10/.-,+*)('&%$#"! @@0cQM?1qi(3@@@/Allocated_const0ЖݔTWŠ(Asttypes0>n{T8cئ0Dhw(k]jX,Backend_intf0)LSxjf15Build_path_prefix_map0z HkGs8CamlinternalFormatBasics0%FU(Q/Tu0CamlinternalLazy0&͂7 Pˆ2Clambda_primitives01U1ʐ0r.SU߈#g/Closure_element0YWZ̡Q.hV&*Closure_id05:z[ކ.Closure_origin0vˆtT{(}z*Cmi_format0c˯7͗ԩmݠ0Compilation_unit0 {p-Vg_*Data_types0I'Ue`wq]Ѡ)Debuginfo0PtJ=^w/#Env0zV L{YWI)Export_id0-bw+LO 0kX7WCD'Flambda0Idvu "*Format_doc0]mWϓ:Mݠ*Freshening0/^*b1R%Ident0">WA+9*X,Identifiable0 {d\FX'`7Inline_and_simplify_aux0#%ۈR bF-Inlining_cost0,30`JD:G2P͠4Inlining_stats_types0|Ca~T E~O0ixjx-{`͡;7Internal_variable_names0HdeՄL ԩ 07 ePܠ&Lambda0z1x]&ZT,Linkage_name0EwKсڊs)Load_path0I@18 ~(Location0a7cK_H%9)Longident0s `7mɕc$Misc0ob]6>Vê>0Mutable_variable0~emPs&Symbol0ҡ4d,#Tag0\݅}x.Type_immediacy0A^abOhՠ%Types0^Y~#  0zM;FA g?)Unit_info0ڀh%(2Var_within_closure00SSJh6 (Variable0' Gr㠠(Warnings0mJɒkgr