diff options
author | Tom Kelly <ctk21@cl.cam.ac.uk> | 2021-03-03 15:28:59 +0000 |
---|---|---|
committer | Tom Kelly <ctk21@cl.cam.ac.uk> | 2021-03-03 15:28:59 +0000 |
commit | 86fbc7e8d59311cc18818616c18d6fca39e0ecda (patch) | |
tree | 1e153ea5126cf3e1eaa216cf1184961487852a3e /middle_end | |
parent | 38e500510b83f55472d0f8dde82eb53ece926c99 (diff) | |
parent | b7509ca82f9bd647c1cb7e810b6bb152e145e3fb (diff) | |
download | ocaml-86fbc7e8d59311cc18818616c18d6fca39e0ecda.tar.gz |
Merge commit 'b7509ca82f9bd647c1cb7e810b6bb152e145e3fb' into parallel_minor_gc_4_12
Diffstat (limited to 'middle_end')
-rw-r--r-- | middle_end/closure/closure.ml | 29 | ||||
-rw-r--r-- | middle_end/flambda/closure_conversion.ml | 8 |
2 files changed, 21 insertions, 16 deletions
diff --git a/middle_end/closure/closure.ml b/middle_end/closure/closure.ml index 9a0b75db9c..bc942c27c8 100644 --- a/middle_end/closure/closure.ml +++ b/middle_end/closure/closure.ml @@ -945,12 +945,14 @@ let rec close ({ backend; fenv; cenv ; mutable_vars } as env) lam = kind = Curried; return = Pgenval; params = List.map (fun v -> v, Pgenval) final_args; - body = Lapply{ap_should_be_tailcall=false; - ap_loc=loc; - ap_func=(Lvar funct_var); - ap_args=internal_args; - ap_inlined=Default_inline; - ap_specialised=Default_specialise}; + body = Lapply{ + ap_loc=loc; + ap_func=(Lvar funct_var); + ap_args=internal_args; + ap_tailcall=Default_tailcall; + ap_inlined=Default_inline; + ap_specialised=Default_specialise; + }; loc; attr = default_function_attribute}) in @@ -1071,12 +1073,15 @@ let rec close ({ backend; fenv; cenv ; mutable_vars } as env) lam = close env arg | Lprim(Pdirapply,[funct;arg], loc) | Lprim(Prevapply,[arg;funct], loc) -> - close env (Lapply{ap_should_be_tailcall=false; - ap_loc=loc; - ap_func=funct; - ap_args=[arg]; - ap_inlined=Default_inline; - ap_specialised=Default_specialise}) + close env + (Lapply{ + ap_loc=loc; + ap_func=funct; + ap_args=[arg]; + ap_tailcall=Default_tailcall; + ap_inlined=Default_inline; + ap_specialised=Default_specialise; + }) | Lprim(Pgetglobal id, [], loc) -> let dbg = Debuginfo.from_location loc in check_constant_result (getglobal dbg id) diff --git a/middle_end/flambda/closure_conversion.ml b/middle_end/flambda/closure_conversion.ml index 8df123f498..0dd0f972bf 100644 --- a/middle_end/flambda/closure_conversion.ml +++ b/middle_end/flambda/closure_conversion.ml @@ -225,8 +225,8 @@ let rec close t env (lam : Lambda.lambda) : Flambda.t = in Flambda.create_let set_of_closures_var set_of_closures (name_expr (Project_closure (project_closure)) ~name) - | Lapply { ap_func; ap_args; ap_loc; ap_should_be_tailcall = _; - ap_inlined; ap_specialised; } -> + | Lapply { ap_func; ap_args; ap_loc; + ap_tailcall = _; ap_inlined; ap_specialised; } -> Lift_code.lifting_helper (close_list t env ap_args) ~evaluation_order:`Right_to_left ~name:Names.apply_arg @@ -418,10 +418,10 @@ let rec close t env (lam : Lambda.lambda) : Flambda.t = { ap_func = funct; ap_args = [arg]; ap_loc = loc; - ap_should_be_tailcall = false; (* CR-someday lwhite: it would be nice to be able to give - inlined attributes to functions applied with the application + application attributes to functions applied with the application operators. *) + ap_tailcall = Default_tailcall; ap_inlined = Default_inline; ap_specialised = Default_specialise; } |