Caml1999T037sWSUC6Unbox_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@@@@t$boolE@@@s@@r@6utils/identifiable.mlimm@@+Stdlib__Mapc@+!@@@'Flambda.specialised_to@@@IH@@@@@@@@@@@ఐP/set_of_closures\\@@@/set_of_closures@@@J@G@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@@@HV@@\@@@@@ S@^I@_@@@@@@@ @_H@ Rg@@Y@@h@A@D@c@A@@@⠰@ఠ2what_to_specialiseb>^?^1@KEA@@#env7Inline_and_simplify_aux#Env!t@@@&D@e/set_of_closures/set_of_closures@@@oD@j!t@@@D@k@@lD@f@@gD@d3SRRSSSSS@E>@?@@@@@࣠++dA/w^3x^6@FA@@33dccddddd@B^d@@@@@^2 @--eA@^9^H@@1@@@p3yxxyyyyy@!K@@@@@;  @GA: г='Flambda^K^R@D^S^b@@@L@@@m @@"@@@Q@@^7^c@@@ఠ2what_to_specialisef_fn_f@HA@@]@@@G@s3@5A:@=@2@@@డ&create!W_f_f@ _f_f@@/set_of_closures'Flambda/set_of_closures@@@@@@@@@ /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@#CD@%D@@@@@@@@@@@#@ఐߠ#envT`U`@İ@@0@ఐؠ/set_of_closuresa`b`@@@'@@@H@H@D@@l`m`@@.@@@@H@N@@Z @@&@@@G@U@ఐȠ2what_to_specialiseaa@\@@"_@@ఠ7projections_by_functionscc@IA@@*Projection#Set!t@@@&8@@@&7G@3@~@@@డH#Map*filter_map(VariabledJdR@ dSdV@@dWda@ @@@H#key@@@_@!a@&optionL!b@@@@^@@]@@\@`@@@[d@@@Z@@Y@@X@S@O`@3)@@@@&@@@@4function_declaration@@@0I@(h@@@#?I@@@@@@@@@@@@@@@@@@@3@@@@@࣠@(_fun_vartAebq eby@,JA@@Y@@@'@@@@-function_decluA@0eb{1eb@@;@@@13@n@@@&@@@@@  @HKAGгJ'FlambdaIebJeb@QMebNeb@@@Y@@@. @@UebzVeb@@@`"@@@@ఐ7-function_decldfef@5@8@*@@4function_declaration@@@8@63XWWXXXXX@;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@@ C@ภ$Some2h3h@;q@oA@AA@A@@oడ3Extract_projections2from_function_decl3Extract_projectionsFhGh@ JhKh)@@#env7Inline_and_simplify_aux#Env!t@@@T/which_variables(Variable#Map!t'Flambda.specialised_to@@@S@@@R-function_decl 4function_declaration@@@Q@@@P@@O@@N@@M@ *middle_end/flambda/extract_projections.mli]a6K@@3Extract_projections@@A<@@97@@@\0.'@@@[@@@Z" @@@Y@@@X@@W@@V@@U.@Oఐ2#envh+h.@@@b;@Nఐ-/set_of_closuresjPsjP@@@@@@%@%O@0specialised_argsjPjP@@@b@@@#BM@&M@%@@@%a@]ఐ-function_decli/Bi/O@v@@j@@@#@M@&M@&u@@hjP@@x@@@@L@C{@f@@}@ebljP@@@+@@@ @%@@@@@@@J@& J@&Y@@F@@@@@@@@@@@d@@ఐ/set_of_closuresd#d2@S@@Z@@@&E@&Cz@.function_decls#d3$dA@D@@E@@@&H@&D@$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@&JH@&G@@@&F@@c@@@A@{c@@@ఠ5invariant_params_flown  %n  :@LA@@(Variable#Map!t $Pair#Set!t@@@&@@@&G@&c3@{@@@@@డ0Invariant_params7invariant_param_sources0Invariant_paramso = Eo = U@ o = Vo = m@@@'Flambda5function_declarations@@@&'backend,Backend_intf!S@@&E>@@@&@@@&~@@&}@@&|@ 'middle_end/flambda/invariant_params.mliort@@0Invariant_paramsA@,'@@@$@@@&@@&]V@@@&@@@&@@&@@&O@@ఐs/set_of_closureso = no = }@8@@?@@@&@&c@.function_decls o = ~ o = @)@@R@@@&H@&H@&q@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@ @@@@@@&@@&@@&@@ఐ堐#env Zp   [p  @ʰ@@@@ ^p   _p  @@@@&I@&@@@@@A@ gn  ! @@డ#Map$fold(Variable yr   zr  @  }r   ~r  @@ r   r  @ @@@@@@C@!a@@#acc@@@B@@A@@@@@@@?@  @@>@@=@@<@ @\@* @@@@@@@&@*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@@@n@#acc@@@m@@l@@@@k@  @@j@@i@@h@ !middle_end/flambda/projection.mliJ  J  @@+Stdlib__Set\@* @@@@@@@&@J@&@@&@@&@@@@&@  @@&@@&@@&3 ? > > ? ? ? ? ?@Ua@X@Y@@@@࣠@*projectionA@ gs  > hs  H@@_!t@@@'F3 X W W X X X X X@@@@  @ }PAJ@@@'M@'г*Projection s  K s  U@ s  V s  W@@@!@@@' @@ s  = s  X@@@f@@@'G%@@@@2what_to_specialiseA t Y k t Y }@ QA@@U3        @MD<@?@3@@@@@@@ఠ%group u   u  @ RA@@(Variable!t@@@'XN@'N3        @*u@!@"@@@డ/projecting_from*Projection u   u  @  u   u  @@@*!t@@@'@@@@@@M  M  @@1W@@@@@@@'R4@@@'Q@@'P/@@ఐ*projection u   u  @V@@&@@@'YO@'[O@'ZC@@4 @@LD@A@ u   @@  డ#Map#mem(Variable v   v  @  v   v  @@ #v   $v  @ @@_@@@|@!a@@@@{@@@z@@y@@x@@e@"@@@t@@@'c@@@@'N@'b@@@'a@@@'`@@'_@@'^3 8 7 7 8 8 8 8 8@@@@@@@ఐ%group \v   ]v  @ @@@@@'O@'@@ఐ砐/set_of_closures pv   qv  @@@@@@'@')@0specialised_args |v   }v  @@@:@@@'4@@ v   v  @@@@@'O@'m<@ 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@@@'fun_var(Variable!t@@@%group !t@@@*definition*Definition!t@@@@@@@@@@@@@@@`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@7@@@ @@ @@ @ @ U@@@@@@@(@ (@@@(2N@(@@@(@@(@@(3        @e@@@@@@ఐ%group |  % |  *@q@@@@@("O@(!@@ఐL5invariant_params_flow |  + |  @@ @@I)@@@(1&@@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@ @ @@@@@@+@ - @@@+CT@+@@@+@@@+@@+@@+@@ఐ"/target_spec_argJJ@@@ @@@+1U@+0@@ఐ P/set_of_closuresKK@ @@ @@@+D@+A@0specialised_argsKK@ @@ 7@@@+B@@JK@@ @@@+@+XU@+)@@{ @@@@@*@+YT@+@@@@ @@@+ZS@*@ఐK2what_to_specialise M'= M'O@L!NPg@@ @@ఠ*projectionOTT@(XA@@H@@@+oS@+[3        @!@@@డ3map_projecting_from*Projection2U3U @ 6U!7U4@@@c@@@!f@!t@@@!t@@@@@x@@@@@@@@P U UP U @@X@'"@@@@@@+c@@@@+b@@@+a@@+`@@@+_@@+^@@+]3TSSTTTTT@h@@@@ఐ*projectionvU5wU?@԰@@@@@+sT@+uT@+t\@A࣠@#varPAV@bV@e@YA@@M@@@+{q@@@@  డ :%equal(VariableWiWi@ WiWi@@@@@@@@+@@@@+@@@+@@+@@+3@8{@@@+z@2@3@@@@ఐB#varWiWi@@@@@@+W@+@@ఐ.%groupWiWi@@@@@@+W@+*@@WiWi@@ t@@@+W@+2@Wi@@d@@@+V@+9@ఐZ/target_spec_argXX@4@@@@@+U@+H@@@I@V@]X@@@@@@+r@@@+q@@+pT@+T@+@@@@@A@T@@డV3new_specialised_arg!W%Z&Z@ )Z*Z@@q@@@ @@@+qo@@@+jh@@@+ec@@@+ @@@+@@+@@+@@+@@+3-,,-----@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@/K@/@@ఐ+extractionsa/;a/F@@@P@@ఐ 2what_to_specialisebGSbGe@@@O@@@@@ r   bGf@@@ I@@@&@l@``@@&@@&@@&G@/G@/;@@ఐ 7projections_by_function$cgo%cg@@@ ~G@/@@@/f@@ఐ |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@@@@0@@@0@@@0@@@0@@@0@@@@0@@@@0@@@0@@0@@0@@0@@0@@0}|@@@0{@xw@@@0 @vsr@@@0@@0 @@@0 @@0 @@0 @@0@q@n@@@@@@01@@@00@@@0/@@@0.@@@0-@@@@0*@ՠ@@@0,@@@0+@@0)@@0(@@0'@@0&@@0%@@@0$Π@@@@0"@@@@0#@@0!@@@0 @@0@@0@@0@@@@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 H/home/touraine/ci/builds/workspace/main/flambda/false/label/ocaml-arm-32 >10/.-,+*)('&%$#"! @@0cQM?1qi(3@@@/Allocated_const0ЖݔTWŠ(Asttypes0>n{T8cئ0{{<\r#9Ø#m,Backend_intf0)LSxjf15Build_path_prefix_map0z HkGs8CamlinternalFormatBasics0%FU(Q/Tu0CamlinternalLazy0&͂7 Pˆ2Clambda_primitives01U1ʐ0r.SU߈#g/Closure_element0.1 @1ѧU*Closure_id0sM;@eAlx.Closure_origin0aBzlt@*Cmi_format0_j~GB00Compilation_unit0i(&ۥ$P.*Data_types0I'Ue`wq]Ѡ)Debuginfo0PtJ=^w/#Env0J=,Wu)Export_id0Qh: " 09L@jmƠ'Flambda01Ux|ՍCb- *Format_doc0]mWϓ:Mݠ*Freshening0$1\MmAʳ%Ident0ki8' x%+Š,Identifiable0~ܽǞ+7Inline_and_simplify_aux0WtC --Inlining_cost0,30`JD:G2P͠4Inlining_stats_types0|Ca~T E~O0ixjx-{`͡;7Internal_variable_names0HdeՄL ԩ 0?| ^"0x]XZ&Lambda0.Vu$ ^3,Linkage_name0h AEa.C1 R)Load_path0I@18 ~(Location0a7cK_H%9)Longident0s `7mɕc$Misc0Z1X=_c0Mutable_variable0_ ?.+L'Numbers00$ PS6?nu.+Outcometree0euWS~d栠)Parameter0Kb"Qjʑǭ@uYu)Parsetree0Uҩ=p>*%"e$Path0(|r>8۠dwx)Primitive0²~$xzT෠'Profile0E.8_~e*Projection0n訥(2Set_of_closures_id0pi|ny6Set_of_closures_origin0{HO/Pؠ%Shape0mA;HXߠ3Simple_value_approx0P*+ K`#4MK0Static_exception0wBߝܔd3B&Stdlib0-i8Q"L{v;+Stdlib__Arg0اp2/٠r)w.Stdlib__Buffer08APF< t..Stdlib__Digest0l!LHgErζ .Stdlib__Domain0Bj|5s)ڠ.Stdlib__Either0Vy`u~c à.Stdlib__Format0ɢb tLir/Stdlib__Hashtbl0ѱN][/!-Stdlib__Int640l-J ~m-۠,Stdlib__Lazy0* -S$.)"0D.Stdlib__Lexing0e<.V +Stdlib__Map0hؤ5O8% By.Stdlib__Result06 ]/J+Stdlib__Seq0nwzG&amg+Stdlib__Set0kb'G|PIF(.Stdlib__String0s&Symbol0_)Ӷӥ!h#Tag0 %XC}{3.Type_immediacy0A^abOhՠ%Types0R.z78m 0 W/Zf젠)Unit_info0ڀh%(2Var_within_closure0H6ʤ(fc2ӉrH(Variable0]Eè0=(Warnings0mJɒkgr