Caml1999I031&Switch&sharedc8!a@@A&Shared  @@1lambda/switch.mli`BS`B_@@A&Single @@ `B` `Bn@@!B@@A@Y@@@@@`BB@@@@&@A@'t_stored8!a@#ctx@@B'act_get@@$unitF@@@%arrayH@@@@@7c8c@@MD.act_get_shared@@@@@[3@@@@@@@@OdPd@@eE)act_store@@:@A#intA@@@@@@@aebe@@wF0act_store_shared@@L@S@@@@@@@qfrf,@@G@@A@n@@@@@@ybppzf.@@@@CA@&Storede!tn8@@@A@@@@@iIKiIQ@@@@HA@#keyo8@@@A@@@@@jRTjR\@@@@IA@+compare_keyp@@@@@@@@K@@@@@@@@k]_k]@@J@(make_keyq@2@@@&optionJ"@@@@@@@@@ll@@K@@@h00m@L@)CtxStoredfNr8@@@A@@@@@M@@@JA@Is8@@@A@@@@@H@@@EA@Dt@ @@@@@@@C@@@@@@@@B@?@'contextu8@@@A@@@@@qq@@@@MA@(make_keyv@@@@@1@@@M*@@@@@@@@@@@rr@@$N@@@os@(O@Ӡ(CtxStoreg@!AmU(mk_storew@@@@!t@@@ؠ'context@@@@@@@@@?w=C@w=r@@UQ@@@CuDxsz@YR@@Ӡ%Storeh@!Alԑ(mk_storex@1@@@1!t@@@Ӡ?@@@@@@@@@n|o|@@T@@@rz||s}@U@@!Si)primitivey8@@@A@@@@@C / 3C / A@@@@VA@%eqintz@@@@E c gE c |@@W@%neint{ @@@@F } F } @@X@%leint|@@@@G  G  @@Y@%ltint}%@@@@H  H  @@Z@%geint~1@@@@I  I  @@[@%gtint=@@@@J  J  @@\@#loc8@@@A@@@@@M # 'M # /@@@@]A@#arg8@@@A@@@@@O T XO T `@@@@^A@$test8@@@A@@@@@Q  Q  @@@@_A@#act8@@@A@@@@@S  S  @@@@`A@$bind@#@@@@@@@@@@@@@@@@@@@@@ [   [  @@"a@*make_const@@@@!@@@@@@] B F] B a@@4b@+make_offset@/@@@@@@@8@@@@@@@@5`  6`  @@Kc@)make_prim@@@@@$listIQ@@@@@@o@@@@@@@@Sc i mTc i @@id@*make_isout@d@@@@i@@@@@@@@@@@ifjf+@@e@)make_isin@z@@@@@@@-@@@@@@@@ii@@f@/make_is_nonzero@@@@>@@@@@@ll@@@g@+arg_as_test@@@@O@@@@@@oo@@h@'make_if@]@@@@@@@@@@@@@@@@@@@@@qq.@@i@+make_switch@@@@@@@@@{@@@@@@@@@@@@@@@@@@@@@@@@@uu@@j@*make_catch@@@@@@@ˠ@@@@@@@@@@@@@@xx?@@k@)make_exit@@@@@@@@@@y@Cy@]@@.l@@@@z^c@2m@Ӡ$Makej@#Argk$zyva@#loc@@@j@@@@l@@@k@@m@#arg@@@n@!@@@q@@@p@@@o@@r@@@s@;8#act@@@u@@t@@@vA#act@@@w@@x@@y@@z@@{@@|@z{@@o@-test_sequence@Q#arg@@@}@\8@@@=@@@B@@@~@@@@@@vs#act@@@;@@@@{#act@@@@@@@@@@ew@@p@@@x@q@@@d8-&Switch0EVF3NiS&Stdlib0>,W:(8CamlinternalFormatBasics0cEXy@@0zyyzzzzz@w@A?>@A('t_store Bbpbp@А!a@0@N8@@@@@B@A@GG@BB@@@bppf.@@@@C@Abpvbpx@@aА#ctx@bpzbp~@@l@8% @B'act_get@@@@@7D@@@@@@cc@@D.act_get_shared@@-@@@PD@@@@@@@@@dd@@E)act_store@@AD@@bD@@@@@@@@ǰee@@ F0act_store_shared@@UD@@vD@@@@@@@@аff,@@!G@@A@n@@@@@@q@@@n@\\Nc@@Ш@б@г_$unit)c*c@@g@@гd%array2c3c@А!al9c:c@@@s @@z @@}@D@@p@llYCd@@Ш@б@гo$unitNdOd@@w@@гt%arrayWdXd@гy&shared`dad@А!a̰gdhd@@@ϰ @@@а@@Ѱ@@@D@@@tre@@Ш@б@А#ctx{e|e@@б@А!aee@@г#intee@@@@ @@@@@D@@@f@@Ш@б@А#ctxff@@б@А!a f!f#@@г#intf'f*@@@@ @@@@@D@@@@A@@@0@@A@б&StoredEh0<h0B@БA(!tCiIPiIQ@@8@@@A@@@@@iIK@@@@H@@A@@@0@;K@A@A(#keyDjRYjR\@@8@@@A@@@@@jRT@@@@I@@A@@@0@@A@+compare_keyk]ck]n@б@г#keyk]qk]t@@ @@@0@'!@A@@б@г-#keyk]xk]{@@ @@@@@г#intk]k]@@ @@@@@@@@!@@@'@@$* @@@)k]_@@7J@@@*(make_key4l5l@б@гp!t?l@l@@ @@@098899999@CX@A@@г&optionNlOl@гw#keyXlYl@@ @@@@@@@@@ @@@$@@!'@@@hl@@vK@@@'@A@A@J@C @@0hgghhhhh@0E@A 0kjjkkkkk@@Axh0Eym@@@{h00@0qppqqqqq@@A@б)CtxStoredHoo@БРנ&Storedpp@0@A@A@~@wA@@@-L@A@@F8@@@A@@@@@@@@A@F8@@@A@@@@@@@@A@@ @@@@@@@@@@@@@@@@@@!@@@@@@@@@@@@m@k@@p>@@<?@A('contextGqq@@8@@@A@@@@@q@@@@M@@A@@@0@P@?<;87&%@A @(make_keyrr@б@г'contextrr@@ @@@0@*$@A@@б@гa!trr@@ @@@ @@г&optionr r@гt#key'r(r @@ @@@ (@@@@@@ - @@@"@@ 0%@@@6@@39@@@:r@@HN@@@9@f`A@T @@098899999@AV@A 0<;;<<<<<@@AIoJs@@@Lo@0BAABBBBB@@A@(CtxStore IYuZu%@@Т!AJdu&eu'@Р砐)CtxStoredmu(nu1@0eddeeeee@A@A@@A@G@@@4O@A@@Б(mk_storew=Gw=O@б@г䠐$unitw=Rw=V@@ @@@0@.@@9@>PC@A  @@г't_storew=kw=r@гR!t!Aw=[w=^@@ @@@ @@гc'context!Aw=`w=i@@ @@@1@@@+@@@7w=Z*@@@> @@ ;A-@@@w=C0@@Q@2@@A@W@@0@DY @A0@F@Av59xsz@@y0@x@A@@@u@@%Store#Kz|z|@@Т!A!Lz|z|@РK&Stored z| z|@0@@?@@@-$R@A @@Б(mk_store"$|%|@б@г|$unit/|0|@@ @@@!0)(()))))@(:@3@8FS=@A  @@г't_storeB|C|@гL!t!AO|P|@@ @@@+ @@г$unit]|^|@@ @@@,.@@@(@@@/4i|'@@@; @@08>*@@@o|-@@}T@/@@>@T@@0ihhiiiii@AV @A0lkklllll@C@Ay{z}@@p0rqqrrrrr@o@A@@@z||@@б!S;R@ @ @БA()primitive$MC / 8C / A@@8@@@A@@@@@C / 3@@@@V@@A@@@0@@;@@@)U@A @%eqint%E c kE c p@г")primitiveE c sE c |@@ @@@10@"-'@A@@@E c g @@W@ @@%neint&F } F } @г@)primitiveF } F } @@ @@@20@2@A@@@F }  @@X@ @@%leint'G  G  @г^)primitiveG  G  @@ @@@30@2@A@@@G   @@Y@ @@%ltint( H   H  @г|)primitiveH  H  @@ @@@40@2@A@@@H   @@-Z@ @@%geint)*I  +I  @г)primitive3I  4I  @@ @@@50-,,-----@2@A@@@=I   @@K[@ @@%gtint*HJ  IJ  @г)primitiveQJ  RJ  @@ @@@60KJJKKKKK@2@A@@@[J   @@i\@ @@A(#loc+NgM # ,hM # /@@8@@@A@@@@@kM # '@@@@y]@@A@@@0baabbbbb@+@A@A(#arg,OyO T ]zO T `@@8@@@A@@@@@}O T X@@@@^@@A@@@0tssttttt@@A@A($test-PQ  Q  @@8@@@A@@@@@Q  @@@@_@@A@@@0@@A@A(#act.QS  S  @@8@@@A@@@@@S  @@@@`@@A@@@0@@A@$bind/[  [  @б@г@#arg[  [  @@ @@@70@'!@A@@б@б@гS#arg[  [  @@ @@@8@@г<#act[  [  @@ @@@9 @@@@@:#@@гL#act[  [  @@ @@@;0@@@@@<3[   @@@:@@=7= @@@[  @@a@@@=*make_const0] B J] B T@б@г#int] B W] B Z@@ @@@>0@Vk@A@@г#arg] B ^] B a@@ @@@?@@@@@@@@@(] B F @@6b@ @@+make_offset13`  4`  @б@гŠ#arg>`  ?`  @@ @@@A087788888@1F@A@@б@г#intO`  P`  @@ @@@B@@г㠐#arg\`  ]`  @@ @@@C@@@@@D!@@@'@@E$* @@@j`  @@xc@@@*)make_prim2uc i qvc i z@б@г砐)primitivec i }c i @@ @@@F0zyyzzzzz@CX@A@@б@г$listc i c i @г"#argc i c i @@ @@@G@@@@@@I  @@г"$testc i c i @@ @@@J-@@@@@K0@@@6@@L39 @@@c i m@@d@@@9*make_isout3f f@б@гX#argff@@ @@@M0@Rg@A@@б@гi#argf f#@@ @@@N@@гd$testf'f+@@ @@@O@@@@@P!@@@'@@Q$* @@@f@@ e@@@*)make_isin4i i@б@г#argii@@ @@@R0        @CX@A@@б@г#arg$i%i@@ @@@S@@г$test1i2i@@ @@@T@@@@@U!@@@'@@V$* @@@?i@@Mf@@@*/make_is_nonzero5Jl#Kl2@б@гܠ#argUl5Vl8@@ @@@W0ONNOOOOO@CX@A@@г٠$testdl<el@@@ @@@X@@@@@Y@@@ol @@}g@ @@+arg_as_test6zo{o@б@г #argoo@@ @@@Z0~~@1F@A@@г $testoo@@ @@@[@@@@@\@@@o @@h@ @@'make_if7q q@б@г*$testqq@@ @@@]0@1F@A@@б@г)#actqq @@ @@@^@@б@г8#actq$q'@@ @@@_ @@гE#actq+q.@@ @@@`-@@@@@a0@@@%@@b3( @@@9@@c6<@@@q@@ i@@@<+make_switch8uu@б@г#loc u u@@ @@@d0        @Uj@A@@б@г#arg u u@@ @@@e@@б@г%array )u *u@гѠ#int 3u 4u@@ @@@f*@@@@@@h/ @@б@г %array Gu Hu@г#act Qu Ru@@ @@@iH@@@@@@kM @@гƠ#act cu du@@ @@@lZ@@@@@m]@@@5@@n`< @@@U@@ocX@@@i@@pfl@@@ wu@@ j@@@l*make_catch9 x x#@б@г#act x& x)@@ @@@q0        @@A@@Вг =#int x- x0@@ @@@r@@б@г#act x4 x7@@ @@@s"@@г#act x; x>@@ @@@t/@@@@@u2@@@'@@v7+ x?@@@>@@w;A@@@ x@@ k@ @@A)make_exit: y@G y@P@б@г #int y@S y@V@@ @@@x0        @Zo@A@@гX#act y@Z y@]@@ @@@y@@@@@z@@@ y@C @@ l@ @@@pjA@YD@=(@! @@@@A@A@A@zA@q%@@@h@a(@!@@@:@3@a@Z3@@0 & % % & & & & &@G\5@A10 ) ( ( ) ) ) ) )@@A 6A   7z^c@@@ 9@@0 / . . / / / / /@@A@$Make?S F G@@Т#Arg  @б@гE#arg#Arg  @@ @@@0        @"@A@@б@г w%array 9 >@Вг S#int ( +@@ @@@@@г a#int . 1@@ @@@,@@г o#int 4 7@@ @@@:@@@# @@@( @@@< @@@E ':@@б@г \'t_store BZ Ba@г#act#Arg BN BU@@ @@@b@@@@@g BW BX@@@! @@@o BM @@г#act#Arg ep ew@@ @@@@@@@@@@@E@@A @@@@@@@@ (@@ 6p@@@@@ @@0 $ # # $ $ $ $ $@ @A0 ' & & ' ' ' ' '@@A 4 5x@@0 - , , - - - - -@@A :@@@ <@ @@ D A@  A@ @@@@@g@c6@@]@@@@!@@@!@ dq@@@0 M L L M M M M M@@ @=@@@( @A@ H************************************************************************ gA@@ hA@L@ H  mBMM nBM@ H OCaml  sC tC@ H  yD zD3@ H Luc Maranget, projet Moscova, INRIA Rocquencourt  E44 E4@ H  F F@ H Copyright 2000 Institut National de Recherche en Informatique et  G G@ H en Automatique.  H Hg@ H  Ihh Ih@ H All rights reserved. This file is distributed under the terms of  J J@ H the GNU Lesser General Public License version 2.1, with the  K KN@ H special exception on linking described in the file LICENSE.  LOO LO@ H  M M@ H************************************************************************ N N5@ W This module transforms generic switches in combinations of if tests and switches.  P77 S@ , For detecting action sharing, object style  U U@ v Store for actions in object style: act_store : store an action, returns index in table In case an action with equal key exists, returns index of the stored action. Otherwise add entry in table. act_store_shared : This stored action will always be shared. act_get : retrieve table act_get_shared : retrieve table, with sharing explicit  W ^>@@? Arguments to the Make functor   @5 type of basic tests  B   B  .@8 basic tests themselves  D B F D B b@: type of source locations  L   L  "@; type of switch scrutinees  N 0 4 N 0 S@= type of tests on scrutinees  P a e P a @1 type of actions  R   R  @ M Various constructors, for making a binder, adding one integer, etc.  U   V  @ [bind arg cont] should bind the expression arg to a variable, then call [cont] on that variable, and return the term made of the binding and the result of the call.  X   Z  @ > [make_const n] generates a term for the integer constant [n]  \   \  A@ c [make_offset arg n] generates a term for adding the constant integer [n] to the term [arg]  ^ b f _  @ j [make_prim p args] generates a test using the primitive operation [p] applied to arguments [args]  a   b C h@ ` [make_isout h arg] generates a test that holds when [arg] is out of the interval [0, h]  d   e @ [ [make_isin h arg] generates a test that holds when [arg] is in the interval [0, h]  g,0 hr@ [ [make_is_nonzero arg] generates a test that holds when [arg] is any value except 0  !j "k@ T [arg_as_test arg] casts [arg], known to be either 0 or 1, to a boolean test  'mAE (n@ : [make_if cond ifso ifnot] generates a conditional branch  -p .p@ e construct an actual switch : make_switch arg cases acts NB: cases is in the value form  3r/2 4ts@ + Build last minute sharing of action stuff  9w :w@ H Make.zyva arg low high cases actions where - arg is the argument of the switch. - low, high are the interval limits. - cases is a list of sub-interval and action indices - actions is an array of actions. All these arguments specify a switch construct and zyva returns an action that performs the switch.  ?}ff @@ * Standard entry point, sharing is tracked  E F@ ' Output test sequence, sharing tracked  K L@@-./boot/ocamlc"-g)-nostdlib"-I$boot*-use-prims2runtime/primitives0-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(toplevel"-c y z */home/barsac/ci/builds/workspace/bootstrap - @0 Vnt0 Hs0        @ @@8CamlinternalFormatBasics0cEXy,W:( 0EVF3NiS@0EVF3NiSAi@k@,+:9 \ _@@@@@NM@  @ C B@/1@po  5@@ "EG@ 3  @DC@ED@@@@c  @@@@@!#@ A u@BAް    @@  @Ӱ  @@@P@