From 7bb5e46cf253e9f8467e99abf17a333e1c02bde7 Mon Sep 17 00:00:00 2001 From: Thierry Martinez <Thierry.Martinez@inria.fr> Date: Mon, 23 Sep 2019 15:53:51 +0200 Subject: [PATCH] Update for new clangml --- clangml-transforms/for_memcad.ml | 24 ++++++++++++++++-------- visitors/clangml_visitors.ml | 2 ++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/clangml-transforms/for_memcad.ml b/clangml-transforms/for_memcad.ml index f591fcd..e76181b 100644 --- a/clangml-transforms/for_memcad.ml +++ b/clangml-transforms/for_memcad.ml @@ -18,7 +18,9 @@ let declare_tmp qual_type = let tmp = fresh_var_name () in let decl_tmp = Clang.Ast.node ~qual_type (Clang.Ast.Decl [ Clang.Ast.node ~qual_type (Clang.Ast.Var (Clang.Ast.var tmp qual_type))]) in - let tmp_var = Clang.Ast.node ~qual_type (Clang.Ast.DeclRef (Clang.Ast.identifier_name tmp)) in + let tmp_var = + Clang.Ast.node ~qual_type + (Clang.Ast.DeclRef (Clang.Ast.identifier_name tmp)) in tmp_var, decl_tmp let assign_to_tmp ?qual_type expr = @@ -29,7 +31,7 @@ let assign_to_tmp ?qual_type expr = let tmp_var, decl_tmp = declare_tmp qual_type in let assign_tmp = Clang.Ast.node ~qual_type (Clang.Ast.Expr ( bin_op qual_type tmp_var Assign expr)) in - tmp_var, [decl_tmp; assign_tmp] + tmp_var, [decl_tmp; assign_tmp] type transform_env = { statement_root : bool; @@ -87,17 +89,20 @@ let close_node ((stmt, _stmts) as node) = let rec name_anonymous_fields (decl : Clang.Ast.decl list) = match decl with | [] -> [] - | { desc = RecordDecl ({ keyword; name = ""; _ } as record_decl); _} as record :: + | { desc = RecordDecl ({ keyword; name = ""; _ } as record_decl); _} + as record :: ({ desc = Field { name; qual_type = { desc = Elaborated ({ keyword = keyword'; - named_type = { desc = Record { name = IdentifierName ""; _ }; _ } as named_type; _ } as elaborated); _} + named_type = { desc = Record { name = IdentifierName ""; _ }; _ } + as named_type; _ } as elaborated); _} as qual_type; bitwidth; init }; _} as field) :: tail when keyword = keyword' -> { record with desc = Clang.Ast.RecordDecl { record_decl with name = "anon" }} :: { field with desc = Field { name; bitwidth; init; qual_type = { qual_type with desc = Elaborated { elaborated with - named_type = { named_type with desc = Record (Clang.Ast.identifier_name "anon") }}}}} :: + named_type = { named_type with desc = + Record (Clang.Ast.identifier_name "anon") }}}}} :: name_anonymous_fields tail | hd :: tl -> hd :: name_anonymous_fields tl @@ -217,7 +222,8 @@ let transform = object (self) self#visit_expr { env with in_condition = true } cond in let cond, delayed_stmts = make_condition delayed_stmts cond in let tmp_var, stmts = assign_to_tmp ~qual_type:int cond in - [close_stmt (Free_monoid.plus delayed_stmts (Free_monoid.of_list stmts)) + [close_stmt (Free_monoid.plus delayed_stmts + (Free_monoid.of_list stmts)) [{ stmt with desc = Return (Some tmp_var) }]] | { desc = Expr ({ desc = Call _; _ } as expr); _} when (Clang.Type.of_node expr).desc <> BuiltinType Void -> @@ -315,7 +321,8 @@ let transform = object (self) qual_type = { desc = Pointer { desc = BuiltinType Void; _ }; _}; operand = { desc = IntegerLiteral (Int 0); _ }} -> expr, monoid#zero - | Cast { operand; _ } -> self#visit_expr env { expr with desc = operand.desc } + | Cast { operand; _ } -> + self#visit_expr env { expr with desc = operand.desc } (* liftConditionals *) | ConditionalOperator { cond; then_branch; else_branch } -> let then_branch = @@ -327,7 +334,8 @@ let transform = object (self) let else_branch = self#visit_expr { env with assign_rhs = true } else_branch in let qual_type = Clang.Type.of_node expr in - make_conditional_operator qual_type monoid#zero cond then_branch else_branch + make_conditional_operator qual_type monoid#zero cond then_branch + else_branch | _ -> let expr, delayed_stmts = super#visit_expr { env with statement_root = false; assign_rhs = false } diff --git a/visitors/clangml_visitors.ml b/visitors/clangml_visitors.ml index 589b742..6bc84e5 100644 --- a/visitors/clangml_visitors.ml +++ b/visitors/clangml_visitors.ml @@ -56,6 +56,8 @@ Clang__.Clang__bindings.clang_ext_stringkind [@opaque] [@@rewrite] [@@remove] type clang_ext_overloadedoperatorkind = Clang__.Clang__bindings.clang_ext_overloadedoperatorkind [@opaque] [@@rewrite] [@@remove] + type clang_ext_exceptionspecificationtype = + Clang__.Clang__bindings.clang_ext_exceptionspecificationtype [@opaque] [@@rewrite] [@@remove] end module%import Clang__types = struct type language = language [@opaque] [@@rewrite] [@@remove] -- GitLab