Caml1999T037\DWC6Unbox_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;@@#intA@@@@@&_none_@@A@A@$charB;@@$charA@@@@@ @A@&stringQ;@@&stringA@@@@@@@@%bytesC;@@%bytesA@@@@@@@@%floatD;@@%floatA@@@@@@@@$boolE;@@%falsec@@%@$trued@@+@@@A@@@@@,@A@$unitF;@@"()e@@6@@@A@@@@@7@A@ #exnG;@@@A@@@@@;@@@#effH;@@O@A@A@@@@@@D@@@,continuationI;@@Q@@P@B,continuationA@nY@@@@@@T@@@%arrayJ;@@R@A%arrayA@@@@@@_@@@ $listK;@@S@A"[]f@@l@"::g@@@T@@y@ @@A@Y@@@@@|@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@)nativeintA@@@@@@@@%int32N;@@%int32A@@@@@@@@%int64O;@@%int64A@@@@@@@@&lazy_tP;@@X@A&lazy_tA@Y@@@@@@@@ 5extension_constructorR;@@5extension_constructorA@@@@@@@@*floatarrayS;@@*floatarrayA@@@@@@@@&iarrayT;@@Y@A&iarrayA@Y@@@@@@@@ *atomic_locU;@@Z@A*atomic_locA@@@@@@@@@ .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@@A5!4!@)Not_foundZ#O@@@A&=)<)@-Out_of_memoryW#W@@@A.E1D1@.Stack_overflow^#_@@@A6M9L9@.Sys_blocked_io_#g@@@A>UATA@)Sys_error[#o@j@@AG^J]J@:Undefined_recursive_modulea#x@@w@s@u@@h@@AXo[n[@:Continuation_already_takenb#@@@A`wcvc@&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@Es@@డ#noti\j\@@@@@O@@N @@@M@@L(%boolnotAA@@@LLLt@@\@@@@@@@@@@@@@@@@డ(Variable#Map(is_empty(Variable\\@ \\@@\\@ @@(Variable#Map!t!a@@@@@@$boolE@@@@@@6utils/identifiable.mlimm@@+Stdlib__Mapc@-#@@@ 'Flambda.specialised_to@@@! H@@@@@@@@@@@@@ఐc/set_of_closures\\@@@/set_of_closures@@@! @! @0specialised_args\\@30specialised_args @@@ (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@@@ @@@ @@C0@@(22)23@@jQ@@@,(6(8-(6(i@@nP@\M@@Gw@@@! e@@P\@@@@@@!!I@n@@@@@@@ @!"H@v@@e@@w@A@D@!&@A@@@@ఠ2what_to_specialisefp^q^1@}EA@@#env7Inline_and_simplify_aux#Env!t@@@3D@!(@@!)/set_of_closures2/set_of_closures@@@!4D@!.@@!/!t@@@!D@!0@@!1D@!*@@!+D@!'3@1`Y@Z@[@@@࣠//hA3^3^6@FA@@53@F^d@@@@@^2 @//iA3^9^H@GA@г6'Flambda^K^R@=^S^b@@@E@@@!23@*5a@-@.@@ @@ @@@M@@^7^c@@@ఠ2what_to_specialisej_fn_f@HA@@Y@@@!G@!83@=g@@@!5@8@9@@@డ&create!W _f _f@  _f_f@@/set_of_closures'Flambda/set_of_closures@@@!W@@!V@@@!U@@!T@ /middle_end/flambda/augment_specialised_args.mli\^@@8Augment_specialised_argsE@ @@@@@!o@@!n@@@!m@@!l=@"ఐ~/set_of_closures=_f>_f@G@@-@@@!H@!H@!Q@@? @@UR@A@I_fj @@డ#notU`V`@@@@@@@!@@!@@@!@@!3KJJKKKKK@m{t@u@v@@@@ఐ+,preconditionq`r`@Ѱ@@(D@3D@.D@24D@!@@!'#@@@!@@!@@@!@@!@@!'@=ఐ蠐#env``@@@4@>ఐ᠐/set_of_closures``@@@G@@@!H@!H@!H@@``@@A@@@!@!H@!R@@` @@\@@@!G@!Y@ఐՠ2what_to_specialiseaa@`@@+c@@ఠ7projections_by_functionwcc@IA@@$*Projection#Set!t@@@2@@@2~G@!3@@@@డY#Map*filter_map(VariabledJdR@ dSdV@@dWda@ @@@[#key@@@@@@!a@@@&optionL!b@@@@@@@@@@@w@@@@@{@@@@@@@@j@f`@;1@@@@.@@@!@@!@4function_declaration@@@"3I@!@@!0v@@@.~I@!@@@!@@!@@!@@!@@@@!@@!@@@!@@!@@!3HGGHHHHH@@@@@࣠@(_fun_varxAnebqoeby@{JA@@e@@@"(@@@@-function_declyAeb{eb@KA@гB'Flambdaebeb@Iebeb@@@Q@@@"13@73@@@"'@-@.@@ @@ebzeb@@@^ @@@@ఐ3-function_declff@n@@@"4@3@4@@4function_declaration@@@";@"93@&G@@@$stubff@3$stub@@@ $boolE@@@ @@E/3.closure_origin .Closure_origin!t@@@ @@@ @@-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@@1Y@3,free_symbolsH&Symbol#Set!t@@@ @@DI@@699699@@AZ@X3#dbgX)Debuginfo!t@@@ @@FW@@ ?;;?;;@@O\@3&inlinef&Lambda0inline_attribute@@@ @@Ge@@A<<A<<@@@]]@3*specialiset4specialise_attribute@@@ @@Hq@@'CG=7=U@@`@@@A:::B:::@@[@@@@@@"@@@"A@ภ$Somehh@;@A@AA@AB@@డ3Extract_projections2from_function_decl3Extract_projectionshh@ hh)@@#env7Inline_and_simplify_aux#Env!t@@@"]@@"\/which_variables(Variable#Map!t'Flambda.specialised_to@@@"[@@@"Z@@"Y-function_decl4function_declaration@@@"X@@"W@@@"V@@"U@@"T@@"S@ *middle_end/flambda/extract_projections.mli]a6K@@3Extract_projections@@GB@@?=@@@"h@@"g64-@@@"f@@@"e@@"d(&@@@"c@@"b@@@"a@@"`@@"_@@"^:@[ఐV#envh+h.@'@@G@XఐQ/set_of_closuresjPsjP@@@!@@@2?@2<[@0specialised_argsjPjP@@@j@@@.M@2AM@2>@@@2=m@eఐ-function_decl4i/B5i/O@@@p@@@.M@2UM@2T@@?h@jP@@@@@@L@"F@Ef@@@GeblHjP@@@D@@@"@@"@@@">@@@"@@"@@"J@2dJ@2^x@@e@@@"@@@"@@"@@@"@@"@@ఐ/set_of_closureswd#xd2@@@@@@2@2@.function_declsd3dA@r@@s@@@2@2@$funsdBdF@3$funs~@@@ #Map!t@@@ @@@ @@C3/is_classic_mode@@@ @@@@@4444@@R@32set_of_closures_id2Set_of_closures_id!t@@@ @@A@@5254525^@@S@36set_of_closures_origin*6Set_of_closures_origin!t@@@ @@B#@@"66"666@@T@8@@'7(7*'7(7U@@U@W>@@8@@@2H@2H@2@@@2@@c@@@A@c@@@ఠ5invariant_params_flown  %n  :@LA@@(Variable#Map!t $Pair#Set!t@@@2@@@2G@23@70@1@2@@@డ0Invariant_params7invariant_param_sources0Invariant_params o = E o = U@  o = V o = m@@@'Flambda5function_declarations@@@2@@2'backend,Backend_intf!S@@2@@2IB@@@2@@@2@@2@@2@ 'middle_end/flambda/invariant_params.mliort@@0Invariant_paramsA@0+@@@(@@@2@@2#!@@2@@2e^@@@2@@@2@@2@@2W@@ఐ/set_of_closures do = n eo = }@n@@u@@@3@3k@.function_decls po = ~ qo = @_@@X@@@3H@3H@3y@Sడ7Inline_and_simplify_aux#Env'backend7Inline_and_simplify_aux p   p  @  p   p  @@ p   p  @ @@#@@@0@@0,Backend_intf!S@@0@@0@ .middle_end/flambda/inline_and_simplify_aux.mlii  i 7@@-B@"@@@8@@@3 @@3 @@3@@3@@ఐ#env p   p  @@@M@@ p   p  @@@@2I@3@@@@@A@ n  ! @@డF#Map$fold(Variable r   r  @  r   r  @@ r   r  @ @@@@@@@@@!a@@@@#acc@@@@@@@@@@@@_@@@@@@@@@@@@@@@R@N\@6,@@@@@@@3,@@3+@*Projection#Set!t@@@3F@3$@@3*@@@@4F@3 @@3)@@3(@@3'@@3&@@3%@@@@3#@@3"@@@3!@@3@@3@@33 4 3 3 4 4 4 4 4@Kkd@e@f@@@@࣠@'fun_varA \r   ]r  @ iMA@@S@@@3U3 L K K L L L L L@@@@@ @@+extractionsA nr   or  @ {NA@@H3 [ Z Z [ [ [ [ [@(h@@@3T@@@@@@  @@2what_to_specialiseA r   r  @ OA@@L3 o n n o o o o o@!_@@@@@@@@డ*Projection#Set$fold*Projection s  $ s  .@  s  / s  2@@ s  3 s  7@ @@@#elt@@@%5@@%4@#acc@#@@%3@@%2@@%1@@%0@@@@%/@@%.@@@%-@@%,@@%+@@%*@ !middle_end/flambda/projection.mliJ  J  @@+Stdlib__Set\@4*@@@@'@@@3u@@3t@J@3l@@3s@@3r@@3q@@3p@@@@3o@@3n@ @@3m @@3k@@3j@@3i3        @iu@l@m@@@@࣠@*projectionA s  > s  H@ PA@гx!t*Projection s  K s  U@  s  V s  W@@@@@@33        @-@@ @@ s  = s  X@@@m@@@3@@@@2what_to_specialiseA -t Y k .t Y }@ :QA@@P3        @D;.@@@3@5@6@@@@  @@@ఠ%group Cu   Du  @ PRA@@(Variable!t@@@3N@33 : 9 9 : : : : :@!-s@$@%@@@డ/projecting_from*Projection au   bu  @  eu   fu  @@@@!t@@@#:@@#9)@@@#8@@#7@M  M  @@GW@@@@@@@3@@38@@@3@@33@@ఐ*projection u   u  @]@@(@@@3O@3O@3G@@8 @@PH@A@ u   @@  డ#Map#mem(Variable v   v  @  v   v  @@ v   v  @ @@@@@@@@!a@@@@@@@@@@@@@@ @ e@&@@@@@@4@@4@/@@@4oN@4@@@4@@4@@@4@@3@@33        @@@@@@@ఐ%group v   v  @ @@@@@4]O@4\@@ఐO/set_of_closures v   v  @@@@@@4p@4m)@0specialised_args v   v  @@@:@@@4n4@@ "v   #v  @@o@@@4O@4<@ *v  @@ @@@4N@4D@@ఠ2what_to_specialise  ;w  & @@@#=@@#<@@#;@oP U UpP U @@ X@-(@@@@@@9.@@9-%@#@@@9,@@9+ @@@9*@@9)@@9(@@@9'@@9&@@9%3@??@@@@@@@@@@ఐf*projectionbU5cU?@1@@@@@9DT@9FT@9Eh@K࣠@#varTAzV@b{V@e@YA@@S@@@9M}@@@@  డ %equal(VariableWiWi@ WiWi@@@@@@@@9Y@@9X@@@@9W@@9V@@@9U@@9T@@9S3@<@@@9L@6@7@@@@ఐF#varWiWi@@@@@@9mW@9l@@ఐ%groupWiWi@@@@@@9uW@9t*@@WiWi@@ %@@@9zW@9e2@Wi@@@@@9|V@9{9@ఐ/target_spec_argXX@Z@@@@@9~U@9}H@@@I@V@]X@@@@@@9B@@9A@@@9@@@9?T@9T@9@@@@@A@ T@@డ-3new_specialised_arg!WZZ@ ZZ@@Ű@@@ @@@9@@9@@@9@@9@@@9@@9@@@9@@9 @@@9@@9@@9@@9@@93'&&'''''@jIB@C@D@@@@ఐ2what_to_specialiseKZLZ,@v@@@ఐ.target_fun_varX[-NY[-\@ư@@@@@9S@9S@9$@ఐ)%groupl[-^m[-c@@@@@@9S@9S@98@ภ (Projection_from_existing_specialised_arg]]@ఐ*projection]]@K@@@@@9S@9S@9U@@]]@@@@@9S@9]@@@@gS@9`@NPm^@@@IPd@@n@G^@@@@@@8@@8@@@8@@8@@8P@9P@9Q@@ఐ$flow__@z@@@@@8P@>P@>@@ఐ2what_to_specialise` ` -@j@@ <@@@>@@@@v@@@A|  @@.@ @@@ @@@E @@@s  8` .@@@7@@@3@@3@@@3@@3@@3K@>K@>@@ఐ+extractionsa/;a/F@u@@@@ఐ2what_to_specialisebGS bGe@@@@@n@@+@ r  bGf@@@ @@@3K@@3J@@@3I@@@3H@@3G@@3F@@3EG@>G@>@@ఐ \7projections_by_function,cgo-cg@ +@@}G@?@@@?@@ఐ R2what_to_specialise?d @ ܰ @@ @@@?@@` @@ @s @@  E@ l @@  c@H` @@  e@  @@  T@  A@ D@?  @A@ @  @ @3@ @  @ @ @@3>==>>>>>@  @@XW2Ye@ 3DCCDDDDD@1@@@@]W@@гР$Make#ASArgsg@ vgwg@@@3dccddddd@Rr@d@A @1@@@)s@@@#Arg@!S7rewrite_set_of_closures#env7Inline_and_simplify_aux#Env!t@@@?<@@?;2duplicate_function#env#Env!t@@@?:@@?9/set_of_closures /set_of_closures@@@?8@@?7'fun_varb!t@@@?6@@?5+new_fun_varn!t@@@?4@@?3@ 4function_declaration@@@?0@#Map!t .specialised_to@@@?2@@@?1@@?/@@?.@@?-@@?,@@?+@@?*/set_of_closures /set_of_closures@@@?)@@?(&optionL@ $expr@@@?&@-Inlining_cost'Benefit!t@@@?'@@?%@@@?$@@?#@@?"@@?!@ v @ | @@ L@@@@@@Р)Transform+g,g@@@@@@@@@B@@@;g@@@@?@@?@@@?@@?@@@?~@@?}@@@?|@@?{@@@?z@@?y@@@@?v@@@@?x@@@?w@@?u@@?t@@?s@@?r@@?q@@?p@@@?o@@?n@@@@?l@@@@?m@@?k@@@?j@@?i@@?h@@?g@@|@@#@   @@@?@@?@@@?@@?@@@?@@?@@@?@@?@@@?@@?@@@@?@@@@?@@@?@@?@@?@@?@@?@@?@@?@@@?@@?@@@@?@@@@?@@?@@@?@@?@@?@@?@@@@g@@@@?A,@*9@@$A @@@@@@@m@3@nm@@@6Unbox_specialised_args@@AJ@AI@@ H************************************************************************A@@A@L@ H "BMM#BM@ H OCaml (C)C@ H .D/D3@ H Pierre Chambart, OCamlPro 4E445E4@ H Mark Shinwell and Leo White, Jane Street Europe :F;F@ H @GAG@ H Copyright 2013--2016 OCamlPro SAS FHGHg@ H Copyright 2014--2016 Jane Street Group LLC LIhhMIh@ H RJSJ@ H All rights reserved. This file is distributed under the terms of XKYKN@ H the GNU Lesser General Public License version 2.1, with the ^LOO_LO@ H special exception on linking described in the file LICENSE. dMeM@ H jNkN5@ H************************************************************************pO66qO6@ q CR-soon mshinwell: consider caching the Invariant_params *relation* as well as the "_in_recursion" map vlwm @ % 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. |  }F@ 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.) OsS@@*./ocamlopt)-nostdlib"-I(./stdlib"-I1otherlibs/dynlink"-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_events2-function-sections"-c J/home/ci/builds/workspace/precheck/flambda/false/label/ocaml-ubuntu-latest ?>3210/.-,+*)('&%$#"! @@0cQM?1qi(3@@@/Allocated_const0/vVǟx(Asttypes0eT$BbRM dc0#Ή`,Backend_intf0󋚕LQ:X^r#5Build_path_prefix_map0DGl}%Y5Lhi8CamlinternalFormatBasics0|.e1R$|o0CamlinternalLazy0zY# #4#-2Clambda_primitives0|& %ZIǝzԐ0 @Ϳsٿ/Closure_element0ǔf#M*Closure_id0 (?$.Closure_origin0!Havl5"_*Cmi_format08zR^0Compilation_unit0Dl ]wN&Config0܈[P(N {~Š*Data_types0v\3,Svh)Debuginfo0_ |PooGq#Env0gu{u9?*a2@)Export_id0CJ9DןRa7ݷ$E 0䛌FOb5۾'Flambda0VJ͟*Format_doc0uy@GmWUࠠ*Freshening0xW("-9wVԠ%Ident0>ЃzV)j⠠,Identifiable0]/*N 7Inline_and_simplify_aux0E#X̕B,;x -Inlining_cost0i(wypP1 󰠠4Inlining_stats_types0)x0pukC\0Dw\jۛv7Internal_variable_names0TbgѹG+L c0|cR6gJ!&Lambda0=qvsL E ,Linkage_name0tԈK1G)Load_path0,j " nn7ݠ(Location0nBɊOn?7~ؠ)Longident0wP q;ɡ$Misc0]\/j*^e0Mutable_variable0CQᷧ$'Numbers0 q޷He+Outcometree0BuG^)= 9c )Parameter0zk^f2my19)Parsetree0v o[pY Y$Path0k.tbGmᠠ)Primitive0dU=\I/}'Profile0i֓}խ٠*Projection02hS xj562Set_of_closures_id0LbO`ܩ&M6Set_of_closures_origin0!YA _XO %Shape0 M``ll3Simple_value_approx0 c[k%S\KѠ0Static_exception0Jmyrqܒx-8ɞ&Stdlib0t0VoS%{<F:+Stdlib__Arg03#a]֢2T.Stdlib__Buffer0,I[?z.Stdlib__Digest0#z25I*.Stdlib__Domain0'Ϳo\0m.K.Stdlib__Either0HD ?|>.Stdlib__Format0b HvkR/Stdlib__Hashtbl0(L%bԠ-Stdlib__Int640q=cT?Q1ˠ,Stdlib__Lazy0$1mlࠠ.Stdlib__Lexing0^m|e+Stdlib__Map0*4ɇ2ɠ%Subst0=aqT/!p+&Symbol03E?Y7(#Tag0&b rٍ.Type_immediacy00$ jbv\"k&%Types0"|Vȷ`X Y0jhV7_:8k )Unit_info0'T Χ@aR2Var_within_closure0``ݗXFR⠠(Variable0?l猵eY(Warnings0Ef{&@@ALC~@{@@@@@@@@q{MW@ 5 ?,6@@@ 3 =@  @lv@@P@@@@@@&D@@x@u@@@W@T@@@1@.@@@ABC@@@@@A@@