Module IR.BuiltinDecl

Procnames for the builtin functions supported

include BUILTINS.S with type t = Procname.t
type t = Procname.t
val __assert_fail : t
val __builtin_add_overflow : t
val __builtin_mul_overflow : t
val __builtin_sub_overflow : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __objc_bridge_transfer : t
val __get_array_length : t
val __get_type_of : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __java_throw : t

__java_throw implements java's throw instruction (without arg yet, but this is covered by the usage of the return variable during frontend translation

val __hack_throw : t
val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __objc_get_ref_count : t
val __objc_set_ref_count : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_insert_key : t
val objc_insert_value : t
val objc_autorelease_pool_pop : t
val objc_autorelease_pool_push : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
val is_declared : Procname.t -> bool
val __erlang_equal : Procname.t
val __erlang_exactly_equal : Procname.t
val __erlang_not_equal : Procname.t
val __erlang_exactly_not_equal : Procname.t
val __erlang_lesser : Procname.t
val __erlang_lesser_or_equal : Procname.t
val __erlang_greater : Procname.t
val __erlang_greater_or_equal : Procname.t
val __erlang_error_badgenerator : Procname.t
val __erlang_error_badkey : Procname.t
val __erlang_error_badmatch : Procname.t
val __erlang_error_badmap : Procname.t
val __erlang_error_badrecord : Procname.t
val __erlang_error_badreturn : Procname.t

Not a runtime error in Erlang. It means that the actual type disagrees with the spec.

val __erlang_error_case_clause : Procname.t
val __erlang_error_else_clause : Procname.t
val __erlang_error_function_clause : Procname.t
val __erlang_error_if_clause : Procname.t
val __erlang_error_try_clause : Procname.t
val __erlang_make_atom : Procname.t
val __erlang_make_integer : Procname.t
val __erlang_make_cons : Procname.t
val __erlang_make_nil : Procname.t
val __erlang_make_tuple : Procname.t
val __erlang_make_map : Procname.t
val __erlang_make_str_const : Procname.t
val __erlang_make_bitstring : Procname.t
val __erlang_map_to_list : Procname.t

This is an internal function we use for map generators, not to be confused with maps:to_list/1 from OTP library.

val __erlang_receive : Procname.t
val __erlang_str_equal : Procname.t
val __infer_initializer_list : Procname.t
val __infer_skip_function : Procname.t
val __infer_skip_gcc_asm_stmt : Procname.t
val __infer_structured_binding : Procname.t
val __infer_generic_selection_expr : Procname.t
val __atomic_fetch_max : Procname.t
val __atomic_fetch_min : Procname.t
val __atomic_fetch_nand : Procname.t
val __atomic_max_fetch : Procname.t
val __atomic_min_fetch : Procname.t
val __atomic_nand_fetch : Procname.t
val __c11_atomic_fetch_max : Procname.t
val __c11_atomic_fetch_min : Procname.t
val __call_objc_block : Procname.t
val __call_c_function_ptr : Procname.t
val __opencl_atomic_fetch_max : Procname.t
val __opencl_atomic_fetch_min : Procname.t
val __builtin_cxx_co_return : Procname.t
val __builtin_cxx_co_await : Procname.t
val __get_lazy_class : t

returns the a LazyClass representation of its arguement (a type name). A LazyClass represents a class that we know the name of but don't necessarily know if the class has been defined somewhere.

val __lazy_class_initialize : t

returns the singleton object associated with a given type, and performs lazily its initialization (only generated by the Hack frontend currently)

val dispatch_sync : Procname.t
val match_builtin : t -> 'a -> string -> bool