From b6fe79be29618c32914585c6b63564cf3f547577 Mon Sep 17 00:00:00 2001 From: Chris Casinghino Date: Sun, 17 Mar 2024 09:38:59 -0400 Subject: [PATCH 1/2] Check for [@zero_alloc] earlier, record it in the typed tree --- backend/checkmach.ml | 6 +- chamelon/compat.jst.ml | 20 +- middle_end/flambda2/terms/check_attribute.ml | 4 +- ocaml/.depend | 51 +- ocaml/boot/ocamlc | Bin 4319779 -> 4317428 bytes ocaml/compilerlibs/Makefile.compilerlibs | 1 - ocaml/dune | 3 +- ocaml/lambda/assume_info.ml | 91 -- ocaml/lambda/assume_info.mli | 37 - ocaml/lambda/debuginfo.ml | 44 +- ocaml/lambda/debuginfo.mli | 20 +- ocaml/lambda/lambda.ml | 14 +- ocaml/lambda/lambda.mli | 5 +- ocaml/lambda/translattribute.ml | 247 +--- ocaml/lambda/translattribute.mli | 2 - ocaml/lambda/translcore.ml | 46 +- ocaml/otherlibs/dynlink/Makefile | 1 - ocaml/otherlibs/dynlink/dune | 5 - ocaml/parsing/builtin_attributes.ml | 205 ++++ ocaml/parsing/builtin_attributes.mli | 66 + .../tests/warnings/marshall_for_w53.ml | 7 + .../tests/warnings/w53.compilers.reference | 140 +++ ocaml/testsuite/tests/warnings/w53.ml | 64 + .../w53_marshalled.compilers.reference | 1069 ----------------- .../tests/warnings/w53_marshalled.ml | 10 +- .../w53_zero_alloc_all.compilers.reference | 139 +++ .../tests/warnings/w53_zero_alloc_all.ml | 80 ++ ocaml/tools/Makefile | 2 +- ocaml/typing/printtyped.ml | 5 +- ocaml/typing/rec_check.ml | 9 +- ocaml/typing/tast_iterator.ml | 2 +- ocaml/typing/tast_mapper.ml | 10 +- ocaml/typing/typecore.ml | 59 +- ocaml/typing/typedtree.ml | 3 +- ocaml/typing/typedtree.mli | 13 +- ocaml/typing/uniqueness_analysis.ml | 2 +- ocaml/typing/untypeast.ml | 2 +- ocaml/utils/zero_alloc_utils.ml | 96 ++ ocaml/utils/zero_alloc_utils.mli | 47 +- tests/backend/checkmach/dune.inc | 19 - tests/backend/checkmach/gen/gen_dune.ml | 1 - .../backend/checkmach/test_misplaced_attr.ml | 9 - .../checkmach/test_misplaced_attr.output | 9 - 43 files changed, 1056 insertions(+), 1609 deletions(-) delete mode 100644 ocaml/lambda/assume_info.ml delete mode 100644 ocaml/lambda/assume_info.mli delete mode 100644 ocaml/testsuite/tests/warnings/w53_marshalled.compilers.reference create mode 100644 ocaml/testsuite/tests/warnings/w53_zero_alloc_all.compilers.reference create mode 100644 ocaml/testsuite/tests/warnings/w53_zero_alloc_all.ml delete mode 100644 tests/backend/checkmach/test_misplaced_attr.ml delete mode 100644 tests/backend/checkmach/test_misplaced_attr.output diff --git a/backend/checkmach.ml b/backend/checkmach.ml index 0be6480bbf4..9ca8fb7fb87 100644 --- a/backend/checkmach.ml +++ b/backend/checkmach.ml @@ -335,17 +335,17 @@ end = struct Assume_info due to cyclic dependencies. The witnesses in Assume_info are always empty and the translation is trivial. Is there a better way to avoid duplicating [Zero_alloc_utils]? *) - let transl w (v : Assume_info.V.t) : V.t = + let transl w (v : Zero_alloc_utils.Assume_info.V.t) : V.t = match v with Top _ -> Top w | Safe -> Safe | Bot -> Bot - let transl w (v : Assume_info.Value.t) : Value.t = + let transl w (v : Zero_alloc_utils.Assume_info.Value.t) : Value.t = { nor = transl w v.nor; exn = transl w v.exn; div = transl w v.div } let assume_value dbg ~can_raise w = (* [loc] can be obtained by [Debuginfo.to_location dbg], For now just return [Location.none] because it is not used. *) let a = Debuginfo.assume_zero_alloc dbg in - match Assume_info.get_value a with + match Zero_alloc_utils.Assume_info.get_value a with | None -> None | Some v -> let v = transl w v in diff --git a/chamelon/compat.jst.ml b/chamelon/compat.jst.ml index b667f5c6a4f..6c9cbdc960e 100644 --- a/chamelon/compat.jst.ml +++ b/chamelon/compat.jst.ml @@ -17,15 +17,16 @@ let mkTexp_ident ?id:(ident_kind, uu = (Id_value, shared_many_use)) Texp_ident (path, longident, vd, ident_kind, uu) type nonrec apply_arg = apply_arg -type texp_apply_identifier = apply_position * Locality.l +type texp_apply_identifier = apply_position * Locality.l * Assume_info.t let mkTexp_apply - ?id:(pos, mode = (Default, Locality.disallow_right Locality.legacy)) + ?id:(pos, mode, za = + (Default, Locality.disallow_right Locality.legacy, Assume_info.none)) (exp, args) = let args = List.map (fun (label, x) -> (Typetexp.transl_label label None, x)) args in - Texp_apply (exp, args, pos, mode) + Texp_apply (exp, args, pos, mode, za) type texp_tuple_identifier = string option list * Alloc.r @@ -86,6 +87,7 @@ type texp_function_identifier = { ret_sort : Jkind.sort; region : bool; ret_mode : Alloc.l; + zero_alloc : Builtin_attributes.check_attribute; } let texp_function_cases_identifier_defaults = @@ -110,6 +112,7 @@ let texp_function_defaults = ret_sort = Jkind.Sort.value; ret_mode = Alloc.disallow_right Alloc.legacy; region = false; + zero_alloc = Builtin_attributes.Default_check; } let mkTexp_function ?(id = texp_function_defaults) @@ -163,6 +166,7 @@ let mkTexp_function ?(id = texp_function_defaults) region = id.region; ret_sort = id.ret_sort; ret_mode = id.ret_mode; + zero_alloc = id.zero_alloc; } type texp_sequence_identifier = Jkind.sort @@ -206,15 +210,16 @@ let view_texp (e : expression_desc) = match e with | Texp_ident (path, longident, vd, ident_kind, uu) -> Texp_ident (path, longident, vd, (ident_kind, uu)) - | Texp_apply (exp, args, pos, mode) -> + | Texp_apply (exp, args, pos, mode, za) -> let args = List.map (fun (label, x) -> (untype_label label, x)) args in - Texp_apply (exp, args, (pos, mode)) + Texp_apply (exp, args, (pos, mode, za)) | Texp_construct (name, desc, args, mode) -> Texp_construct (name, desc, args, mode) | Texp_tuple (args, mode) -> let labels, args = List.split args in Texp_tuple (args, (labels, mode)) - | Texp_function { params; body; alloc_mode; region; ret_sort; ret_mode } -> + | Texp_function + { params; body; alloc_mode; region; ret_sort; ret_mode; zero_alloc } -> let params = List.map (fun param -> @@ -259,7 +264,8 @@ let view_texp (e : expression_desc) = } in Texp_function - ({ params; body }, { alloc_mode; region; ret_sort; ret_mode }) + ( { params; body }, + { alloc_mode; region; ret_sort; ret_mode; zero_alloc } ) | Texp_sequence (e1, sort, e2) -> Texp_sequence (e1, e2, sort) | Texp_match (e, sort, cases, partial) -> Texp_match (e, cases, partial, sort) | _ -> O e diff --git a/middle_end/flambda2/terms/check_attribute.ml b/middle_end/flambda2/terms/check_attribute.ml index 5d49c1d37ab..ba42047b701 100644 --- a/middle_end/flambda2/terms/check_attribute.ml +++ b/middle_end/flambda2/terms/check_attribute.ml @@ -50,7 +50,7 @@ let from_lambda : Lambda.check_attribute -> Location.t -> t = match a with | Default_check -> if !Clflags.zero_alloc_check_assert_all - && Lambda.is_check_enabled ~opt:false Zero_alloc + && Builtin_attributes.is_check_enabled ~opt:false Zero_alloc then Check { property = Zero_alloc; strict = false; loc } else Default_check | Ignore_assert_all Zero_alloc -> Default_check @@ -62,7 +62,7 @@ let from_lambda : Lambda.check_attribute -> Location.t -> t = loc } | Check { property; strict; opt; loc } -> - if Lambda.is_check_enabled ~opt property + if Builtin_attributes.is_check_enabled ~opt property then Check { property = Property.from_lambda property; strict; loc } else Default_check diff --git a/ocaml/.depend b/ocaml/.depend index 9677a1f668d..da3fd7fdbcc 100644 --- a/ocaml/.depend +++ b/ocaml/.depend @@ -400,6 +400,7 @@ parsing/attr_helper.cmi : \ parsing/location.cmi \ parsing/asttypes.cmi parsing/builtin_attributes.cmo : \ + utils/zero_alloc_utils.cmi \ utils/warnings.cmi \ parsing/parsetree.cmi \ utils/misc.cmi \ @@ -412,6 +413,7 @@ parsing/builtin_attributes.cmo : \ parsing/ast_helper.cmi \ parsing/builtin_attributes.cmi parsing/builtin_attributes.cmx : \ + utils/zero_alloc_utils.cmx \ utils/warnings.cmx \ parsing/parsetree.cmi \ utils/misc.cmx \ @@ -424,6 +426,7 @@ parsing/builtin_attributes.cmx : \ parsing/ast_helper.cmx \ parsing/builtin_attributes.cmi parsing/builtin_attributes.cmi : \ + utils/zero_alloc_utils.cmi \ parsing/parsetree.cmi \ utils/misc.cmi \ parsing/location.cmi @@ -1452,6 +1455,7 @@ typing/printtyp.cmi : \ typing/env.cmi \ parsing/asttypes.cmi typing/printtyped.cmo : \ + utils/zero_alloc_utils.cmi \ typing/types.cmi \ typing/typedtree.cmi \ parsing/printast.cmi \ @@ -1468,6 +1472,7 @@ typing/printtyped.cmo : \ parsing/asttypes.cmi \ typing/printtyped.cmi typing/printtyped.cmx : \ + utils/zero_alloc_utils.cmx \ typing/types.cmx \ typing/typedtree.cmx \ parsing/printast.cmx \ @@ -1731,6 +1736,7 @@ typing/typeclass.cmi : \ typing/ctype.cmi \ parsing/asttypes.cmi typing/typecore.cmo : \ + utils/zero_alloc_utils.cmi \ utils/warnings.cmi \ typing/untypeast.cmi \ typing/uniqueness_analysis.cmi \ @@ -1773,6 +1779,7 @@ typing/typecore.cmo : \ parsing/ast_helper.cmi \ typing/typecore.cmi typing/typecore.cmx : \ + utils/zero_alloc_utils.cmx \ utils/warnings.cmx \ typing/untypeast.cmx \ typing/uniqueness_analysis.cmx \ @@ -1994,6 +2001,7 @@ typing/typedecl_variance.cmi : \ typing/env.cmi \ parsing/asttypes.cmi typing/typedtree.cmo : \ + utils/zero_alloc_utils.cmi \ typing/types.cmi \ typing/shape.cmi \ typing/primitive.cmi \ @@ -2007,9 +2015,11 @@ typing/typedtree.cmo : \ parsing/jane_asttypes.cmi \ typing/ident.cmi \ typing/env.cmi \ + parsing/builtin_attributes.cmi \ parsing/asttypes.cmi \ typing/typedtree.cmi typing/typedtree.cmx : \ + utils/zero_alloc_utils.cmx \ typing/types.cmx \ typing/shape.cmx \ typing/primitive.cmx \ @@ -2023,9 +2033,11 @@ typing/typedtree.cmx : \ parsing/jane_asttypes.cmx \ typing/ident.cmx \ typing/env.cmx \ + parsing/builtin_attributes.cmx \ parsing/asttypes.cmi \ typing/typedtree.cmi typing/typedtree.cmi : \ + utils/zero_alloc_utils.cmi \ typing/types.cmi \ typing/shape.cmi \ typing/primitive.cmi \ @@ -2039,6 +2051,7 @@ typing/typedtree.cmi : \ parsing/jane_asttypes.cmi \ typing/ident.cmi \ typing/env.cmi \ + parsing/builtin_attributes.cmi \ parsing/asttypes.cmi typing/typemod.cmo : \ utils/warnings.cmi \ @@ -3958,36 +3971,28 @@ middle_end/variable.cmi : \ utils/identifiable.cmi \ typing/ident.cmi \ utils/compilation_unit.cmi -lambda/assume_info.cmo : \ - utils/zero_alloc_utils.cmi \ - lambda/assume_info.cmi -lambda/assume_info.cmx : \ - utils/zero_alloc_utils.cmx \ - lambda/assume_info.cmi -lambda/assume_info.cmi : \ - utils/zero_alloc_utils.cmi lambda/debuginfo.cmo : \ + utils/zero_alloc_utils.cmi \ parsing/location.cmi \ utils/int_replace_polymorphic_compare.cmi \ typing/ident.cmi \ utils/compilation_unit.cmi \ parsing/asttypes.cmi \ - lambda/assume_info.cmi \ lambda/debuginfo.cmi lambda/debuginfo.cmx : \ + utils/zero_alloc_utils.cmx \ parsing/location.cmx \ utils/int_replace_polymorphic_compare.cmx \ typing/ident.cmx \ utils/compilation_unit.cmx \ parsing/asttypes.cmi \ - lambda/assume_info.cmx \ lambda/debuginfo.cmi lambda/debuginfo.cmi : \ + utils/zero_alloc_utils.cmi \ parsing/location.cmi \ typing/ident.cmi \ utils/compilation_unit.cmi \ - parsing/asttypes.cmi \ - lambda/assume_info.cmi + parsing/asttypes.cmi lambda/lambda.cmo : \ typing/types.cmi \ typing/typedtree.cmi \ @@ -4003,6 +4008,7 @@ lambda/lambda.cmo : \ utils/config.cmi \ utils/compilation_unit.cmi \ utils/clflags.cmi \ + parsing/builtin_attributes.cmi \ parsing/asttypes.cmi \ lambda/lambda.cmi lambda/lambda.cmx : \ @@ -4020,6 +4026,7 @@ lambda/lambda.cmx : \ utils/config.cmx \ utils/compilation_unit.cmx \ utils/clflags.cmx \ + parsing/builtin_attributes.cmx \ parsing/asttypes.cmi \ lambda/lambda.cmi lambda/lambda.cmi : \ @@ -4034,6 +4041,7 @@ lambda/lambda.cmi : \ typing/env.cmi \ lambda/debuginfo.cmi \ utils/compilation_unit.cmi \ + parsing/builtin_attributes.cmi \ parsing/asttypes.cmi lambda/matching.cmo : \ typing/types.cmi \ @@ -4249,36 +4257,25 @@ lambda/translattribute.cmo : \ utils/warnings.cmi \ typing/typedtree.cmi \ parsing/parsetree.cmi \ - utils/misc.cmi \ - parsing/longident.cmi \ parsing/location.cmi \ lambda/lambda.cmi \ utils/config.cmi \ - utils/clflags.cmi \ parsing/builtin_attributes.cmi \ - parsing/asttypes.cmi \ - lambda/assume_info.cmi \ lambda/translattribute.cmi lambda/translattribute.cmx : \ utils/warnings.cmx \ typing/typedtree.cmx \ parsing/parsetree.cmi \ - utils/misc.cmx \ - parsing/longident.cmx \ parsing/location.cmx \ lambda/lambda.cmx \ utils/config.cmx \ - utils/clflags.cmx \ parsing/builtin_attributes.cmx \ - parsing/asttypes.cmi \ - lambda/assume_info.cmx \ lambda/translattribute.cmi lambda/translattribute.cmi : \ typing/typedtree.cmi \ parsing/parsetree.cmi \ parsing/location.cmi \ - lambda/lambda.cmi \ - lambda/assume_info.cmi + lambda/lambda.cmi lambda/translclass.cmo : \ typing/types.cmi \ typing/typeopt.cmi \ @@ -4323,6 +4320,7 @@ lambda/translclass.cmi : \ lambda/debuginfo.cmi \ parsing/asttypes.cmi lambda/translcore.cmo : \ + utils/zero_alloc_utils.cmi \ typing/types.cmi \ typing/typeopt.cmi \ typing/typedtree.cmi \ @@ -4352,11 +4350,12 @@ lambda/translcore.cmo : \ typing/ctype.cmi \ utils/config.cmi \ utils/clflags.cmi \ + parsing/builtin_attributes.cmi \ typing/btype.cmi \ parsing/asttypes.cmi \ - lambda/assume_info.cmi \ lambda/translcore.cmi lambda/translcore.cmx : \ + utils/zero_alloc_utils.cmx \ typing/types.cmx \ typing/typeopt.cmx \ typing/typedtree.cmx \ @@ -4386,9 +4385,9 @@ lambda/translcore.cmx : \ typing/ctype.cmx \ utils/config.cmx \ utils/clflags.cmx \ + parsing/builtin_attributes.cmx \ typing/btype.cmx \ parsing/asttypes.cmi \ - lambda/assume_info.cmx \ lambda/translcore.cmi lambda/translcore.cmi : \ typing/types.cmi \ diff --git a/ocaml/boot/ocamlc b/ocaml/boot/ocamlc index cb3649689dc67a8c823ab4237329167184511e55..b40bc5281a853f1c3a8e5d4a3df454852f824c47 100755 GIT binary patch delta 303819 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

U1!X4 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 0 - | Assume v1, Assume v2 -> Value.compare v1 v2 - | No_assume, Assume _ -> -1 - | Assume _, No_assume -> 1 - -let equal t1 t2 = compare t1 t2 = 0 - -let print ppf = function - | No_assume -> () - | Assume v -> Format.fprintf ppf "%a" (Value.print ~witnesses:false) v - -let to_string v = Format.asprintf "%a" print v - -let join t1 t2 = - match t1, t2 with - | No_assume, No_assume -> No_assume - | No_assume, Assume _ | Assume _, No_assume -> No_assume - | Assume t1, Assume t2 -> Assume (Value.join t1 t2) - -let meet t1 t2 = - match t1, t2 with - | No_assume, No_assume -> No_assume - | No_assume, (Assume _ as t) | (Assume _ as t), No_assume -> t - | Assume t1, Assume t2 -> Assume (Value.meet t1 t2) - -let none = No_assume - -let create ~strict ~never_returns_normally = - let res = if strict then Value.safe else Value.relaxed Witnesses.empty in - let res = if never_returns_normally then { res with nor = V.Bot } else res in - Assume res - -let get_value t = match t with No_assume -> None | Assume v -> Some v - -let is_none t = match t with No_assume -> true | Assume _ -> false diff --git a/ocaml/lambda/assume_info.mli b/ocaml/lambda/assume_info.mli deleted file mode 100644 index 7dae53941fc..00000000000 --- a/ocaml/lambda/assume_info.mli +++ /dev/null @@ -1,37 +0,0 @@ -type t - -val none : t - -val create : strict:bool -> never_returns_normally:bool -> t - -val compare : t -> t -> int - -val equal : t -> t -> bool - -val join : t -> t -> t - -val meet : t -> t -> t - -val to_string : t -> string - -val print : Format.formatter -> t -> unit - -val is_none : t -> bool - -module Witnesses : sig - type t = unit - - val join : t -> t -> t - - val meet : t -> t -> t - - val lessequal : t -> t -> bool - - val print : Format.formatter -> t -> unit - - val compare : t -> t -> int -end - -include module type of Zero_alloc_utils.Make (Witnesses) - -val get_value : t -> Value.t option diff --git a/ocaml/lambda/debuginfo.ml b/ocaml/lambda/debuginfo.ml index b8f6e3152e9..802354475c7 100644 --- a/ocaml/lambda/debuginfo.ml +++ b/ocaml/lambda/debuginfo.ml @@ -17,6 +17,8 @@ open! Int_replace_polymorphic_compare open Lexing open Location +module ZA = Zero_alloc_utils + module Scoped_location = struct type scope_item = | Sc_anonymous_function @@ -43,7 +45,7 @@ module Scoped_location = struct type scopes = | Empty | Cons of {item: scope_item; str: string; str_fun: string; name : string; prev: scopes; - assume_zero_alloc: Assume_info.t} + assume_zero_alloc: ZA.Assume_info.t} let str = function | Empty -> "" @@ -88,15 +90,15 @@ module Scoped_location = struct let enter_compilation_unit ~scopes cu = let name = Compilation_unit.name_as_string cu in cons scopes Sc_module_definition (dot scopes name) name - ~assume_zero_alloc:Assume_info.none + ~assume_zero_alloc:ZA.Assume_info.none let enter_module_definition ~scopes id = cons scopes Sc_module_definition (dot scopes (Ident.name id)) (Ident.name id) - ~assume_zero_alloc:Assume_info.none + ~assume_zero_alloc:ZA.Assume_info.none let enter_class_definition ~scopes id = cons scopes Sc_class_definition (dot scopes (Ident.name id)) (Ident.name id) - ~assume_zero_alloc:Assume_info.none + ~assume_zero_alloc:ZA.Assume_info.none let enter_method_definition ~scopes (s : Asttypes.label) = let str = @@ -104,36 +106,37 @@ module Scoped_location = struct | Cons {item = Sc_class_definition; _} -> dot ~sep:"#" scopes s | _ -> dot scopes s in - cons scopes Sc_method_definition str s ~assume_zero_alloc:Assume_info.none + cons scopes Sc_method_definition str s + ~assume_zero_alloc:ZA.Assume_info.none let enter_lazy ~scopes = cons scopes Sc_lazy (str scopes) "" - ~assume_zero_alloc:Assume_info.none + ~assume_zero_alloc:ZA.Assume_info.none let enter_partial_or_eta_wrapper ~scopes = cons scopes Sc_partial_or_eta_wrapper (dot ~no_parens:() scopes "(partial)") "" - ~assume_zero_alloc:Assume_info.none + ~assume_zero_alloc:ZA.Assume_info.none let update_assume_zero_alloc ~scopes ~assume_zero_alloc = match scopes with | Empty -> Empty | Cons r -> - if Assume_info.equal r.assume_zero_alloc assume_zero_alloc + if ZA.Assume_info.equal r.assume_zero_alloc assume_zero_alloc then scopes else let assume_zero_alloc = - Assume_info.meet r.assume_zero_alloc assume_zero_alloc + ZA.Assume_info.meet r.assume_zero_alloc assume_zero_alloc in Cons { r with assume_zero_alloc } let get_assume_zero_alloc ~scopes = match scopes with - | Empty -> Assume_info.none + | Empty -> ZA.Assume_info.none | Cons { assume_zero_alloc; _ } -> assume_zero_alloc let string_of_scopes = function | Empty -> "" | Cons {str; assume_zero_alloc; _} -> - str^(Assume_info.to_string assume_zero_alloc) + str^(ZA.Assume_info.to_string assume_zero_alloc) let string_of_scopes = let module StringSet = Set.Make (String) in @@ -244,18 +247,18 @@ module Dbg = struct end -type t = { dbg : Dbg.t; assume_zero_alloc : Assume_info.t } +type t = { dbg : Dbg.t; assume_zero_alloc : ZA.Assume_info.t } type alloc_dbginfo_item = { alloc_words : int; alloc_dbg : t } type alloc_dbginfo = alloc_dbginfo_item list -let none = { dbg = []; assume_zero_alloc = Assume_info.none } +let none = { dbg = []; assume_zero_alloc = ZA.Assume_info.none } let to_string { dbg; assume_zero_alloc; } = let s = Dbg.to_string dbg in - let a = Assume_info.to_string assume_zero_alloc in + let a = ZA.Assume_info.to_string assume_zero_alloc in s^a let item_from_location ~scopes loc = @@ -279,7 +282,8 @@ let item_from_location ~scopes loc = } let from_location = function - | Scoped_location.Loc_unknown -> { dbg = []; assume_zero_alloc = Assume_info.none; } + | Scoped_location.Loc_unknown -> + { dbg = []; assume_zero_alloc = ZA.Assume_info.none; } | Scoped_location.Loc_known {scopes; loc} -> assert (not (Location.is_none loc)); let assume_zero_alloc = Scoped_location.get_assume_zero_alloc ~scopes in @@ -305,15 +309,15 @@ let to_location { dbg; assume_zero_alloc=_ } = let inline { dbg = dbg1; assume_zero_alloc = a1; } { dbg = dbg2; assume_zero_alloc = a2; } = - { dbg = dbg1 @ dbg2; assume_zero_alloc = Assume_info.meet a1 a2; } + { dbg = dbg1 @ dbg2; assume_zero_alloc = ZA.Assume_info.meet a1 a2; } let is_none { dbg; assume_zero_alloc } = - Assume_info.is_none assume_zero_alloc && Dbg.is_none dbg + ZA.Assume_info.is_none assume_zero_alloc && Dbg.is_none dbg let compare { dbg = dbg1; assume_zero_alloc = a1; } { dbg = dbg2; assume_zero_alloc = a2; } = let res = Dbg.compare dbg1 dbg2 in - if res <> 0 then res else Assume_info.compare a1 a2 + if res <> 0 then res else ZA.Assume_info.compare a1 a2 let rec print_compact ppf t = let print_item item = @@ -341,12 +345,12 @@ let merge ~into:{ dbg = dbg1; assume_zero_alloc = a1; } from the other. *) let dbg = - match Assume_info.is_none a1, Assume_info.is_none a2 with + match ZA.Assume_info.is_none a1, ZA.Assume_info.is_none a2 with | false, true -> dbg2 | _, _ -> dbg1 in { dbg; - assume_zero_alloc = Assume_info.join a1 a2 + assume_zero_alloc = ZA.Assume_info.join a1 a2 } let assume_zero_alloc t = t.assume_zero_alloc diff --git a/ocaml/lambda/debuginfo.mli b/ocaml/lambda/debuginfo.mli index 12008f11786..15943e40dc1 100644 --- a/ocaml/lambda/debuginfo.mli +++ b/ocaml/lambda/debuginfo.mli @@ -13,6 +13,8 @@ (* *) (**************************************************************************) +module ZA = Zero_alloc_utils + module Scoped_location : sig type scope_item = private | Sc_anonymous_function @@ -28,24 +30,24 @@ module Scoped_location : sig type scopes = private | Empty | Cons of {item: scope_item; str: string; str_fun: string; name : string; prev: scopes; - assume_zero_alloc: Assume_info.t} + assume_zero_alloc: ZA.Assume_info.t} val string_of_scopes : scopes -> string val empty_scopes : scopes - val enter_anonymous_function : scopes:scopes -> assume_zero_alloc:Assume_info.t - -> scopes - val enter_value_definition : scopes:scopes -> assume_zero_alloc:Assume_info.t - -> Ident.t -> scopes + val enter_anonymous_function : + scopes:scopes -> assume_zero_alloc:ZA.Assume_info.t -> scopes + val enter_value_definition : + scopes:scopes -> assume_zero_alloc:ZA.Assume_info.t -> Ident.t -> scopes val enter_compilation_unit : scopes:scopes -> Compilation_unit.t -> scopes val enter_module_definition : scopes:scopes -> Ident.t -> scopes val enter_class_definition : scopes:scopes -> Ident.t -> scopes val enter_method_definition : scopes:scopes -> Asttypes.label -> scopes val enter_lazy : scopes:scopes -> scopes val enter_partial_or_eta_wrapper : scopes:scopes -> scopes - val update_assume_zero_alloc : scopes:scopes -> - assume_zero_alloc:Assume_info.t -> scopes - val get_assume_zero_alloc : scopes:scopes -> Assume_info.t + val update_assume_zero_alloc : + scopes:scopes -> assume_zero_alloc:ZA.Assume_info.t -> scopes + val get_assume_zero_alloc : scopes:scopes -> ZA.Assume_info.t type t = | Loc_unknown @@ -102,7 +104,7 @@ val print_compact : Format.formatter -> t -> unit val merge : into:t -> t -> t -val assume_zero_alloc : t -> Assume_info.t +val assume_zero_alloc : t -> ZA.Assume_info.t module Dbg : sig type t diff --git a/ocaml/lambda/lambda.ml b/ocaml/lambda/lambda.ml index 0a28a97c13e..410e2bc3413 100644 --- a/ocaml/lambda/lambda.ml +++ b/ocaml/lambda/lambda.ml @@ -580,14 +580,14 @@ type local_attribute = | Never_local (* [@local never] *) | Default_local (* [@local maybe] or no [@local] attribute *) -type property = +type property = Builtin_attributes.property = | Zero_alloc type poll_attribute = | Error_poll (* [@poll error] *) | Default_poll (* no [@poll] attribute *) -type check_attribute = +type check_attribute = Builtin_attributes.check_attribute = | Default_check | Ignore_assert_all of property | Check of { property: property; @@ -1872,16 +1872,6 @@ let array_set_kind mode = function | Punboxedintarray int_kind -> Punboxedintarray_set int_kind | Punboxedfloatarray float_kind -> Punboxedfloatarray_set float_kind -let is_check_enabled ~opt property = - match property with - | Zero_alloc -> - match !Clflags.zero_alloc_check with - | No_check -> false - | Check_all -> true - | Check_default -> not opt - | Check_opt_only -> opt - - let may_allocate_in_region lam = (* loop_region raises, if the lambda might allocate in parent region *) let rec loop_region lam = diff --git a/ocaml/lambda/lambda.mli b/ocaml/lambda/lambda.mli index c437ba46429..f0b0ab422f2 100644 --- a/ocaml/lambda/lambda.mli +++ b/ocaml/lambda/lambda.mli @@ -463,14 +463,14 @@ type local_attribute = | Never_local (* [@local never] *) | Default_local (* [@local maybe] or no [@local] attribute *) -type property = +type property = Builtin_attributes.property = | Zero_alloc type poll_attribute = | Error_poll (* [@poll error] *) | Default_poll (* no [@poll] attribute *) -type check_attribute = +type check_attribute = Builtin_attributes.check_attribute = | Default_check | Ignore_assert_all of property | Check of { property: property; @@ -867,7 +867,6 @@ val array_ref_kind : alloc_mode -> array_kind -> array_ref_kind (** The mode will be discarded if unnecessary for the given [array_kind] *) val array_set_kind : modify_mode -> array_kind -> array_set_kind -val is_check_enabled : opt:bool -> property -> bool (* Returns true if the given lambda can allocate on the local stack *) val may_allocate_in_region : lambda -> bool diff --git a/ocaml/lambda/translattribute.ml b/ocaml/lambda/translattribute.ml index ae7ff8f652f..d648430ed37 100644 --- a/ocaml/lambda/translattribute.ml +++ b/ocaml/lambda/translattribute.ml @@ -17,7 +17,6 @@ open Typedtree open Lambda open Location - let is_inline_attribute = [ ["inline"; "ocaml.inline"],true ] @@ -38,9 +37,6 @@ let is_local_attribute = let is_tailcall_attribute = [ ["tailcall"; "ocaml.tailcall"], true ] -let is_property_attribute = function - | Zero_alloc -> [ ["zero_alloc"; "ocaml.zero_alloc"], true ] - let is_tmc_attribute = [ ["tail_mod_cons"; "ocaml.tail_mod_cons"], true ] @@ -56,129 +52,17 @@ let is_opaque_attribute = let is_unboxable_attribute = [ ["unboxable"; "ocaml.unboxable"], true ] -let find_attribute ?mark_used p attributes = - let inline_attribute = - Builtin_attributes.filter_attributes ?mark:mark_used - (Builtin_attributes.Attributes_filter.create p) - attributes - in - let attr = - match inline_attribute with - | [] -> None - | [attr] -> Some attr - | attr :: {Parsetree.attr_name = {txt;loc}; _} :: _ -> - Location.prerr_warning loc (Warnings.Duplicated_attribute txt); - Some attr - in - attr - let is_unrolled = function | {txt="unrolled"|"ocaml.unrolled"} -> true | {txt="inline"|"ocaml.inline"|"inlined"|"ocaml.inlined"} -> false | _ -> assert false -let get_payload get_from_exp = - let open Parsetree in - function - | PStr [{pstr_desc = Pstr_eval (exp, [])}] -> get_from_exp exp - | _ -> Result.Error () - -let get_optional_payload get_from_exp = - let open Parsetree in - function - | PStr [] -> Result.Ok None - | other -> Result.map Option.some (get_payload get_from_exp other) - -let get_id_from_exp = - let open Parsetree in - function - | { pexp_desc = Pexp_ident { txt = Longident.Lident id } } -> Result.Ok id - | _ -> Result.Error () - -let get_int_from_exp = - let open Parsetree in - function - | { pexp_desc = Pexp_constant (Pconst_integer(s, None)) } -> - begin match Misc.Int_literal_converter.int s with - | n -> Result.Ok n - | exception (Failure _) -> Result.Error () - end - | _ -> Result.Error () - -let get_construct_from_exp = - let open Parsetree in - function - | { pexp_desc = - Pexp_construct ({ txt = Longident.Lident constr }, None) } -> - Result.Ok constr - | _ -> Result.Error () - -let get_bool_from_exp exp = - Result.bind (get_construct_from_exp exp) - (function - | "true" -> Result.Ok true - | "false" -> Result.Ok false - | _ -> Result.Error ()) - -let get_ids_from_exp exp = - let open Parsetree in - (match exp with - | { pexp_desc = Pexp_apply (exp, args) } -> - get_id_from_exp exp :: - List.map (function - | (Nolabel, arg) -> get_id_from_exp arg - | (_, _) -> Result.Error ()) - args - | _ -> [get_id_from_exp exp]) - |> List.fold_left (fun acc r -> - match acc, r with - | Result.Ok ids, Ok id -> Result.Ok (id::ids) - | (Result.Error _ | Ok _), _ -> Result.Error ()) - (Ok []) - |> Result.map List.rev - - -(* [parse_ids_payload] requires that each element in [cases] - the first component (string list) is alphabetically sorted. *) -let parse_ids_payload txt loc ~default ~empty cases payload = - let[@local] warn () = - let ( %> ) f g x = g (f x) in - let msg = - cases - |> List.map (fst %> String.concat " " %> Printf.sprintf "'%s'") - |> String.concat ", " - |> Printf.sprintf "It must be either %s or empty" - in - Location.prerr_warning loc (Warnings.Attribute_payload (txt, msg)); - default - in - match get_optional_payload get_ids_from_exp payload with - | Error () -> warn () - | Ok None -> empty - | Ok (Some ids) -> - match List.assoc_opt (List.sort String.compare ids) cases with - | Some r -> r - | None -> warn () - -let parse_id_payload txt loc ~default ~empty cases payload = - let[@local] warn () = - let ( %> ) f g x = g (f x) in - let msg = - cases - |> List.map (fst %> Printf.sprintf "'%s'") - |> String.concat ", " - |> Printf.sprintf "It must be either %s or empty" - in - Location.prerr_warning loc (Warnings.Attribute_payload (txt, msg)); - default - in - match get_optional_payload get_id_from_exp payload with - | Error () -> warn () - | Ok None -> empty - | Ok (Some id) -> - match List.assoc_opt id cases with - | Some r -> r - | None -> warn () +let parse_id_payload txt loc options ~default ~empty payload = + match + Builtin_attributes.parse_optional_id_payload txt loc options ~empty payload + with + | Ok a -> a + | Error () -> default let parse_inline_attribute attr : inline_attribute = match attr with @@ -189,7 +73,7 @@ let parse_inline_attribute attr : inline_attribute = let warning txt = Warnings.Attribute_payload (txt, "It must be an integer literal") in - match get_payload get_int_from_exp payload with + match Builtin_attributes.get_int_payload payload with | Ok n -> Unroll n | Error () -> Location.prerr_warning loc (warning txt); @@ -214,7 +98,7 @@ let parse_inlined_attribute attr : inlined_attribute = let warning txt = Warnings.Attribute_payload (txt, "It must be an integer literal") in - match get_payload get_int_from_exp payload with + match Builtin_attributes.get_int_payload payload with | Ok n -> Unroll n | Error () -> Location.prerr_warning loc (warning txt); @@ -257,29 +141,6 @@ let parse_local_attribute attr = ] payload -let parse_property_attribute attr property = - match attr with - | None -> Default_check - | Some {Parsetree.attr_name = {txt; loc}; attr_payload = payload}-> - parse_ids_payload txt loc - ~default:Default_check - ~empty:(Check { property; strict = false; opt = false; loc; } ) - [ - ["assume"], - Assume { property; strict = false; never_returns_normally = false; loc; }; - ["strict"], Check { property; strict = true; opt = false; loc; }; - ["opt"], Check { property; strict = false; opt = true; loc; }; - ["opt"; "strict"; ], Check { property; strict = true; opt = true; loc; }; - ["assume"; "strict"], - Assume { property; strict = true; never_returns_normally = false; loc; }; - ["assume"; "never_returns_normally"], - Assume { property; strict = false; never_returns_normally = true; loc; }; - ["assume"; "never_returns_normally"; "strict";], - Assume { property; strict = true; never_returns_normally = true; loc; }; - ["ignore"], Ignore_assert_all property - ] - payload - let parse_poll_attribute attr = match attr with | None -> Default_poll @@ -315,6 +176,8 @@ let parse_opaque_attribute attr = [] payload +let find_attribute p l = + Builtin_attributes.(find_attribute (Attributes_filter.create p) l) let get_inline_attribute l = let attr = find_attribute is_inline_attribute l in @@ -333,23 +196,6 @@ let get_opaque_attribute l = parse_opaque_attribute attr -let get_property_attribute l p = - let attr = find_attribute (is_property_attribute p) l in - let res = parse_property_attribute attr p in - (match attr, res with - | None, Default_check -> () - | _, Default_check -> () - | None, (Check _ | Assume _ | Ignore_assert_all _) -> assert false - | Some _, Ignore_assert_all _ -> () - | Some _, Assume _ -> () - | Some attr, Check { opt; _ } -> - if Lambda.is_check_enabled ~opt p && !Clflags.native_code then - (* The warning for unchecked functions will not trigger if the check is requested - through the [@@@zero_alloc all] top-level annotation rather than through the - function annotation [@zero_alloc]. *) - Builtin_attributes.register_property attr.attr_name); - res - let get_poll_attribute l = let attr = find_attribute is_poll_attribute l in parse_poll_attribute attr @@ -463,74 +309,6 @@ let add_local_attribute expr loc attributes = end | _ -> expr -let assume_zero_alloc ?mark_used attributes : Assume_info.t = - let p = Zero_alloc in - let attr = find_attribute ?mark_used (is_property_attribute p) attributes in - let res = parse_property_attribute attr p in - match res with - | Default_check -> Assume_info.none - | Ignore_assert_all _ -> Assume_info.none - | Assume { strict; never_returns_normally; } -> - Assume_info.create ~strict ~never_returns_normally - | Check { loc; _ } -> - let attr = Option.get attr in - let name = attr.attr_name.txt in - let msg = "Only the following combinations are supported in this context: \ - 'zero_alloc assume', \ - `zero_alloc assume strict`, \ - `zero_alloc assume never_returns_normally`,\ - `zero_alloc assume never_returns_normally strict`." - in - Location.prerr_warning loc (Warnings.Attribute_payload (name, msg)); - Assume_info.none - -let get_assume_zero_alloc ~with_warnings attributes = - if with_warnings then - assume_zero_alloc attributes - else - (* This function is used for "look-ahead" to find attributes - that affect [Scoped_location] settings before translation - of expressions in that scope. - Warnings will be produced by [add_check_attribute]. *) - Warnings.without_warnings (fun () -> assume_zero_alloc ~mark_used:false attributes) - -let add_check_attribute expr loc attributes = - let to_string = function - | Zero_alloc -> "zero_alloc" - in - let to_string = function - | Check { property; strict; loc = _} -> - Printf.sprintf "assert %s%s" - (to_string property) - (if strict then " strict" else "") - | Assume { property; strict; loc = _} -> - Printf.sprintf "assume %s%s" - (to_string property) - (if strict then " strict" else "") - | Ignore_assert_all property -> - Printf.sprintf "ignore %s" (to_string property) - | Default_check -> assert false - in - match expr with - | Lfunction({ attr = { stub = false } as attr; } as funct) -> - begin match get_property_attribute attributes Zero_alloc with - | Default_check -> expr - | (Ignore_assert_all p | Check { property = p; _ } | Assume { property = p; _ }) - as check -> - begin match attr.check with - | Default_check -> () - | Ignore_assert_all p' - | Assume { property = p'; strict = _; loc = _; } - | Check { property = p'; strict = _; loc = _; } -> - if p = p' then - Location.prerr_warning loc - (Warnings.Duplicated_attribute (to_string check)); - end; - let attr = { attr with check } in - lfunction_with_attr ~attr funct - end - | expr -> expr - let add_loop_attribute expr loc attributes = match expr with | Lfunction({ attr = { stub = false } as attr } as funct) -> @@ -648,7 +426,7 @@ let get_tailcall_attribute e = match attr with | None -> Default_tailcall | Some {Parsetree.attr_name = {txt; loc}; attr_payload = payload} -> - match get_optional_payload get_bool_from_exp payload with + match Builtin_attributes.get_optional_bool_payload payload with | Ok (None | Some true) -> Tailcall_expectation true | Ok (Some false) -> Tailcall_expectation false | Error () -> @@ -666,9 +444,6 @@ let add_function_attributes lam loc attr = let lam = add_local_attribute lam loc attr in - let lam = - add_check_attribute lam loc attr - in let lam = add_loop_attribute lam loc attr in diff --git a/ocaml/lambda/translattribute.mli b/ocaml/lambda/translattribute.mli index e6cbcb3f678..e43b2070444 100644 --- a/ocaml/lambda/translattribute.mli +++ b/ocaml/lambda/translattribute.mli @@ -65,8 +65,6 @@ val add_function_attributes -> Parsetree.attributes -> Lambda.lambda -val get_assume_zero_alloc : with_warnings:bool -> Parsetree.attributes -> Assume_info.t - val transl_param_attributes : Typedtree.pattern -> Lambda.parameter_attribute diff --git a/ocaml/lambda/translcore.ml b/ocaml/lambda/translcore.ml index c9584257cfe..72906336765 100644 --- a/ocaml/lambda/translcore.ml +++ b/ocaml/lambda/translcore.ml @@ -400,12 +400,14 @@ and transl_exp0 ~in_new_scope ~scopes sort e = let return_layout = layout_exp sort body in transl_let ~scopes ~return_layout rec_flag pat_expr_list (event_before ~scopes body (transl_exp ~scopes sort body)) - | Texp_function { params; body; region; ret_sort; ret_mode; alloc_mode } -> + | Texp_function { params; body; region; ret_sort; ret_mode; alloc_mode; + zero_alloc } -> transl_function ~in_new_scope ~scopes e params body - ~alloc_mode ~ret_mode ~ret_sort ~region + ~alloc_mode ~ret_mode ~ret_sort ~region ~zero_alloc | Texp_apply({ exp_desc = Texp_ident(path, _, {val_kind = Val_prim p}, Id_prim (pmode, psort), _); - exp_type = prim_type; } as funct, oargs, pos, ap_mode) + exp_type = prim_type; } as funct, + oargs, pos, ap_mode, assume_zero_alloc) when can_apply_primitive p pmode pos oargs -> let rec cut_args prim_repr oargs = match prim_repr, oargs with @@ -438,10 +440,6 @@ and transl_exp0 ~in_new_scope ~scopes sort e = let tailcall = Translattribute.get_tailcall_attribute funct in let inlined = Translattribute.get_inlined_attribute funct in let specialised = Translattribute.get_specialised_attribute funct in - let assume_zero_alloc = - Translattribute.get_assume_zero_alloc ~with_warnings:true - funct.exp_attributes - in let position = transl_apply_position pos in let mode = transl_locality_mode_l ap_mode in let result_layout = layout_exp sort e in @@ -451,14 +449,11 @@ and transl_exp0 ~in_new_scope ~scopes sort e = ~position ~mode ~result_layout lam extra_args (of_location ~scopes e.exp_loc)) end - | Texp_apply(funct, oargs, position, ap_mode) -> + | Texp_apply(funct, oargs, position, ap_mode, assume_zero_alloc) + -> let tailcall = Translattribute.get_tailcall_attribute funct in let inlined = Translattribute.get_inlined_attribute funct in let specialised = Translattribute.get_specialised_attribute funct in - let assume_zero_alloc = - Translattribute.get_assume_zero_alloc ~with_warnings:true - funct.exp_attributes - in let result_layout = layout_exp sort e in let position = transl_apply_position position in let mode = transl_locality_mode_l ap_mode in @@ -1122,7 +1117,7 @@ and transl_apply ~scopes ?(tailcall=Default_tailcall) ?(inlined = Default_inlined) ?(specialised = Default_specialise) - ?(assume_zero_alloc = Assume_info.none) + ?(assume_zero_alloc = Zero_alloc_utils.Assume_info.none) ?(position=Rc_normal) ?(mode=alloc_heap) ~result_layout @@ -1516,11 +1511,12 @@ and transl_curried_function ~scopes loc repr params body ((Curried { nlocal }, params, return_layout, region, return_mode ), body) and transl_function ~in_new_scope ~scopes e params body - ~alloc_mode ~ret_mode:sreturn_mode ~ret_sort:sreturn_sort ~region:sregion = + ~alloc_mode ~ret_mode:sreturn_mode ~ret_sort:sreturn_sort ~region:sregion + ~zero_alloc = let attrs = e.exp_attributes in let mode = transl_alloc_mode_r alloc_mode in let assume_zero_alloc = - Translattribute.get_assume_zero_alloc ~with_warnings:false attrs + Builtin_attributes.assume_zero_alloc ~is_check_allowed:true zero_alloc in let scopes = if in_new_scope then @@ -1548,7 +1544,9 @@ and transl_function ~in_new_scope ~scopes e params body ~mode ~return_sort ~return_mode ~scopes e.exp_loc repr ~region params body) in - let attr = function_attribute_disallowing_arity_fusion in + let attr = + { function_attribute_disallowing_arity_fusion with check = zero_alloc } + in let loc = of_location ~scopes e.exp_loc in let body = if region then maybe_region_layout return body else body in let lam = lfunction ~kind ~params ~return ~body ~attr ~loc ~mode ~ret_mode ~region in @@ -1568,9 +1566,9 @@ and transl_bound_exp ~scopes ~in_structure pat sort expr loc attrs = let lam = match pat_bound_idents pat with | (id :: _) when should_introduce_scope -> - let assume_zero_alloc = - Translattribute.get_assume_zero_alloc ~with_warnings:false attrs - in + let assume_zero_alloc = Zero_alloc_utils.Assume_info.none in + (* If this is a let-binding of a function, the scope will be updated + with zero_alloc info in [transl_function]. *) let scopes = enter_value_definition ~scopes ~assume_zero_alloc id in transl_scoped_exp ~scopes sort expr | _ -> transl_exp ~scopes sort expr @@ -1996,9 +1994,13 @@ let transl_scoped_exp ~scopes sort exp = maybe_region_exp sort exp (transl_scoped_exp ~scopes sort exp) let transl_apply - ~scopes ?tailcall ?inlined ?specialised ?position ?mode ~result_layout fn args loc = - maybe_region_layout result_layout (transl_apply - ~scopes ?tailcall ?inlined ?specialised ~assume_zero_alloc:Assume_info.none ?position ?mode ~result_layout fn args loc) + ~scopes ?tailcall ?inlined ?specialised ?position ?mode ~result_layout fn + args loc = + maybe_region_layout result_layout + (transl_apply + ~scopes ?tailcall ?inlined ?specialised + ~assume_zero_alloc:Zero_alloc_utils.Assume_info.none ?position ?mode + ~result_layout fn args loc) (* Error report *) diff --git a/ocaml/otherlibs/dynlink/Makefile b/ocaml/otherlibs/dynlink/Makefile index 705ea743cfc..4d0f1cc9209 100644 --- a/ocaml/otherlibs/dynlink/Makefile +++ b/ocaml/otherlibs/dynlink/Makefile @@ -129,7 +129,6 @@ COMPILERLIBS_SOURCES=\ file_formats/cmi_format.ml \ typing/persistent_env.ml \ typing/env.ml \ - lambda/assume_info.ml \ lambda/debuginfo.ml \ lambda/lambda.ml \ lambda/runtimedef.ml \ diff --git a/ocaml/otherlibs/dynlink/dune b/ocaml/otherlibs/dynlink/dune index e93ddb20274..bc34b041589 100644 --- a/ocaml/otherlibs/dynlink/dune +++ b/ocaml/otherlibs/dynlink/dune @@ -96,7 +96,6 @@ cmi_format persistent_env env - assume_info debuginfo lambda runtimedef @@ -193,7 +192,6 @@ (copy_files ../../file_formats/cmi_format.ml) (copy_files ../../typing/persistent_env.ml) (copy_files ../../typing/env.ml) -(copy_files ../../lambda/assume_info.ml) (copy_files ../../lambda/debuginfo.ml) (copy_files ../../lambda/lambda.ml) (copy_files ../../lambda/runtimedef.ml) @@ -259,7 +257,6 @@ (copy_files ../../file_formats/cmi_format.mli) (copy_files ../../typing/persistent_env.mli) (copy_files ../../typing/env.mli) -(copy_files ../../lambda/assume_info.mli) (copy_files ../../lambda/debuginfo.mli) (copy_files ../../lambda/lambda.mli) (copy_files ../../lambda/runtimedef.mli) @@ -366,7 +363,6 @@ .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Subst.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Bytesections.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Cmi_format.cmo - .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Assume_info.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Debuginfo.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Consistbl.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Shape.cmo @@ -448,7 +444,6 @@ .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Subst.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Bytesections.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Cmi_format.cmx - .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Assume_info.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Debuginfo.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Consistbl.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Shape.cmx diff --git a/ocaml/parsing/builtin_attributes.ml b/ocaml/parsing/builtin_attributes.ml index 83f0d420c42..5eaf636608b 100644 --- a/ocaml/parsing/builtin_attributes.ml +++ b/ocaml/parsing/builtin_attributes.ml @@ -449,6 +449,20 @@ let filter_attributes ?(mark=true) (nms_and_conds : Attributes_filter.t) attrs = nms_and_conds ) attrs +let find_attribute ?mark_used p attributes = + let inline_attribute = + filter_attributes ?mark:mark_used p attributes + in + let attr = + match inline_attribute with + | [] -> None + | [attr] -> Some attr + | attr :: {Parsetree.attr_name = {txt;loc}; _} :: _ -> + Location.prerr_warning loc (Warnings.Duplicated_attribute txt); + Some attr + in + attr + let when_attribute_is nms attr ~f = if List.mem attr.attr_name.txt nms then begin mark_used attr.attr_name; @@ -661,3 +675,194 @@ let error_message_attr l = end | _ -> None in List.find_map inner l + +type property = + | Zero_alloc + +type check_attribute = + | Default_check + | Ignore_assert_all of property + | Check of { property: property; + strict: bool; + opt: bool; + loc: Location.t; + } + | Assume of { property: property; + strict: bool; + loc: Location.t; + never_returns_normally: bool; + } + +let is_check_enabled ~opt property = + match property with + | Zero_alloc -> + match !Clflags.zero_alloc_check with + | No_check -> false + | Check_all -> true + | Check_default -> not opt + | Check_opt_only -> opt + +let is_property_attribute = function + | Zero_alloc -> [ ["zero_alloc"; "ocaml.zero_alloc"], true ] + +let get_payload get_from_exp = + let open Parsetree in + function + | PStr [{pstr_desc = Pstr_eval (exp, [])}] -> get_from_exp exp + | _ -> Result.Error () + +let get_optional_payload get_from_exp = + let open Parsetree in + function + | PStr [] -> Result.Ok None + | other -> Result.map Option.some (get_payload get_from_exp other) + +let get_int_from_exp = + let open Parsetree in + function + | { pexp_desc = Pexp_constant (Pconst_integer(s, None)) } -> + begin match Misc.Int_literal_converter.int s with + | n -> Result.Ok n + | exception (Failure _) -> Result.Error () + end + | _ -> Result.Error () + +let get_construct_from_exp = + let open Parsetree in + function + | { pexp_desc = + Pexp_construct ({ txt = Longident.Lident constr }, None) } -> + Result.Ok constr + | _ -> Result.Error () + +let get_bool_from_exp exp = + Result.bind (get_construct_from_exp exp) + (function + | "true" -> Result.Ok true + | "false" -> Result.Ok false + | _ -> Result.Error ()) + +let get_int_payload = get_payload get_int_from_exp +let get_optional_bool_payload = get_optional_payload get_bool_from_exp + +let get_id_from_exp = + let open Parsetree in + function + | { pexp_desc = Pexp_ident { txt = Longident.Lident id } } -> Result.Ok id + | _ -> Result.Error () + +let get_ids_from_exp exp = + let open Parsetree in + (match exp with + | { pexp_desc = Pexp_apply (exp, args) } -> + get_id_from_exp exp :: + List.map (function + | (Asttypes.Nolabel, arg) -> get_id_from_exp arg + | (_, _) -> Result.Error ()) + args + | _ -> [get_id_from_exp exp]) + |> List.fold_left (fun acc r -> + match acc, r with + | Result.Ok ids, Ok id -> Result.Ok (id::ids) + | (Result.Error _ | Ok _), _ -> Result.Error ()) + (Ok []) + |> Result.map List.rev + +let parse_optional_id_payload txt loc ~empty cases payload = + let[@local] warn () = + let ( %> ) f g x = g (f x) in + let msg = + cases + |> List.map (fst %> Printf.sprintf "'%s'") + |> String.concat ", " + |> Printf.sprintf "It must be either %s or empty" + in + Location.prerr_warning loc (Warnings.Attribute_payload (txt, msg)); + Error () + in + match get_optional_payload get_id_from_exp payload with + | Error () -> warn () + | Ok None -> Ok empty + | Ok (Some id) -> + match List.assoc_opt id cases with + | Some r -> Ok r + | None -> warn () + +let parse_ids_payload txt loc ~default ~empty cases payload = + let[@local] warn () = + let ( %> ) f g x = g (f x) in + let msg = + cases + |> List.map (fst %> String.concat " " %> Printf.sprintf "'%s'") + |> String.concat ", " + |> Printf.sprintf "It must be either %s or empty" + in + Location.prerr_warning loc (Warnings.Attribute_payload (txt, msg)); + default + in + match get_optional_payload get_ids_from_exp payload with + | Error () -> warn () + | Ok None -> empty + | Ok (Some ids) -> + match List.assoc_opt (List.sort String.compare ids) cases with + | Some r -> r + | None -> warn () + +let parse_property_attribute attr property = + match attr with + | None -> Default_check + | Some {Parsetree.attr_name = {txt; loc}; attr_payload = payload}-> + parse_ids_payload txt loc + ~default:Default_check + ~empty:(Check { property; strict = false; opt = false; loc; } ) + [ + ["assume"], + Assume { property; strict = false; never_returns_normally = false; loc; }; + ["strict"], Check { property; strict = true; opt = false; loc; }; + ["opt"], Check { property; strict = false; opt = true; loc; }; + ["opt"; "strict"; ], Check { property; strict = true; opt = true; loc; }; + ["assume"; "strict"], + Assume { property; strict = true; never_returns_normally = false; loc; }; + ["assume"; "never_returns_normally"], + Assume { property; strict = false; never_returns_normally = true; loc; }; + ["assume"; "never_returns_normally"; "strict"], + Assume { property; strict = true; never_returns_normally = true; loc; }; + ["ignore"], Ignore_assert_all property + ] + payload + +let get_property_attribute l p = + let attr = find_attribute (is_property_attribute p) l in + let res = parse_property_attribute attr p in + (match attr, res with + | None, Default_check -> () + | _, Default_check -> () + | None, (Check _ | Assume _ | Ignore_assert_all _) -> assert false + | Some _, Ignore_assert_all _ -> () + | Some _, Assume _ -> () + | Some attr, Check { opt; _ } -> + if is_check_enabled ~opt p && !Clflags.native_code then + (* The warning for unchecked functions will not trigger if the check is requested + through the [@@@zero_alloc all] top-level annotation rather than through the + function annotation [@zero_alloc]. *) + register_property attr.attr_name); + res + +let assume_zero_alloc ~is_check_allowed check : Zero_alloc_utils.Assume_info.t = + match check with + | Default_check -> Zero_alloc_utils.Assume_info.none + | Ignore_assert_all Zero_alloc -> Zero_alloc_utils.Assume_info.none + | Assume { property=Zero_alloc; strict; never_returns_normally; } -> + Zero_alloc_utils.Assume_info.create ~strict ~never_returns_normally + | Check { property=Zero_alloc; loc; _ } -> + if not is_check_allowed then begin + let name = "zero_alloc" in + let msg = "Only the following combinations are supported in this context: \ + 'zero_alloc assume', \ + `zero_alloc assume strict`, \ + `zero_alloc assume never_returns_normally`,\ + `zero_alloc assume never_returns_normally strict`." + in + Location.prerr_warning loc (Warnings.Attribute_payload (name, msg)) + end; + Zero_alloc_utils.Assume_info.none diff --git a/ocaml/parsing/builtin_attributes.mli b/ocaml/parsing/builtin_attributes.mli index 30fd92601b2..aa70ccd7ced 100644 --- a/ocaml/parsing/builtin_attributes.mli +++ b/ocaml/parsing/builtin_attributes.mli @@ -162,6 +162,13 @@ val filter_attributes : ?mark:bool -> Attributes_filter.t -> Parsetree.attributes -> Parsetree.attributes +(** [find_attribute] behaves like [filter_attribute], except that it returns at + most one matching attribute and issues a "duplicated attribute" warning if + there are multiple matches. *) +val find_attribute : + ?mark_used:bool -> Attributes_filter.t -> Parsetree.attributes -> + Parsetree.attribute option + val warn_on_literal_pattern: Parsetree.attributes -> bool val explicit_arity: Parsetree.attributes -> bool @@ -199,3 +206,62 @@ val jkind : Parsetree.attributes -> jkind_attribute Location.loc option There should be at most one "error_message" attribute, additional ones are sliently ignored. **) val error_message_attr : Parsetree.attributes -> string option + +(** [get_int_payload] is a helper for working with attribute payloads. + Given a payload that consist of a structure containing exactly + {[ + PStr [ + {pstr_desc = + Pstr_eval (Pexp_constant (Pconst_integer(i, None)), []) + } + ] + ]} + it returns [i]. + *) +val get_int_payload : Parsetree.payload -> (int, unit) Result.t + +(** [get_optional_bool_payload] is a helper for working with attribute payloads. + It behaves like [get_int_payload], except that it looks for a boolean + constant rather than an int constant, and returns [None] rather than [Error] + if the payload is empty. *) +val get_optional_bool_payload : + Parsetree.payload -> (bool option, unit) Result.t + +(** [parse_id_payload] is a helper for parsing information from an attribute + whose payload is an identifier. If the given payload consists of a single + identifier, that identifier is looked up in the association list. The result + is returned, if it exists. The [empty] value is returned if the payload is + empty. Otherwise, [Error ()] is returned and a warning is issued. *) +val parse_optional_id_payload : + string -> Location.t -> empty:'a -> (string * 'a) list -> + Parsetree.payload -> ('a,unit) Result.t + +(* Support for property attributes like zero_alloc *) +type property = + | Zero_alloc + +type check_attribute = + | Default_check + | Ignore_assert_all of property + | Check of { property: property; + strict: bool; + (* [strict=true] property holds on all paths. + [strict=false] if the function returns normally, + then the property holds (but property violations on + exceptional returns or diverging loops are ignored). + This definition may not be applicable to new properties. *) + opt: bool; + loc: Location.t; + } + | Assume of { property: property; + strict: bool; + loc: Location.t; + never_returns_normally: bool; + } + +val is_check_enabled : opt:bool -> property -> bool + +val get_property_attribute : Parsetree.attributes -> property -> check_attribute + +val assume_zero_alloc : + is_check_allowed:bool -> check_attribute -> Zero_alloc_utils.Assume_info.t diff --git a/ocaml/testsuite/tests/warnings/marshall_for_w53.ml b/ocaml/testsuite/tests/warnings/marshall_for_w53.ml index 6c24e98c8a8..1b6bdd2e073 100644 --- a/ocaml/testsuite/tests/warnings/marshall_for_w53.ml +++ b/ocaml/testsuite/tests/warnings/marshall_for_w53.ml @@ -2,3 +2,10 @@ let w53_ast = Pparse.parse_implementation ~tool_name:"w53_test" "w53.ml" let () = Pparse.write_ast Pparse.Structure "w53.marshalled.ml" w53_ast + +let w53_zero_alloc_all_ast = + Pparse.parse_implementation ~tool_name:"w53_zero_alloc_all_test" + "w53_zero_alloc_all.ml" + +let () = Pparse.write_ast Pparse.Structure "w53_zero_alloc_all.marshalled.ml" + w53_zero_alloc_all_ast diff --git a/ocaml/testsuite/tests/warnings/w53.compilers.reference b/ocaml/testsuite/tests/warnings/w53.compilers.reference index d937a798d39..2fe8139d56e 100644 --- a/ocaml/testsuite/tests/warnings/w53.compilers.reference +++ b/ocaml/testsuite/tests/warnings/w53.compilers.reference @@ -1072,3 +1072,143 @@ File "w53.ml", line 473, characters 50-61: 473 | external y : (int64 [@layout_poly]) -> (int64 [@layout_poly]) = "%identity" (* rejected *) ^^^^^^^^^^^ Warning 53 [misplaced-attribute]: the "layout_poly" attribute cannot appear in this context + +File "w53.ml", line 478, characters 21-31: +478 | type 'a t1 = 'a [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 479, characters 19-29: +479 | type s1 = Foo1 [@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 480, characters 17-27: +480 | val x : int [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 481, characters 24-34: +481 | val f : int -> int [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 483, characters 22-32: +483 | external y : (int [@zero_alloc]) -> (int [@zero_alloc]) = "x" (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 483, characters 45-55: +483 | external y : (int [@zero_alloc]) -> (int [@zero_alloc]) = "x" (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 484, characters 39-49: +484 | external z : int -> int = "x" "y" [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 485, characters 12-22: +485 | external[@zero_alloc] q : int -> int = "x" "y" (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 487, characters 9-19: +487 | class[@zero_alloc] c : (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 489, characters 11-21: +489 | val[@zero_alloc] foo : int * int (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 490, characters 11-21: +490 | val[@zero_alloc] bar : int -> int (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 491, characters 14-24: +491 | method[@zero_alloc] baz : int * int (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 492, characters 14-24: +492 | method[@zero_alloc] boz : int -> int (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 497, characters 21-31: +497 | type 'a t1 = 'a [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 498, characters 19-29: +498 | type s1 = Foo1 [@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 499, characters 22-32: +499 | let x : int = 42 [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 501, characters 7-17: +501 | let[@zero_alloc] w = 42 (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 505, characters 22-32: +505 | external y : (int [@zero_alloc]) -> (int [@zero_alloc]) = "x" (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 505, characters 45-55: +505 | external y : (int [@zero_alloc]) -> (int [@zero_alloc]) = "x" (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 506, characters 39-49: +506 | external z : int -> int = "x" "y" [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 507, characters 12-22: +507 | external[@zero_alloc] q : int -> int = "x" "y" (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 509, characters 9-19: +509 | class[@zero_alloc] foo _y = (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 511, characters 10-20: +511 | (fun[@zero_alloc] z -> (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 513, characters 11-21: +513 | val[@zero_alloc] bar = (4, 5) (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 515, characters 14-24: +515 | method[@zero_alloc] baz x = (f (z+10), x+1) (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 527, characters 14-24: +527 | ((boz x)[@zero_alloc assume]) (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 532, characters 7-17: +532 | let[@zero_alloc assume] foo = (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53.ml", line 536, characters 7-17: +536 | let[@zero_alloc] bar = (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context diff --git a/ocaml/testsuite/tests/warnings/w53.ml b/ocaml/testsuite/tests/warnings/w53.ml index e9df1a9de84..9ca4f4ac5e7 100644 --- a/ocaml/testsuite/tests/warnings/w53.ml +++ b/ocaml/testsuite/tests/warnings/w53.ml @@ -473,3 +473,67 @@ module TestLayoutPolyStruct = struct external y : (int64 [@layout_poly]) -> (int64 [@layout_poly]) = "%identity" (* rejected *) external z : ('a : any). 'a -> 'a = "%identity" [@@layout_poly] (* accepted *) end + +module type TestZeroAllocSig = sig + type 'a t1 = 'a [@@zero_alloc] (* rejected *) + type s1 = Foo1 [@zero_alloc] (* rejected *) + val x : int [@@zero_alloc] (* rejected *) + val f : int -> int [@@zero_alloc] (* rejected *) + + external y : (int [@zero_alloc]) -> (int [@zero_alloc]) = "x" (* rejected *) + external z : int -> int = "x" "y" [@@zero_alloc] (* rejected *) + external[@zero_alloc] q : int -> int = "x" "y" (* rejected *) + + class[@zero_alloc] c : (* rejected *) + object + val[@zero_alloc] foo : int * int (* rejected *) + val[@zero_alloc] bar : int -> int (* rejected *) + method[@zero_alloc] baz : int * int (* rejected *) + method[@zero_alloc] boz : int -> int (* rejected *) + end +end + +module TestZeroAllocStruct = struct + type 'a t1 = 'a [@@zero_alloc] (* rejected *) + type s1 = Foo1 [@zero_alloc] (* rejected *) + let x : int = 42 [@@zero_alloc] (* rejected *) + + let[@zero_alloc] w = 42 (* rejected *) + + let[@zero_alloc] f x = x (* accepted *) + + external y : (int [@zero_alloc]) -> (int [@zero_alloc]) = "x" (* rejected *) + external z : int -> int = "x" "y" [@@zero_alloc] (* rejected *) + external[@zero_alloc] q : int -> int = "x" "y" (* rejected *) + + class[@zero_alloc] foo _y = (* rejected *) + let[@inline never][@zero_alloc] f x = (x, x) in (* accepted *) + (fun[@zero_alloc] z -> (* rejected *) + object + val[@zero_alloc] bar = (4, 5) (* rejected *) + + method[@zero_alloc] baz x = (f (z+10), x+1) (* rejected *) + end) + + let[@zero_alloc] f1 = fun x y -> (x,y) (* accepted *) + let f2 = fun [@zero_alloc] x y -> (x,y) (* accepted *) + + let[@zero_alloc ignore] f3 = fun x y -> (x,y) (* accepted *) + let f4 = fun [@zero_alloc ignore] x y -> (x,y) (* accepted *) + + (* assume on calls goes on the function being called *) + let[@inline never] boz x = (x,x) + let[@zero_alloc] fiz x = + ((boz x)[@zero_alloc assume]) (* rejected *) + let[@zero_alloc] fuz x = + ((boz[@zero_alloc assume]) x) (* accepted *) + + (* Triggers w53 on non-function lets *) + let[@zero_alloc assume] foo = (* rejected *) + let x = 42 in + fun z -> z + x + + let[@zero_alloc] bar = (* rejected *) + let x = 42 in + fun z -> z + x +end diff --git a/ocaml/testsuite/tests/warnings/w53_marshalled.compilers.reference b/ocaml/testsuite/tests/warnings/w53_marshalled.compilers.reference deleted file mode 100644 index 7fd54d06bc6..00000000000 --- a/ocaml/testsuite/tests/warnings/w53_marshalled.compilers.reference +++ /dev/null @@ -1,1069 +0,0 @@ -File "w53.ml", line 64, characters 37-46: -64 | let test_ppwarning = 42 [@@ppwarning "warning"] - ^^^^^^^^^ -Warning 22 [preprocessor]: warning - -File "w53.ml", line 12, characters 14-20: -12 | let h x = x [@inline] (* rejected *) - ^^^^^^ -Warning 53 [misplaced-attribute]: the "inline" attribute cannot appear in this context - -File "w53.ml", line 13, characters 14-26: -13 | let h x = x [@ocaml.inline] (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "ocaml.inline" attribute cannot appear in this context - -File "w53.ml", line 15, characters 14-21: -15 | let i x = x [@inlined] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "inlined" attribute cannot appear in this context - -File "w53.ml", line 16, characters 14-27: -16 | let j x = x [@ocaml.inlined] (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "ocaml.inlined" attribute cannot appear in this context - -File "w53.ml", line 19, characters 16-23: -19 | let l x = h x [@inlined] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "inlined" attribute cannot appear in this context - -File "w53.ml", line 21, characters 14-22: -21 | let m x = x [@tailcall] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "tailcall" attribute cannot appear in this context - -File "w53.ml", line 22, characters 14-28: -22 | let n x = x [@ocaml.tailcall] (* rejected *) - ^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "ocaml.tailcall" attribute cannot appear in this context - -File "w53.ml", line 25, characters 16-24: -25 | let q x = h x [@tailcall] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "tailcall" attribute cannot appear in this context - -File "w53.ml", line 33, characters 25-31: -33 | module C = struct end [@@inline] (* rejected *) - ^^^^^^ -Warning 53 [misplaced-attribute]: the "inline" attribute cannot appear in this context - -File "w53.ml", line 34, characters 26-38: -34 | module C' = struct end [@@ocaml.inline] (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "ocaml.inline" attribute cannot appear in this context - -File "w53.ml", line 35, characters 25-32: -35 | module D = struct end [@@inlined] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "inlined" attribute cannot appear in this context - -File "w53.ml", line 36, characters 26-39: -36 | module D' = struct end [@@ocaml.inlined] (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "ocaml.inlined" attribute cannot appear in this context - -File "w53.ml", line 40, characters 16-22: -40 | module G = (A [@inline])(struct end) (* rejected *) - ^^^^^^ -Warning 53 [misplaced-attribute]: the "inline" attribute cannot appear in this context - -File "w53.ml", line 41, characters 17-29: -41 | module G' = (A [@ocaml.inline])(struct end) (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "ocaml.inline" attribute cannot appear in this context - -File "w53.ml", line 45, characters 22-29: -45 | module I = Set.Make [@inlined] - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "inlined" attribute cannot appear in this context - -File "w53.ml", line 46, characters 23-36: -46 | module I' = Set.Make [@ocaml.inlined] - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "ocaml.inlined" attribute cannot appear in this context - -File "w53.ml", line 48, characters 23-30: -48 | module J = Set.Make [@@inlined] - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "inlined" attribute cannot appear in this context - -File "w53.ml", line 49, characters 24-37: -49 | module J' = Set.Make [@@ocaml.inlined] - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "ocaml.inlined" attribute cannot appear in this context - -File "w53.ml", line 52, characters 17-27: -52 | val a1 : int [@deprecated] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "deprecated" attribute cannot appear in this context - -File "w53.ml", line 57, characters 6-14: -57 | let [@unrolled 42] rec test_unrolled x = (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "unrolled" attribute cannot appear in this context - -File "w53.ml", line 69, characters 23-46: -69 | | Lit_pat2 of int [@@warn_on_literal_pattern] (* rejected *) - ^^^^^^^^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "warn_on_literal_pattern" attribute cannot appear in this context - -File "w53.ml", line 73, characters 14-23: -73 | type t2 [@@@immediate] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "immediate" attribute cannot appear in this context - -File "w53.ml", line 75, characters 14-25: -75 | type t4 [@@@immediate64] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "immediate64" attribute cannot appear in this context - -File "w53.ml", line 79, characters 15-24: -79 | let x = (4 [@immediate], 42 [@immediate64]) (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "immediate" attribute cannot appear in this context - -File "w53.ml", line 79, characters 32-43: -79 | let x = (4 [@immediate], 42 [@immediate64]) (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "immediate64" attribute cannot appear in this context - -File "w53.ml", line 84, characters 26-31: -84 | type t2 = {x : int} [@@@boxed] (* rejected *) - ^^^^^ -Warning 53 [misplaced-attribute]: the "boxed" attribute cannot appear in this context - -File "w53.ml", line 86, characters 26-33: -86 | type t4 = {x : int} [@@@unboxed] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "unboxed" attribute cannot appear in this context - -File "w53.ml", line 87, characters 17-24: -87 | val x : int [@@unboxed] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "unboxed" attribute cannot appear in this context - -File "w53.ml", line 91, characters 15-22: -91 | let x = (5 [@unboxed], 42 [@boxed]) (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "unboxed" attribute cannot appear in this context - -File "w53.ml", line 91, characters 30-35: -91 | let x = (5 [@unboxed], 42 [@boxed]) (* rejected *) - ^^^^^ -Warning 53 [misplaced-attribute]: the "boxed" attribute cannot appear in this context - -File "w53.ml", line 95, characters 21-30: -95 | type 'a t1 = 'a [@@principal] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "principal" attribute cannot appear in this context - -File "w53.ml", line 96, characters 21-32: -96 | type 'a t2 = 'a [@@noprincipal] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "noprincipal" attribute cannot appear in this context - -File "w53.ml", line 98, characters 19-28: -98 | type s1 = Foo1 [@principal] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "principal" attribute cannot appear in this context - -File "w53.ml", line 99, characters 19-30: -99 | type s2 = Foo2 [@noprincipal] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "noprincipal" attribute cannot appear in this context - -File "w53.ml", line 101, characters 16-25: -101 | val x : int [@principal] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "principal" attribute cannot appear in this context - -File "w53.ml", line 102, characters 16-27: -102 | val y : int [@noprincipal] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "noprincipal" attribute cannot appear in this context - -File "w53.ml", line 109, characters 21-30: -109 | type 'a t1 = 'a [@@principal] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "principal" attribute cannot appear in this context - -File "w53.ml", line 110, characters 21-32: -110 | type 'a t2 = 'a [@@noprincipal] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "noprincipal" attribute cannot appear in this context - -File "w53.ml", line 112, characters 19-28: -112 | type s1 = Foo1 [@principal] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "principal" attribute cannot appear in this context - -File "w53.ml", line 113, characters 19-30: -113 | type s2 = Foo2 [@noprincipal] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "noprincipal" attribute cannot appear in this context - -File "w53.ml", line 115, characters 14-23: -115 | let x = 5 [@principal] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "principal" attribute cannot appear in this context - -File "w53.ml", line 116, characters 15-26: -116 | let y = 42 [@noprincipal] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "noprincipal" attribute cannot appear in this context - -File "w53.ml", line 123, characters 21-29: -123 | type 'a t1 = 'a [@@nolabels] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "nolabels" attribute cannot appear in this context - -File "w53.ml", line 125, characters 19-27: -125 | type s1 = Foo1 [@nolabels] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "nolabels" attribute cannot appear in this context - -File "w53.ml", line 127, characters 16-24: -127 | val x : int [@nolabels] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "nolabels" attribute cannot appear in this context - -File "w53.ml", line 133, characters 21-29: -133 | type 'a t1 = 'a [@@nolabels] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "nolabels" attribute cannot appear in this context - -File "w53.ml", line 135, characters 19-27: -135 | type s1 = Foo1 [@nolabels] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "nolabels" attribute cannot appear in this context - -File "w53.ml", line 137, characters 14-22: -137 | let x = 5 [@nolabels] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "nolabels" attribute cannot appear in this context - -File "w53.ml", line 143, characters 21-31: -143 | type 'a t1 = 'a [@@flambda_o3] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_o3" attribute cannot appear in this context - -File "w53.ml", line 144, characters 21-37: -144 | type 'a t2 = 'a [@@flambda_oclassic] (* rejected *) - ^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_oclassic" attribute cannot appear in this context - -File "w53.ml", line 146, characters 19-29: -146 | type s1 = Foo1 [@flambda_o3] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_o3" attribute cannot appear in this context - -File "w53.ml", line 147, characters 19-35: -147 | type s2 = Foo2 [@flambda_oclassic] (* rejected *) - ^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_oclassic" attribute cannot appear in this context - -File "w53.ml", line 149, characters 16-26: -149 | val x : int [@flambda_o3] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_o3" attribute cannot appear in this context - -File "w53.ml", line 150, characters 16-32: -150 | val y : int [@flambda_oclassic] (* rejected *) - ^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_oclassic" attribute cannot appear in this context - -File "w53.ml", line 152, characters 6-16: -152 | [@@@flambda_o3] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_o3" attribute cannot appear in this context - -File "w53.ml", line 153, characters 6-22: -153 | [@@@flambda_oclassic] (* rejected *) - ^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_oclassic" attribute cannot appear in this context - -File "w53.ml", line 157, characters 21-31: -157 | type 'a t1 = 'a [@@flambda_o3] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_o3" attribute cannot appear in this context - -File "w53.ml", line 158, characters 21-37: -158 | type 'a t2 = 'a [@@flambda_oclassic] (* rejected *) - ^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_oclassic" attribute cannot appear in this context - -File "w53.ml", line 160, characters 19-29: -160 | type s1 = Foo1 [@flambda_o3] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_o3" attribute cannot appear in this context - -File "w53.ml", line 161, characters 19-35: -161 | type s2 = Foo2 [@flambda_oclassic] (* rejected *) - ^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_oclassic" attribute cannot appear in this context - -File "w53.ml", line 163, characters 14-24: -163 | let x = 5 [@flambda_o3] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_o3" attribute cannot appear in this context - -File "w53.ml", line 164, characters 15-31: -164 | let y = 42 [@flambda_oclassic] (* rejected *) - ^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "flambda_oclassic" attribute cannot appear in this context - -File "w53.ml", line 171, characters 21-35: -171 | type 'a t1 = 'a [@@afl_inst_ratio 42] (* rejected *) - ^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "afl_inst_ratio" attribute cannot appear in this context - -File "w53.ml", line 173, characters 19-33: -173 | type s1 = Foo1 [@afl_inst_ratio 42] (* rejected *) - ^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "afl_inst_ratio" attribute cannot appear in this context - -File "w53.ml", line 175, characters 16-30: -175 | val x : int [@afl_inst_ratio 42] (* rejected *) - ^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "afl_inst_ratio" attribute cannot appear in this context - -File "w53.ml", line 177, characters 6-20: -177 | [@@@afl_inst_ratio 42] (* rejected *) - ^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "afl_inst_ratio" attribute cannot appear in this context - -File "w53.ml", line 181, characters 21-35: -181 | type 'a t1 = 'a [@@afl_inst_ratio 42] (* rejected *) - ^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "afl_inst_ratio" attribute cannot appear in this context - -File "w53.ml", line 183, characters 19-33: -183 | type s1 = Foo1 [@afl_inst_ratio 42] (* rejected *) - ^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "afl_inst_ratio" attribute cannot appear in this context - -File "w53.ml", line 185, characters 14-28: -185 | let x = 5 [@afl_inst_ratio 42] (* rejected *) - ^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "afl_inst_ratio" attribute cannot appear in this context - -File "w53.ml", line 192, characters 21-26: -192 | type 'a t1 = 'a [@@curry 42] (* rejected *) - ^^^^^ -Warning 53 [misplaced-attribute]: the "curry" attribute cannot appear in this context - -File "w53.ml", line 194, characters 19-24: -194 | type s1 = Foo1 [@curry 42] (* rejected *) - ^^^^^ -Warning 53 [misplaced-attribute]: the "curry" attribute cannot appear in this context - -File "w53.ml", line 196, characters 16-21: -196 | val x : int [@curry 42] (* rejected *) - ^^^^^ -Warning 53 [misplaced-attribute]: the "curry" attribute cannot appear in this context - -File "w53.ml", line 198, characters 6-11: -198 | [@@@curry 42] (* rejected *) - ^^^^^ -Warning 53 [misplaced-attribute]: the "curry" attribute cannot appear in this context - -File "w53.ml", line 202, characters 21-26: -202 | type 'a t1 = 'a [@@curry 42] (* rejected *) - ^^^^^ -Warning 53 [misplaced-attribute]: the "curry" attribute cannot appear in this context - -File "w53.ml", line 204, characters 19-24: -204 | type s1 = Foo1 [@curry 42] (* rejected *) - ^^^^^ -Warning 53 [misplaced-attribute]: the "curry" attribute cannot appear in this context - -File "w53.ml", line 206, characters 14-19: -206 | let x = 5 [@curry 42] (* rejected *) - ^^^^^ -Warning 53 [misplaced-attribute]: the "curry" attribute cannot appear in this context - -File "w53.ml", line 208, characters 6-11: -208 | [@@@curry 42] (* rejected *) - ^^^^^ -Warning 53 [misplaced-attribute]: the "curry" attribute cannot appear in this context - -File "w53.ml", line 212, characters 21-30: -212 | type 'a t1 = 'a [@@local_opt] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "local_opt" attribute cannot appear in this context - -File "w53.ml", line 213, characters 19-28: -213 | type s1 = Foo1 [@local_opt] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "local_opt" attribute cannot appear in this context - -File "w53.ml", line 214, characters 19-28: -214 | val x : int64 [@@local_opt] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "local_opt" attribute cannot appear in this context - -File "w53.ml", line 217, characters 39-48: -217 | external z : int64 -> int64 = "x" [@@local_opt] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "local_opt" attribute cannot appear in this context - -File "w53.ml", line 221, characters 21-30: -221 | type 'a t1 = 'a [@@local_opt] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "local_opt" attribute cannot appear in this context - -File "w53.ml", line 222, characters 19-28: -222 | type s1 = Foo1 [@local_opt] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "local_opt" attribute cannot appear in this context - -File "w53.ml", line 223, characters 25-34: -223 | let x : int64 = 42L [@@local_opt] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "local_opt" attribute cannot appear in this context - -File "w53.ml", line 226, characters 39-48: -226 | external z : int64 -> int64 = "x" [@@local_opt] (* rejected *) - ^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "local_opt" attribute cannot appear in this context - -File "w53.ml", line 231, characters 20-25: -231 | type 'a t1 = 'a [@local] - ^^^^^ -Warning 53 [misplaced-attribute]: the "local" attribute cannot appear in this context - -File "w53.ml", line 232, characters 21-27: -232 | type 'a t1' = 'a [@global] - ^^^^^^ -Warning 53 [misplaced-attribute]: the "global" attribute cannot appear in this context - -File "w53.ml", line 234, characters 24-29: -234 | type t2 = { x : int [@local] } - ^^^^^ -Warning 53 [misplaced-attribute]: the "local" attribute cannot appear in this context - -File "w53.ml", line 235, characters 25-31: -235 | type t2' = { x : int [@global] } - ^^^^^^ -Warning 53 [misplaced-attribute]: the "global" attribute cannot appear in this context - -File "w53.ml", line 237, characters 27-32: -237 | val x : 'a list -> ('a [@local]) list - ^^^^^ -Warning 53 [misplaced-attribute]: the "local" attribute cannot appear in this context - -File "w53.ml", line 238, characters 28-34: -238 | val x' : 'a list -> ('a [@global]) list - ^^^^^^ -Warning 53 [misplaced-attribute]: the "global" attribute cannot appear in this context - -File "w53.ml", line 240, characters 32-37: -240 | val y : 'a -> f:(('a -> 'b) [@local]) -> 'b - ^^^^^ -Warning 53 [misplaced-attribute]: the "local" attribute cannot appear in this context - -File "w53.ml", line 241, characters 33-39: -241 | val y' : 'a -> f:(('a -> 'b) [@global]) -> 'b - ^^^^^^ -Warning 53 [misplaced-attribute]: the "global" attribute cannot appear in this context - -File "w53.ml", line 243, characters 16-21: -243 | val z : 'a [@@local] - ^^^^^ -Warning 53 [misplaced-attribute]: the "local" attribute cannot appear in this context - -File "w53.ml", line 244, characters 17-23: -244 | val z' : 'a [@@global] - ^^^^^^ -Warning 53 [misplaced-attribute]: the "global" attribute cannot appear in this context - -File "w53.ml", line 246, characters 17-22: -246 | val w : 'a [@@@local] - ^^^^^ -Warning 53 [misplaced-attribute]: the "local" attribute cannot appear in this context - -File "w53.ml", line 247, characters 18-24: -247 | val w' : 'a [@@@global] - ^^^^^^ -Warning 53 [misplaced-attribute]: the "global" attribute cannot appear in this context - -File "w53.ml", line 252, characters 20-25: -252 | type 'a t1 = 'a [@local] - ^^^^^ -Warning 53 [misplaced-attribute]: the "local" attribute cannot appear in this context - -File "w53.ml", line 253, characters 21-27: -253 | type 'a t1' = 'a [@global] - ^^^^^^ -Warning 53 [misplaced-attribute]: the "global" attribute cannot appear in this context - -File "w53.ml", line 255, characters 24-29: -255 | type t2 = { x : int [@local] } - ^^^^^ -Warning 53 [misplaced-attribute]: the "local" attribute cannot appear in this context - -File "w53.ml", line 256, characters 25-31: -256 | type t2' = { x : int [@global] } - ^^^^^^ -Warning 53 [misplaced-attribute]: the "global" attribute cannot appear in this context - -File "w53.ml", line 258, characters 13-18: -258 | let f (a [@local]) = a - ^^^^^ -Warning 53 [misplaced-attribute]: the "local" attribute cannot appear in this context - -File "w53.ml", line 259, characters 13-19: -259 | let g (a [@global]) = a - ^^^^^^ -Warning 53 [misplaced-attribute]: the "global" attribute cannot appear in this context - -File "w53.ml", line 264, characters 20-24: -264 | type 'a t1 = 'a [@tail] (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "tail" attribute cannot appear in this context - -File "w53.ml", line 265, characters 21-28: -265 | type 'a t1' = 'a [@nontail] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "nontail" attribute cannot appear in this context - -File "w53.ml", line 267, characters 24-28: -267 | type t2 = { x : int [@tail] } (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "tail" attribute cannot appear in this context - -File "w53.ml", line 268, characters 25-32: -268 | type t2' = { x : int [@nontail] } (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "nontail" attribute cannot appear in this context - -File "w53.ml", line 270, characters 32-36: -270 | val y : 'a -> f:(('a -> 'b) [@tail]) -> 'b (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "tail" attribute cannot appear in this context - -File "w53.ml", line 271, characters 33-40: -271 | val y' : 'a -> f:(('a -> 'b) [@nontail]) -> 'b (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "nontail" attribute cannot appear in this context - -File "w53.ml", line 273, characters 16-20: -273 | val z : 'a [@@tail] (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "tail" attribute cannot appear in this context - -File "w53.ml", line 274, characters 17-24: -274 | val z' : 'a [@@nontail] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "nontail" attribute cannot appear in this context - -File "w53.ml", line 276, characters 6-10: -276 | [@@@tail] (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "tail" attribute cannot appear in this context - -File "w53.ml", line 277, characters 6-13: -277 | [@@@nontail] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "nontail" attribute cannot appear in this context - -File "w53.ml", line 281, characters 13-17: -281 | let f (a [@tail]) = a (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "tail" attribute cannot appear in this context - -File "w53.ml", line 282, characters 14-21: -282 | let f' (a [@nontail]) = a (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "nontail" attribute cannot appear in this context - -File "w53.ml", line 284, characters 8-12: -284 | let [@tail] g a = a (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "tail" attribute cannot appear in this context - -File "w53.ml", line 285, characters 8-15: -285 | let [@nontail] g' a = a (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "nontail" attribute cannot appear in this context - -File "w53.ml", line 287, characters 16-20: -287 | let h a = a [@tail] (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "tail" attribute cannot appear in this context - -File "w53.ml", line 288, characters 17-24: -288 | let h' a = a [@nontail] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "nontail" attribute cannot appear in this context - -File "w53.ml", line 295, characters 21-28: -295 | type 'a t1 = 'a [@@noalloc] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "noalloc" attribute cannot appear in this context - -File "w53.ml", line 296, characters 19-26: -296 | type s1 = Foo1 [@noalloc] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "noalloc" attribute cannot appear in this context - -File "w53.ml", line 297, characters 19-26: -297 | val x : int64 [@@noalloc] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "noalloc" attribute cannot appear in this context - -File "w53.ml", line 299, characters 24-31: -299 | external y : (int64 [@noalloc]) -> (int64 [@noalloc]) = "x" (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "noalloc" attribute cannot appear in this context - -File "w53.ml", line 299, characters 46-53: -299 | external y : (int64 [@noalloc]) -> (int64 [@noalloc]) = "x" (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "noalloc" attribute cannot appear in this context - -File "w53.ml", line 304, characters 21-28: -304 | type 'a t1 = 'a [@@noalloc] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "noalloc" attribute cannot appear in this context - -File "w53.ml", line 305, characters 19-26: -305 | type s1 = Foo1 [@noalloc] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "noalloc" attribute cannot appear in this context - -File "w53.ml", line 306, characters 25-32: -306 | let x : int64 = 42L [@@noalloc] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "noalloc" attribute cannot appear in this context - -File "w53.ml", line 308, characters 24-31: -308 | external y : (int64 [@noalloc]) -> (int64 [@noalloc]) = "x" (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "noalloc" attribute cannot appear in this context - -File "w53.ml", line 308, characters 46-53: -308 | external y : (int64 [@noalloc]) -> (int64 [@noalloc]) = "x" (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "noalloc" attribute cannot appear in this context - -File "w53.ml", line 313, characters 21-29: -313 | type 'a t1 = 'a [@@untagged] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "untagged" attribute cannot appear in this context - -File "w53.ml", line 314, characters 19-27: -314 | type s1 = Foo1 [@untagged] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "untagged" attribute cannot appear in this context - -File "w53.ml", line 315, characters 17-25: -315 | val x : int [@@untagged] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "untagged" attribute cannot appear in this context - -File "w53.ml", line 322, characters 21-29: -322 | type 'a t1 = 'a [@@untagged] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "untagged" attribute cannot appear in this context - -File "w53.ml", line 323, characters 19-27: -323 | type s1 = Foo1 [@untagged] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "untagged" attribute cannot appear in this context - -File "w53.ml", line 324, characters 22-30: -324 | let x : int = 42 [@@untagged] (* rejected *) - ^^^^^^^^ -Warning 53 [misplaced-attribute]: the "untagged" attribute cannot appear in this context - -File "w53.ml", line 331, characters 21-25: -331 | type 'a t1 = 'a [@@poll error] (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context - -File "w53.ml", line 332, characters 19-23: -332 | type s1 = Foo1 [@poll error] (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context - -File "w53.ml", line 333, characters 19-23: -333 | val x : int64 [@@poll error] (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context - -File "w53.ml", line 335, characters 24-28: -335 | external y : (int64 [@poll error]) -> (int64 [@poll error]) = (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context - -File "w53.ml", line 335, characters 49-53: -335 | external y : (int64 [@poll error]) -> (int64 [@poll error]) = (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context - -File "w53.ml", line 337, characters 39-43: -337 | external z : int64 -> int64 = "x" [@@poll error] (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context - -File "w53.ml", line 341, characters 21-25: -341 | type 'a t1 = 'a [@@poll error] (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context - -File "w53.ml", line 342, characters 19-23: -342 | type s1 = Foo1 [@poll error] (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context - -File "w53.ml", line 343, characters 25-29: -343 | let x : int64 = 42L [@@poll error] (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context - -File "w53.ml", line 346, characters 24-28: -346 | external y : (int64 [@poll error]) -> (int64 [@poll error]) = (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context - -File "w53.ml", line 346, characters 49-53: -346 | external y : (int64 [@poll error]) -> (int64 [@poll error]) = (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context - -File "w53.ml", line 348, characters 39-43: -348 | external z : int64 -> int64 = "x" [@@poll error] (* rejected *) - ^^^^ -Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context - -File "w53.ml", line 358, characters 17-22: -358 | let f2 = fun [@boxed] (type a) (x : a) -> x (* rejected *) - ^^^^^ -Warning 53 [misplaced-attribute]: the "boxed" attribute cannot appear in this context - -File "w53.ml", line 362, characters 21-28: -362 | type 'a t1 = 'a [@@builtin] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "builtin" attribute cannot appear in this context - -File "w53.ml", line 363, characters 19-26: -363 | type s1 = Foo1 [@builtin] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "builtin" attribute cannot appear in this context - -File "w53.ml", line 364, characters 17-24: -364 | val x : int [@@builtin] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "builtin" attribute cannot appear in this context - -File "w53.ml", line 366, characters 22-29: -366 | external y : (int [@builtin]) -> (int [@builtin]) = "x" "y" (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "builtin" attribute cannot appear in this context - -File "w53.ml", line 366, characters 42-49: -366 | external y : (int [@builtin]) -> (int [@builtin]) = "x" "y" (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "builtin" attribute cannot appear in this context - -File "w53.ml", line 371, characters 21-28: -371 | type 'a t1 = 'a [@@builtin] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "builtin" attribute cannot appear in this context - -File "w53.ml", line 372, characters 19-26: -372 | type s1 = Foo1 [@builtin] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "builtin" attribute cannot appear in this context - -File "w53.ml", line 373, characters 22-29: -373 | let x : int = 42 [@@builtin] (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "builtin" attribute cannot appear in this context - -File "w53.ml", line 375, characters 22-29: -375 | external y : (int [@builtin]) -> (int [@builtin]) = "x" "y" (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "builtin" attribute cannot appear in this context - -File "w53.ml", line 375, characters 42-49: -375 | external y : (int [@builtin]) -> (int [@builtin]) = "x" "y" (* rejected *) - ^^^^^^^ -Warning 53 [misplaced-attribute]: the "builtin" attribute cannot appear in this context - -File "w53.ml", line 380, characters 21-31: -380 | type 'a t1 = 'a [@@no_effects] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_effects" attribute cannot appear in this context - -File "w53.ml", line 381, characters 19-29: -381 | type s1 = Foo1 [@no_effects] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_effects" attribute cannot appear in this context - -File "w53.ml", line 382, characters 17-27: -382 | val x : int [@@no_effects] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_effects" attribute cannot appear in this context - -File "w53.ml", line 384, characters 22-32: -384 | external y : (int [@no_effects]) -> (int [@no_effects]) = "x" "y" (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_effects" attribute cannot appear in this context - -File "w53.ml", line 384, characters 45-55: -384 | external y : (int [@no_effects]) -> (int [@no_effects]) = "x" "y" (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_effects" attribute cannot appear in this context - -File "w53.ml", line 389, characters 21-31: -389 | type 'a t1 = 'a [@@no_effects] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_effects" attribute cannot appear in this context - -File "w53.ml", line 390, characters 19-29: -390 | type s1 = Foo1 [@no_effects] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_effects" attribute cannot appear in this context - -File "w53.ml", line 391, characters 22-32: -391 | let x : int = 42 [@@no_effects] (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_effects" attribute cannot appear in this context - -File "w53.ml", line 393, characters 22-32: -393 | external y : (int [@no_effects]) -> (int [@no_effects]) = "x" "y" (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_effects" attribute cannot appear in this context - -File "w53.ml", line 393, characters 45-55: -393 | external y : (int [@no_effects]) -> (int [@no_effects]) = "x" "y" (* rejected *) - ^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_effects" attribute cannot appear in this context - -File "w53.ml", line 398, characters 21-33: -398 | type 'a t1 = 'a [@@no_coeffects] (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_coeffects" attribute cannot appear in this context - -File "w53.ml", line 399, characters 19-31: -399 | type s1 = Foo1 [@no_coeffects] (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_coeffects" attribute cannot appear in this context - -File "w53.ml", line 400, characters 17-29: -400 | val x : int [@@no_coeffects] (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_coeffects" attribute cannot appear in this context - -File "w53.ml", line 402, characters 22-34: -402 | external y : (int [@no_coeffects]) -> (int [@no_coeffects]) = "x" "y" (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_coeffects" attribute cannot appear in this context - -File "w53.ml", line 402, characters 47-59: -402 | external y : (int [@no_coeffects]) -> (int [@no_coeffects]) = "x" "y" (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_coeffects" attribute cannot appear in this context - -File "w53.ml", line 407, characters 21-33: -407 | type 'a t1 = 'a [@@no_coeffects] (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_coeffects" attribute cannot appear in this context - -File "w53.ml", line 408, characters 19-31: -408 | type s1 = Foo1 [@no_coeffects] (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_coeffects" attribute cannot appear in this context - -File "w53.ml", line 409, characters 22-34: -409 | let x : int = 42 [@@no_coeffects] (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_coeffects" attribute cannot appear in this context - -File "w53.ml", line 411, characters 22-34: -411 | external y : (int [@no_coeffects]) -> (int [@no_coeffects]) = "x" "y" (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_coeffects" attribute cannot appear in this context - -File "w53.ml", line 411, characters 47-59: -411 | external y : (int [@no_coeffects]) -> (int [@no_coeffects]) = "x" "y" (* rejected *) - ^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "no_coeffects" attribute cannot appear in this context - -File "w53.ml", line 416, characters 21-44: -416 | type 'a t1 = 'a [@@only_generative_effects] (* rejected *) - ^^^^^^^^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "only_generative_effects" attribute cannot appear in this context - -File "w53.ml", line 417, characters 19-42: -417 | type s1 = Foo1 [@only_generative_effects] (* rejected *) - ^^^^^^^^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "only_generative_effects" attribute cannot appear in this context - -File "w53.ml", line 418, characters 17-40: -418 | val x : int [@@only_generative_effects] (* rejected *) - ^^^^^^^^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "only_generative_effects" attribute cannot appear in this context - -File "w53.ml", line 420, characters 22-45: -420 | external y : (int [@only_generative_effects]) -> (int [@only_generative_effects]) = "x" "y" (* rejected *) - ^^^^^^^^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "only_generative_effects" attribute cannot appear in this context - -File "w53.ml", line 420, characters 58-81: -420 | external y : (int [@only_generative_effects]) -> (int [@only_generative_effects]) = "x" "y" (* rejected *) - ^^^^^^^^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "only_generative_effects" attribute cannot appear in this context - -File "w53.ml", line 425, characters 21-44: -425 | type 'a t1 = 'a [@@only_generative_effects] (* rejected *) - ^^^^^^^^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "only_generative_effects" attribute cannot appear in this context - -File "w53.ml", line 426, characters 19-42: -426 | type s1 = Foo1 [@only_generative_effects] (* rejected *) - ^^^^^^^^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "only_generative_effects" attribute cannot appear in this context - -File "w53.ml", line 427, characters 22-45: -427 | let x : int = 42 [@@only_generative_effects] (* rejected *) - ^^^^^^^^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "only_generative_effects" attribute cannot appear in this context - -File "w53.ml", line 429, characters 22-45: -429 | external y : (int [@only_generative_effects]) -> (int [@only_generative_effects]) = "x" "y" (* rejected *) - ^^^^^^^^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "only_generative_effects" attribute cannot appear in this context - -File "w53.ml", line 429, characters 58-81: -429 | external y : (int [@only_generative_effects]) -> (int [@only_generative_effects]) = "x" "y" (* rejected *) - ^^^^^^^^^^^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "only_generative_effects" attribute cannot appear in this context - -File "w53.ml", line 434, characters 21-34: -434 | type 'a t1 = 'a [@@error_message ""] (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 435, characters 19-32: -435 | type s1 = Foo1 [@error_message ""] (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 436, characters 17-30: -436 | val x : int [@@error_message ""] (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 438, characters 22-35: -438 | external y : (int [@error_message ""]) -> (int [@error_message ""]) = (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 438, characters 51-64: -438 | external y : (int [@error_message ""]) -> (int [@error_message ""]) = (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 440, characters 39-52: -440 | external z : int -> int = "x" "y" [@@error_message ""] (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 443, characters 43-56: -443 | (int as ('a:value)[@error_message ""][@error_message ""]) (* reject second *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 447, characters 21-34: -447 | type 'a t1 = 'a [@@error_message ""] (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 448, characters 19-32: -448 | type s1 = Foo1 [@error_message ""] (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 449, characters 22-35: -449 | let x : int = 42 [@@error_message ""] (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 451, characters 22-35: -451 | external y : (int [@error_message ""]) -> (int [@error_message ""]) = (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 451, characters 51-64: -451 | external y : (int [@error_message ""]) -> (int [@error_message ""]) = (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 453, characters 39-52: -453 | external z : int -> int = "x" "y" [@@error_message ""] (* rejected *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 455, characters 45-58: -455 | let f1 v: ((_ : value)[@error_message ""][@error_message ""]) = v (* reject second *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 456, characters 46-59: -456 | let f2 v: (('a : value)[@error_message ""][@error_message ""]) = v (* reject second *) - ^^^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "error_message" attribute cannot appear in this context - -File "w53.ml", line 460, characters 21-32: -460 | type 'a t1 = 'a [@@layout_poly] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "layout_poly" attribute cannot appear in this context - -File "w53.ml", line 461, characters 19-30: -461 | type s1 = Foo1 [@layout_poly] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "layout_poly" attribute cannot appear in this context - -File "w53.ml", line 462, characters 19-30: -462 | val x : int64 [@@layout_poly] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "layout_poly" attribute cannot appear in this context - -File "w53.ml", line 464, characters 24-35: -464 | external y : (int64 [@layout_poly]) -> (int64 [@layout_poly]) = "%identity" (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "layout_poly" attribute cannot appear in this context - -File "w53.ml", line 464, characters 50-61: -464 | external y : (int64 [@layout_poly]) -> (int64 [@layout_poly]) = "%identity" (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "layout_poly" attribute cannot appear in this context - -File "w53.ml", line 469, characters 21-32: -469 | type 'a t1 = 'a [@@layout_poly] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "layout_poly" attribute cannot appear in this context - -File "w53.ml", line 470, characters 19-30: -470 | type s1 = Foo1 [@layout_poly] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "layout_poly" attribute cannot appear in this context - -File "w53.ml", line 471, characters 25-36: -471 | let x : int64 = 42L [@@layout_poly] (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "layout_poly" attribute cannot appear in this context - -File "w53.ml", line 473, characters 24-35: -473 | external y : (int64 [@layout_poly]) -> (int64 [@layout_poly]) = "%identity" (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "layout_poly" attribute cannot appear in this context - -File "w53.ml", line 473, characters 50-61: -473 | external y : (int64 [@layout_poly]) -> (int64 [@layout_poly]) = "%identity" (* rejected *) - ^^^^^^^^^^^ -Warning 53 [misplaced-attribute]: the "layout_poly" attribute cannot appear in this context diff --git a/ocaml/testsuite/tests/warnings/w53_marshalled.ml b/ocaml/testsuite/tests/warnings/w53_marshalled.ml index 29c3e9fd14e..775f7722393 100644 --- a/ocaml/testsuite/tests/warnings/w53_marshalled.ml +++ b/ocaml/testsuite/tests/warnings/w53_marshalled.ml @@ -1,5 +1,5 @@ (* TEST -readonly_files = "marshall_for_w53.ml w53.ml" +readonly_files = "marshall_for_w53.ml w53.ml w53_zero_alloc_all.ml" include ocamlcommon * setup-ocamlc.byte-build-env ** ocamlc.byte @@ -7,8 +7,16 @@ program = "${test_build_directory}/marshall_for_w53.exe" all_modules = "marshall_for_w53.ml" *** run **** ocamlc.byte +flags = "-w +A-60-70" module = "w53.marshalled.ml" +compiler_reference = "${test_source_directory}/w53.compilers.reference" ***** check-ocamlc.byte-output +**** setup-ocamlc.byte-build-env +***** ocamlc.byte +flags = "-w +A-60-70" +module = "w53_zero_alloc_all.marshalled.ml" +compiler_reference = "${test_source_directory}/w53_zero_alloc_all.compilers.reference" +****** check-ocamlc.byte-output *) (* This tests that warning 53 happen appropriately when dealing with marshalled diff --git a/ocaml/testsuite/tests/warnings/w53_zero_alloc_all.compilers.reference b/ocaml/testsuite/tests/warnings/w53_zero_alloc_all.compilers.reference new file mode 100644 index 00000000000..58e0ac12e19 --- /dev/null +++ b/ocaml/testsuite/tests/warnings/w53_zero_alloc_all.compilers.reference @@ -0,0 +1,139 @@ +File "w53_zero_alloc_all.ml", line 19, characters 21-31: +19 | type 'a t1 = 'a [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 20, characters 19-29: +20 | type s1 = Foo1 [@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 21, characters 17-27: +21 | val x : int [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 22, characters 24-34: +22 | val f : int -> int [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 24, characters 22-32: +24 | external y : (int [@zero_alloc]) -> (int [@zero_alloc]) = "x" (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 24, characters 45-55: +24 | external y : (int [@zero_alloc]) -> (int [@zero_alloc]) = "x" (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 25, characters 39-49: +25 | external z : int -> int = "x" "y" [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 26, characters 12-22: +26 | external[@zero_alloc] q : int -> int = "x" "y" (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 28, characters 9-19: +28 | class[@zero_alloc] c : (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 30, characters 11-21: +30 | val[@zero_alloc] foo : int * int (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 31, characters 11-21: +31 | val[@zero_alloc] bar : int -> int (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 32, characters 14-24: +32 | method[@zero_alloc] baz : int * int (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 33, characters 14-24: +33 | method[@zero_alloc] boz : int -> int (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 38, characters 21-31: +38 | type 'a t1 = 'a [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 39, characters 19-29: +39 | type s1 = Foo1 [@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 40, characters 22-32: +40 | let x : int = 42 [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 42, characters 7-17: +42 | let[@zero_alloc] w = 42 (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 46, characters 22-32: +46 | external y : (int [@zero_alloc]) -> (int [@zero_alloc]) = "x" (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 46, characters 45-55: +46 | external y : (int [@zero_alloc]) -> (int [@zero_alloc]) = "x" (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 47, characters 39-49: +47 | external z : int -> int = "x" "y" [@@zero_alloc] (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 48, characters 12-22: +48 | external[@zero_alloc] q : int -> int = "x" "y" (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 50, characters 9-19: +50 | class[@zero_alloc] foo _y = (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 52, characters 10-20: +52 | (fun[@zero_alloc] z -> (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 54, characters 11-21: +54 | val[@zero_alloc] bar = (4, 5) (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 56, characters 14-24: +56 | method[@zero_alloc] baz x = (f (z+10), x+1) (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 68, characters 14-24: +68 | ((boz x)[@zero_alloc assume]) (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 73, characters 7-17: +73 | let[@zero_alloc assume] foo = (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context + +File "w53_zero_alloc_all.ml", line 77, characters 7-17: +77 | let[@zero_alloc] bar = (* rejected *) + ^^^^^^^^^^ +Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context diff --git a/ocaml/testsuite/tests/warnings/w53_zero_alloc_all.ml b/ocaml/testsuite/tests/warnings/w53_zero_alloc_all.ml new file mode 100644 index 00000000000..d8e07be7b5d --- /dev/null +++ b/ocaml/testsuite/tests/warnings/w53_zero_alloc_all.ml @@ -0,0 +1,80 @@ +(* TEST + +flags = "-w +A-60-70" + +* setup-ocamlc.byte-build-env +** ocamlc.byte +compile_only = "true" +*** check-ocamlc.byte-output + +*) + +(* [@@@zero_alloc all] affects the meaning of other zero_alloc attributes. This + test, which is a copy of the zero_alloc bits of the main w53.ml, shows that + it doesn't affect their w53 behavior. *) + +[@@@zero_alloc all] + +module type TestZeroAllocSig = sig + type 'a t1 = 'a [@@zero_alloc] (* rejected *) + type s1 = Foo1 [@zero_alloc] (* rejected *) + val x : int [@@zero_alloc] (* rejected *) + val f : int -> int [@@zero_alloc] (* rejected *) + + external y : (int [@zero_alloc]) -> (int [@zero_alloc]) = "x" (* rejected *) + external z : int -> int = "x" "y" [@@zero_alloc] (* rejected *) + external[@zero_alloc] q : int -> int = "x" "y" (* rejected *) + + class[@zero_alloc] c : (* rejected *) + object + val[@zero_alloc] foo : int * int (* rejected *) + val[@zero_alloc] bar : int -> int (* rejected *) + method[@zero_alloc] baz : int * int (* rejected *) + method[@zero_alloc] boz : int -> int (* rejected *) + end +end + +module TestZeroAllocStruct = struct + type 'a t1 = 'a [@@zero_alloc] (* rejected *) + type s1 = Foo1 [@zero_alloc] (* rejected *) + let x : int = 42 [@@zero_alloc] (* rejected *) + + let[@zero_alloc] w = 42 (* rejected *) + + let[@zero_alloc] f x = x (* accepted *) + + external y : (int [@zero_alloc]) -> (int [@zero_alloc]) = "x" (* rejected *) + external z : int -> int = "x" "y" [@@zero_alloc] (* rejected *) + external[@zero_alloc] q : int -> int = "x" "y" (* rejected *) + + class[@zero_alloc] foo _y = (* rejected *) + let[@inline never][@zero_alloc] f x = (x, x) in (* accepted *) + (fun[@zero_alloc] z -> (* rejected *) + object + val[@zero_alloc] bar = (4, 5) (* rejected *) + + method[@zero_alloc] baz x = (f (z+10), x+1) (* rejected *) + end) + + let[@zero_alloc] f1 = fun x y -> (x,y) (* accepted *) + let f2 = fun [@zero_alloc] x y -> (x,y) (* accepted *) + + let[@zero_alloc ignore] f3 = fun x y -> (x,y) (* accepted *) + let f4 = fun [@zero_alloc ignore] x y -> (x,y) (* accepted *) + + (* assume on calls goes on the function being called *) + let[@inline never] boz x = (x,x) + let[@zero_alloc] fiz x = + ((boz x)[@zero_alloc assume]) (* rejected *) + let[@zero_alloc] fuz x = + ((boz[@zero_alloc assume]) x) (* accepted *) + + (* Triggers w53 on non-function lets *) + let[@zero_alloc assume] foo = (* rejected *) + let x = 42 in + fun z -> z + x + + let[@zero_alloc] bar = (* rejected *) + let x = 42 in + fun z -> z + x +end diff --git a/ocaml/tools/Makefile b/ocaml/tools/Makefile index fa61410917f..37c16beb5b9 100644 --- a/ocaml/tools/Makefile +++ b/ocaml/tools/Makefile @@ -88,7 +88,7 @@ OCAMLPROF=config.cmo build_path_prefix_map.cmo misc.cmo identifiable.cmo \ syntaxerr.cmo ast_helper.cmo \ language_extension_kernel.cmo language_extension.cmo \ jane_asttypes.cmo jane_syntax_parsing.cmo jane_syntax.cmo \ - ast_iterator.cmo builtin_attributes.cmo \ + ast_iterator.cmo zero_alloc_utils.cmo builtin_attributes.cmo \ camlinternalMenhirLib.cmo parser.cmo \ pprintast.cmo \ lexer.cmo parse.cmo ocamlprof.cmo diff --git a/ocaml/typing/printtyped.ml b/ocaml/typing/printtyped.ml index 4a74d326554..744933a24ef 100644 --- a/ocaml/typing/printtyped.ml +++ b/ocaml/typing/printtyped.ml @@ -435,7 +435,7 @@ and expression i ppf x = alloc_mode i ppf am; list i function_param ppf params; function_body i ppf body; - | Texp_apply (e, l, m, am) -> + | Texp_apply (e, l, m, am, za) -> line i ppf "Texp_apply\n"; line i ppf "apply_mode %s\n" (match m with @@ -443,6 +443,9 @@ and expression i ppf x = | Nontail -> "Nontail" | Default -> "Default"); locality_mode i ppf am; + if not (Zero_alloc_utils.Assume_info.is_none za) then + line i ppf "assume_zero_alloc %a\n" + Zero_alloc_utils.Assume_info.print za; expression i ppf e; list i label_x_apply_arg ppf l; | Texp_match (e, sort, l, _partial) -> diff --git a/ocaml/typing/rec_check.ml b/ocaml/typing/rec_check.ml index cc717509ebc..9caeed6135c 100644 --- a/ocaml/typing/rec_check.ml +++ b/ocaml/typing/rec_check.ml @@ -169,10 +169,10 @@ let classify_expression : Typedtree.expression -> sd = | Texp_record _ -> Static - | Texp_apply ({exp_desc = Texp_ident (_, _, vd, Id_prim _, _)}, _, _, _) + | Texp_apply ({exp_desc = Texp_ident (_, _, vd, Id_prim _, _)}, _, _, _, _) when is_ref vd -> Static - | Texp_apply (_, args, _, _) + | Texp_apply (_, args, _, _, _) when List.exists is_abstracted_arg args -> Static | Texp_apply _ -> @@ -586,7 +586,8 @@ let rec expression : Typedtree.expression -> term_judg = | Texp_instvar (self_path, pth, _inst_var) -> join [path self_path << Dereference; path pth] | Texp_apply - ({exp_desc = Texp_ident (_, _, vd, Id_prim _, _)}, [_, Arg (arg, _)], _, _) + ({exp_desc = Texp_ident (_, _, vd, Id_prim _, _)}, [_, Arg (arg, _)], _, + _, _) when is_ref vd -> (* G |- e: m[Guard] @@ -594,7 +595,7 @@ let rec expression : Typedtree.expression -> term_judg = G |- ref e: m *) expression arg << Guard - | Texp_apply (e, args, _, _) -> + | Texp_apply (e, args, _, _, _) -> let arg (_, arg) = match arg with | Omitted _ -> empty diff --git a/ocaml/typing/tast_iterator.ml b/ocaml/typing/tast_iterator.ml index 4d869331cbc..4408fa65045 100644 --- a/ocaml/typing/tast_iterator.ml +++ b/ocaml/typing/tast_iterator.ml @@ -305,7 +305,7 @@ let expr sub {exp_loc; exp_extra; exp_desc; exp_env; exp_attributes; _} = | Texp_function { params; body; _ } -> List.iter (function_param sub) params; function_body sub body - | Texp_apply (exp, list, _, _) -> + | Texp_apply (exp, list, _, _, _) -> sub.expr sub exp; List.iter (function | (_, Arg (exp, _)) -> sub.expr sub exp diff --git a/ocaml/typing/tast_mapper.ml b/ocaml/typing/tast_mapper.ml index c7cec29a840..2b461227da1 100644 --- a/ocaml/typing/tast_mapper.ml +++ b/ocaml/typing/tast_mapper.ml @@ -434,18 +434,20 @@ let expr sub x = | Texp_let (rec_flag, list, exp) -> let (rec_flag, list) = sub.value_bindings sub (rec_flag, list) in Texp_let (rec_flag, list, sub.expr sub exp) - | Texp_function { params; body; alloc_mode; region; ret_mode; ret_sort } -> + | Texp_function { params; body; alloc_mode; region; ret_mode; ret_sort; + zero_alloc } -> let params = List.map (function_param sub) params in let body = function_body sub body in - Texp_function { params; body; alloc_mode; region; ret_mode; ret_sort } - | Texp_apply (exp, list, pos, am) -> + Texp_function { params; body; alloc_mode; region; ret_mode; ret_sort; + zero_alloc } + | Texp_apply (exp, list, pos, am, za) -> Texp_apply ( sub.expr sub exp, List.map (function | (lbl, Arg (exp, sort)) -> (lbl, Arg (sub.expr sub exp, sort)) | (lbl, Omitted o) -> (lbl, Omitted o)) list, - pos, am + pos, am, za ) | Texp_match (exp, sort, cases, p) -> Texp_match ( diff --git a/ocaml/typing/typecore.ml b/ocaml/typing/typecore.ml index d699b9ac517..c8af7f84481 100644 --- a/ocaml/typing/typecore.ml +++ b/ocaml/typing/typecore.ml @@ -3747,7 +3747,7 @@ let rec is_nonexpansive exp = | Texp_let(_rec_flag, pat_exp_list, body) -> List.for_all (fun vb -> is_nonexpansive vb.vb_expr) pat_exp_list && is_nonexpansive body - | Texp_apply(e, (_,Omitted _)::el, _, _) -> + | Texp_apply(e, (_,Omitted _)::el, _, _, _) -> is_nonexpansive e && List.for_all is_nonexpansive_arg (List.map snd el) | Texp_match(e, _, cases, _) -> (* Not sure this is necessary, if [e] is nonexpansive then we shouldn't @@ -3820,7 +3820,7 @@ let rec is_nonexpansive exp = Val_prim {Primitive.prim_name = ("%raise" | "%reraise" | "%raise_notrace")}}, Id_prim _, _) }, - [Nolabel, Arg (e, _)], _, _) -> + [Nolabel, Arg (e, _)], _, _, _) -> is_nonexpansive e | Texp_array (_, _, _ :: _, _) | Texp_apply _ @@ -5036,6 +5036,40 @@ let pat_modes ~force_toplevel rec_mode_var (attrs, spat) = in attrs, pat_mode, exp_mode, spat +let add_check_attribute expr attributes = + let open Builtin_attributes in + let to_string = function + | Zero_alloc -> "zero_alloc" + in + let to_string : check_attribute -> string = function + | Check { property; strict; loc = _} -> + Printf.sprintf "assert %s%s" + (to_string property) + (if strict then " strict" else "") + | Assume { property; strict; loc = _} -> + Printf.sprintf "assume %s%s" + (to_string property) + (if strict then " strict" else "") + | Ignore_assert_all property -> + Printf.sprintf "ignore %s" (to_string property) + | Default_check -> assert false + in + match expr.exp_desc with + | Texp_function fn -> + begin match get_property_attribute attributes Zero_alloc with + | Default_check -> expr + | (Ignore_assert_all _ | Check _ | Assume _) as check -> + begin match fn.zero_alloc with + | Default_check -> () + | Ignore_assert_all _ | Assume _ | Check _ -> + Location.prerr_warning expr.exp_loc + (Warnings.Duplicated_attribute (to_string fn.zero_alloc)); + end; + let exp_desc = Texp_function { fn with zero_alloc = check } in + { expr with exp_desc } + end + | _ -> expr + let rec type_exp ?recarg env expected_mode sexp = (* We now delegate everything to type_expect *) type_expect ?recarg env expected_mode sexp @@ -5363,9 +5397,17 @@ and type_expect_ let (args, ty_res, ap_mode, pm) = type_application env loc expected_mode pm funct funct_mode sargs rt in + let assume_zero_alloc = + let zero_alloc = + Builtin_attributes.get_property_attribute sfunct.pexp_attributes + Zero_alloc + in + Builtin_attributes.assume_zero_alloc ~is_check_allowed:false zero_alloc + in rue { - exp_desc = Texp_apply(funct, args, pm.apply_position, ap_mode); + exp_desc = Texp_apply(funct, args, pm.apply_position, ap_mode, + assume_zero_alloc); exp_loc = loc; exp_extra = []; exp_type = ty_res; exp_attributes = sexp.pexp_attributes; @@ -7397,7 +7439,8 @@ and type_argument ?explanation ?recarg env (mode : expected_mode) sarg ret_mode |> Value.proj (Comonadic Areality) |> regional_to_global - |> Locality.disallow_right)} + |> Locality.disallow_right, + Zero_alloc_utils.Assume_info.none)} in let cases = [ case eta_pat e ] in let cases_loc = { texp.exp_loc with loc_ghost = true } in @@ -7416,6 +7459,7 @@ and type_argument ?explanation ?recarg env (mode : expected_mode) sarg ret_sort; alloc_mode; region = false; + zero_alloc = Default_check } } in @@ -8420,6 +8464,9 @@ and type_let ?check ?check_strict ?(force_toplevel = false) let l = List.map2 (fun (s, ((_,p,_), (e, _))) pvb -> + (* We check for [zero_alloc] attributes written on the [let] and move + them to the function. *) + let e = add_check_attribute e pvb.pvb_attributes in {vb_pat=p; vb_expr=e; vb_sort = s; vb_attributes=pvb.pvb_attributes; vb_loc=pvb.pvb_loc; }) @@ -8812,11 +8859,15 @@ and type_n_ary_function (filter_ty_ret_exn ret_ty Nolabel ~force_tpoly:true : type_expr) end; let params = List.map (fun { param } -> param) params in + let zero_alloc = + Builtin_attributes.get_property_attribute attributes Zero_alloc + in re { exp_desc = Texp_function { params; body; region = region_locked; ret_sort; alloc_mode = Mode.Alloc.disallow_left fun_alloc_mode; ret_mode; + zero_alloc }; exp_loc = loc; exp_extra = diff --git a/ocaml/typing/typedtree.ml b/ocaml/typing/typedtree.ml index 5a38f6291ef..6dd60fcb2d0 100644 --- a/ocaml/typing/typedtree.ml +++ b/ocaml/typing/typedtree.ml @@ -145,10 +145,11 @@ and expression_desc = ret_mode : Mode.Alloc.l; ret_sort : Jkind.sort; alloc_mode : Mode.Alloc.r; + zero_alloc : Builtin_attributes.check_attribute; } | Texp_apply of expression * (arg_label * apply_arg) list * apply_position * - Mode.Locality.l + Mode.Locality.l * Zero_alloc_utils.Assume_info.t | Texp_match of expression * Jkind.sort * computation case list * partial | Texp_try of expression * value case list | Texp_tuple of (string option * expression) list * Mode.Alloc.r diff --git a/ocaml/typing/typedtree.mli b/ocaml/typing/typedtree.mli index a166af44e3f..9e770cec37c 100644 --- a/ocaml/typing/typedtree.mli +++ b/ocaml/typing/typedtree.mli @@ -264,8 +264,10 @@ and expression_desc = (* Mode where the function allocates, ie local for a function of type 'a -> local_ 'b, and heap for a function of type 'a -> 'b *) ret_sort : Jkind.sort; - alloc_mode : Mode.Alloc.r + alloc_mode : Mode.Alloc.r; (* Mode at which the closure is allocated *) + zero_alloc : Builtin_attributes.check_attribute + (* zero-alloc attributes *) } (** fun P0 P1 -> function p1 -> e1 | p2 -> e2 (body = Tfunction_cases _) fun P0 P1 -> E (body = Tfunction_body _) @@ -277,7 +279,8 @@ and expression_desc = saturated with n arguments. *) | Texp_apply of - expression * (arg_label * apply_arg) list * apply_position * Mode.Locality.l + expression * (arg_label * apply_arg) list * apply_position * + Mode.Locality.l * Zero_alloc_utils.Assume_info.t (** E0 ~l1:E1 ... ~ln:En The expression can be Omitted if the expression is abstracted over @@ -292,7 +295,11 @@ and expression_desc = [(Nolabel, Omitted _); (Labelled "y", Some (Texp_constant Const_int 3)) ]) - *) + + The [Zero_alloc_utils.Assume_info.t] records the optional + [@zero_alloc assume] attribute that may appear on applications. If + that attribute is absent, it is [Assume_info.none]. + *) | Texp_match of expression * Jkind.sort * computation case list * partial (** match E0 with | P1 -> E1 diff --git a/ocaml/typing/uniqueness_analysis.ml b/ocaml/typing/uniqueness_analysis.ml index 64e7b3fde3a..fcb405056fc 100644 --- a/ocaml/typing/uniqueness_analysis.ml +++ b/ocaml/typing/uniqueness_analysis.ml @@ -1228,7 +1228,7 @@ let rec check_uniqueness_exp (ienv : Ienv.t) exp : UF.t = (* we are constructing a closure here, and therefore any implicit borrowing of free variables in the closure is in fact using shared. *) lift_implicit_borrowing uf - | Texp_apply (fn, args, _, _) -> + | Texp_apply (fn, args, _, _, _) -> let uf_fn = check_uniqueness_exp ienv fn in let uf_args = List.map diff --git a/ocaml/typing/untypeast.ml b/ocaml/typing/untypeast.ml index 6d1067633bc..2c5b390eb4f 100644 --- a/ocaml/typing/untypeast.ml +++ b/ocaml/typing/untypeast.ml @@ -591,7 +591,7 @@ let expression sub exp = in Jane_syntax.N_ary_functions.expr_of ~loc (params, constraint_, body) |> add_jane_syntax_attributes - | Texp_apply (exp, list, _, _) -> + | Texp_apply (exp, list, _, _, _) -> let list = List.map (fun (arg_label, arg) -> label arg_label, arg) list in Pexp_apply (sub.expr sub exp, List.fold_right (fun (label, arg) list -> diff --git a/ocaml/utils/zero_alloc_utils.ml b/ocaml/utils/zero_alloc_utils.ml index c0952fe3691..4f79ddeac41 100644 --- a/ocaml/utils/zero_alloc_utils.ml +++ b/ocaml/utils/zero_alloc_utils.ml @@ -1,3 +1,32 @@ +(* The meaning of keywords [strict] and [never_returns_normally] is defined in + terms of abstract values as follows: + + relaxed (default): nor = Safe and exn = Top and div = Top strict: nor = Safe + and exn = Safe and div = Safe never_returns_normally: nor = Bot and exn = Top + and div = Top + + where [nor] means normal return of the call, [exn] means return via an + exception, [div] means diverging (non-terminating) executions, and the + meaning and order of elements is: + + Top may allocate Safe does not allocate on any execution paths Bot + unreachable + + Using more than one keyword means intersection (i.e., meet of the elements, + pointwise lifted to tuples), so we get the following: + + [@zero_alloc assume] nor = Safe and exn = Top and div = Top [@zero_alloc + assume strict] nor = Safe and exn = Safe and div = Safe [@zero_alloc assume + strict never_returns_normally] nor = Bot and exn = Safe and div = Safe + [@zero_alloc assume never_returns_normally] nor = Bot and exn = Top and div = + Top + + See [Value] and [Annotation] in [backend/checkmach.ml]. *) +(* CR gyorsh: should we move [Value] and [Annotation] here or maybe "utils" and + use them directly, instead of the weird compare function that abstracts them? + Perhaps we should translate "strict" and "never_returns_normally" directly + into (nor,exn,div) *) + module type WS = sig type t @@ -120,3 +149,70 @@ module Make (Witnesses : WS) = struct if c <> 0 then c else V.compare d1 d2 end end + +module Assume_info = struct + module Witnesses = struct + type t = unit + + let join _ _ = () + + let lessequal _ _ = true + + let meet _ _ = () + + let print _ _ = () + + let empty = () + + let compare _ _ = 0 + end + + include Make (Witnesses) + + type t = + | No_assume + | Assume of Value.t + (* CR ccasinghino: consider extending this time to also capture "check" + attributes, and using it everywhere in typed tree instead of sometimes + having a check_attribute and sometimes having this type. *) + + let compare t1 t2 = + match t1, t2 with + | No_assume, No_assume -> 0 + | Assume v1, Assume v2 -> Value.compare v1 v2 + | No_assume, Assume _ -> -1 + | Assume _, No_assume -> 1 + + let equal t1 t2 = compare t1 t2 = 0 + + let print ppf = function + | No_assume -> () + | Assume v -> Format.fprintf ppf "%a" (Value.print ~witnesses:false) v + + let to_string v = Format.asprintf "%a" print v + + let join t1 t2 = + match t1, t2 with + | No_assume, No_assume -> No_assume + | No_assume, Assume _ | Assume _, No_assume -> No_assume + | Assume t1, Assume t2 -> Assume (Value.join t1 t2) + + let meet t1 t2 = + match t1, t2 with + | No_assume, No_assume -> No_assume + | No_assume, (Assume _ as t) | (Assume _ as t), No_assume -> t + | Assume t1, Assume t2 -> Assume (Value.meet t1 t2) + + let none = No_assume + + let create ~strict ~never_returns_normally = + let res = if strict then Value.safe else Value.relaxed Witnesses.empty in + let res = + if never_returns_normally then { res with nor = V.Bot } else res + in + Assume res + + let get_value t = match t with No_assume -> None | Assume v -> Some v + + let is_none t = match t with No_assume -> true | Assume _ -> false +end diff --git a/ocaml/utils/zero_alloc_utils.mli b/ocaml/utils/zero_alloc_utils.mli index e830060bac3..b0e4d85ad17 100644 --- a/ocaml/utils/zero_alloc_utils.mli +++ b/ocaml/utils/zero_alloc_utils.mli @@ -1,6 +1,6 @@ (** Abstract domain used in static analysis for checking annotations such as @zero_alloc. See [backend/checkmach] for details of the analysis. - See [lambda/assume_info.ml] for details about the translation of + See this module's .ml file for details about the translation of user-provided annotations to abstract values in this domain. *) module type WS = sig @@ -97,3 +97,48 @@ module Make (Witnesses : WS) : sig val compare : t -> t -> int end end + +(** The [Assume_info] module contains an instantiation of the abstract domain + with trivial witnesses. It is used to propagate assume annotations from the + front-end to the backend. The backend contains a different instantiation of + the abstract domain where the witnesses contain actual information about + allocations - see [Checkmach]. *) +module Assume_info : sig + type t + + val none : t + + val create : strict:bool -> never_returns_normally:bool -> t + + val compare : t -> t -> int + + val equal : t -> t -> bool + + val join : t -> t -> t + + val meet : t -> t -> t + + val to_string : t -> string + + val print : Format.formatter -> t -> unit + + val is_none : t -> bool + + module Witnesses : sig + type t = unit + + val join : t -> t -> t + + val lessequal : t -> t -> bool + + val meet : t -> t -> t + + val print : Format.formatter -> t -> unit + + val compare : t -> t -> int + end + + include module type of Make (Witnesses) + + val get_value : t -> Value.t option +end diff --git a/tests/backend/checkmach/dune.inc b/tests/backend/checkmach/dune.inc index 7f1361a848b..b309af3cb47 100644 --- a/tests/backend/checkmach/dune.inc +++ b/tests/backend/checkmach/dune.inc @@ -636,25 +636,6 @@ (deps test_misplaced_assume.output test_misplaced_assume.output.corrected) (action (diff test_misplaced_assume.output test_misplaced_assume.output.corrected))) -(rule - (enabled_if (= %{context_name} "main")) - (targets test_misplaced_attr.output.corrected) - (deps (:ml test_misplaced_attr.ml) filter.sh) - (action - (with-outputs-to test_misplaced_attr.output.corrected - (pipe-outputs - (with-accepted-exit-codes 0 - (run %{bin:ocamlopt.opt} %{ml} -g -color never -error-style short -c - -zero-alloc-check default -checkmach-details-cutoff 20 -O3)) - (run "./filter.sh") - )))) - -(rule - (alias runtest) - (enabled_if (= %{context_name} "main")) - (deps test_misplaced_attr.output test_misplaced_attr.output.corrected) - (action (diff test_misplaced_attr.output test_misplaced_attr.output.corrected))) - (rule (enabled_if (= %{context_name} "main")) (targets test_attr_check.output.corrected) diff --git a/tests/backend/checkmach/gen/gen_dune.ml b/tests/backend/checkmach/gen/gen_dune.ml index ffb5a9cd37a..801a26d4a42 100644 --- a/tests/backend/checkmach/gen/gen_dune.ml +++ b/tests/backend/checkmach/gen/gen_dune.ml @@ -117,7 +117,6 @@ let () = print_test_expected_output ~cutoff:default_cutoff ~extra_dep:None ~exit_code:2 "test_assume_fail"; print_test_expected_output ~cutoff:default_cutoff ~extra_dep:None ~exit_code:2 "test_assume_on_call"; print_test_expected_output ~cutoff:default_cutoff ~extra_dep:None ~exit_code:2 "test_misplaced_assume"; - print_test_expected_output ~cutoff:default_cutoff ~extra_dep:None ~exit_code:0 "test_misplaced_attr"; print_test_expected_output ~extra_flags:"-zero-alloc-check all" ~cutoff:default_cutoff ~extra_dep:None ~exit_code:2 "test_attr_check"; print_test_expected_output ~cutoff:default_cutoff ~extra_dep:None ~exit_code:2 "test_attr_check_all"; print_test_expected_output ~cutoff:default_cutoff ~extra_dep:None ~exit_code:2 "test_attr_check_opt"; diff --git a/tests/backend/checkmach/test_misplaced_attr.ml b/tests/backend/checkmach/test_misplaced_attr.ml deleted file mode 100644 index 9e1b0011b63..00000000000 --- a/tests/backend/checkmach/test_misplaced_attr.ml +++ /dev/null @@ -1,9 +0,0 @@ -let[@zero_alloc assume] foo = - let x = 42 in - fun z -> z + x - -let[@zero_alloc] bar = - let x = 42 in - fun z -> z + x - -[@@@zero_alloc default] diff --git a/tests/backend/checkmach/test_misplaced_attr.output b/tests/backend/checkmach/test_misplaced_attr.output deleted file mode 100644 index a8c3cbe3c41..00000000000 --- a/tests/backend/checkmach/test_misplaced_attr.output +++ /dev/null @@ -1,9 +0,0 @@ -File "test_misplaced_attr.ml", line 9, characters 0-23: -Warning 47 [attribute-payload]: illegal payload for attribute 'zero_alloc'. -Only 'all', 'check', 'check_opt', 'check_all', and 'check_none' are supported - -File "test_misplaced_attr.ml", line 1, characters 5-15: -Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context - -File "test_misplaced_attr.ml", line 5, characters 5-15: -Warning 53 [misplaced-attribute]: the "zero_alloc" attribute cannot appear in this context From 4273d6fa3511939c8b45f0b9016ae08bbe48218c Mon Sep 17 00:00:00 2001 From: Chris Casinghino Date: Fri, 12 Apr 2024 18:35:55 +0100 Subject: [PATCH 2/2] chamelon fix --- chamelon/compat.jst.ml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/chamelon/compat.jst.ml b/chamelon/compat.jst.ml index 6c9cbdc960e..91016c6ae02 100644 --- a/chamelon/compat.jst.ml +++ b/chamelon/compat.jst.ml @@ -17,12 +17,15 @@ let mkTexp_ident ?id:(ident_kind, uu = (Id_value, shared_many_use)) Texp_ident (path, longident, vd, ident_kind, uu) type nonrec apply_arg = apply_arg -type texp_apply_identifier = apply_position * Locality.l * Assume_info.t + +type texp_apply_identifier = + apply_position * Locality.l * Zero_alloc_utils.Assume_info.t let mkTexp_apply ?id:(pos, mode, za = - (Default, Locality.disallow_right Locality.legacy, Assume_info.none)) - (exp, args) = + ( Default, + Locality.disallow_right Locality.legacy, + Zero_alloc_utils.Assume_info.none )) (exp, args) = let args = List.map (fun (label, x) -> (Typetexp.transl_label label None, x)) args in