package jasmin
Compiler for High-Assurance and High-Speed Cryptography
Install
dune-project
Dependency
Authors
Maintainers
Sources
jasmin-compiler-v2025.06.1.tar.bz2
sha256=e92b42fa69da7c730b0c26dacf842a72b4febcaf4f2157a1dc18b3cce1f859fa
doc/src/jasmin.jasmin/label_check.ml.html
Source file label_check.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
open Prog open Utils type function_label = { loc : L.t; fname : string; } type duplicate_label_warn = { first_decl : function_label; conflict_decl : function_label; } let pp_duplicate_label_warn fmt {first_decl={loc=first_loc; fname=first_fname}; conflict_decl={loc=_;fname=second_fname}} = Format.fprintf fmt "Function '%s' and function '%s' (declared at %s) have conflicting assembly label names." second_fname first_fname (Location.tostring first_loc) let warn_duplicate_label warn = warning Always (L.i_loc0 warn.conflict_decl.loc) "%a" pp_duplicate_label_warn warn let check_labels_fun (f: ('len,'info,'asm) gfunc) ((errors, label_map): (((duplicate_label_warn list) * function_label Ms.t ))) : (duplicate_label_warn list) * function_label Ms.t = let fn_label = PrintCommon.escape f.f_name.fn_name in if f.f_cc != Internal then match Ms.find_opt fn_label label_map with | None -> errors, Ms.add fn_label {loc=f.f_loc;fname=f.f_name.fn_name} label_map | Some (label) -> let conflict = {first_decl=label; conflict_decl={loc=f.f_loc; fname=f.f_name.fn_name}} in conflict::errors, label_map else errors,label_map let get_labels_errors (prog: ('len,'info,'asm) gprog) = fst (List.fold_left ( fun label_map f -> match f with | MIfun f -> check_labels_fun f label_map | _ -> label_map ) ([],Ms.empty) prog)
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>