CBMC
c_typecheck_baset Class Referenceabstract

#include <c_typecheck_base.h>

+ Inheritance diagram for c_typecheck_baset:
+ Collaboration diagram for c_typecheck_baset:

Public Member Functions

 c_typecheck_baset (symbol_table_baset &_symbol_table, const std::string &_module, message_handlert &_message_handler)
 
 c_typecheck_baset (symbol_table_baset &_symbol_table1, const symbol_table_baset &_symbol_table2, const std::string &_module, message_handlert &_message_handler)
 
virtual ~c_typecheck_baset ()
 
virtual void typecheck ()=0
 
virtual void typecheck_expr (exprt &expr)
 
virtual void typecheck_spec_assigns (exprt::operandst &targets)
 
- Public Member Functions inherited from typecheckt
 typecheckt (message_handlert &_message_handler)
 
virtual ~typecheckt ()
 
virtual bool typecheck_main ()
 
- Public Member Functions inherited from messaget
virtual void set_message_handler (message_handlert &_message_handler)
 
message_handlertget_message_handler ()
 
 messaget ()
 
 messaget (const messaget &other)
 
messagetoperator= (const messaget &other)
 
 messaget (message_handlert &_message_handler)
 
virtual ~messaget ()
 
mstreamtget_mstream (unsigned message_level) const
 
mstreamterror () const
 
mstreamtwarning () const
 
mstreamtresult () const
 
mstreamtstatus () const
 
mstreamtstatistics () const
 
mstreamtprogress () const
 
mstreamtdebug () const
 
void conditional_output (mstreamt &mstream, const std::function< void(mstreamt &)> &output_generator) const
 Generate output to message_stream using output_generator if the configured verbosity is at least as high as that of message_stream. More...
 
- Public Member Functions inherited from namespacet
 namespacet (const symbol_table_baset &_symbol_table)
 
 namespacet (const symbol_table_baset &_symbol_table1, const symbol_table_baset &_symbol_table2)
 
 namespacet (const symbol_table_baset *_symbol_table1, const symbol_table_baset *_symbol_table2)
 
bool lookup (const irep_idt &name, const symbolt *&symbol) const override
 See documentation for namespace_baset::lookup(). More...
 
std::size_t smallest_unused_suffix (const std::string &prefix) const override
 See documentation for namespace_baset::smallest_unused_suffix(). More...
 
const symbol_table_basetget_symbol_table () const
 Return first symbol table registered with the namespace. More...
 
const symboltlookup (const irep_idt &name) const
 Lookup a symbol in the namespace. More...
 
const symboltlookup (const symbol_exprt &) const
 Generic lookup function for a symbol expression in a symbol table. More...
 
const symboltlookup (const tag_typet &) const
 Generic lookup function for a tag type in a symbol table. More...
 
virtual bool lookup (const irep_idt &name, const symbolt *&symbol) const=0
 Searches for a symbol named name. More...
 
- Public Member Functions inherited from namespace_baset
const symboltlookup (const irep_idt &name) const
 Lookup a symbol in the namespace. More...
 
const symboltlookup (const symbol_exprt &) const
 Generic lookup function for a symbol expression in a symbol table. More...
 
const symboltlookup (const tag_typet &) const
 Generic lookup function for a tag type in a symbol table. More...
 
virtual ~namespace_baset ()
 
void follow_macros (exprt &) const
 Follow macros to their values in a given expression. More...
 
const typetfollow (const typet &) const
 Resolve type symbol to the type it points to. More...
 
const union_typetfollow_tag (const union_tag_typet &) const
 Follow type tag of union type. More...
 
const struct_typetfollow_tag (const struct_tag_typet &) const
 Follow type tag of struct type. More...
 
const c_enum_typetfollow_tag (const c_enum_tag_typet &) const
 Follow type tag of enum type. More...
 
const struct_union_typetfollow_tag (const struct_or_union_tag_typet &) const
 Resolve a struct_tag_typet or union_tag_typet to the complete version. More...
 

Protected Types

typedef std::unordered_map< irep_idt, typetid_type_mapt
 
typedef std::unordered_map< irep_idt, irep_idtasm_label_mapt
 

Protected Member Functions

virtual std::string to_string (const exprt &expr)
 
virtual std::string to_string (const typet &type)
 
virtual void do_initializer (exprt &initializer, const typet &type, bool force_constant)
 
virtual exprt do_initializer_rec (const exprt &value, const typet &type, bool force_constant)
 initialize something of type ‘type’ with given value ‘value’ More...
 
virtual exprt do_initializer_list (const exprt &value, const typet &type, bool force_constant)
 
virtual exprt::operandst::const_iterator do_designated_initializer (exprt &result, designatort &designator, const exprt &initializer_list, exprt::operandst::const_iterator init_it, bool force_constant)
 
designatort make_designator (const typet &type, const exprt &src)
 
void designator_enter (const typet &type, designatort &designator)
 
void increment_designator (designatort &designator)
 
bool gcc_vector_types_compatible (const vector_typet &, const vector_typet &)
 
virtual void implicit_typecast (exprt &expr, const typet &type)
 
virtual void implicit_typecast_arithmetic (exprt &expr)
 
virtual void implicit_typecast_arithmetic (exprt &expr1, exprt &expr2)
 
virtual void implicit_typecast_bool (exprt &expr)
 
virtual void start_typecheck_code ()
 
virtual void typecheck_code (codet &code)
 
virtual void typecheck_assign (codet &expr)
 
virtual void typecheck_asm (code_asmt &code)
 
virtual void typecheck_block (code_blockt &code)
 
virtual void typecheck_break (codet &code)
 
virtual void typecheck_continue (codet &code)
 
virtual void typecheck_decl (codet &code)
 
virtual void typecheck_expression (codet &code)
 
virtual void typecheck_for (codet &code)
 
virtual void typecheck_goto (code_gotot &code)
 
virtual void typecheck_ifthenelse (code_ifthenelset &code)
 
virtual void typecheck_label (code_labelt &code)
 
virtual void typecheck_switch_case (code_switch_caset &code)
 
virtual void typecheck_gcc_computed_goto (codet &code)
 
virtual void typecheck_gcc_switch_case_range (code_gcc_switch_case_ranget &)
 
virtual void typecheck_gcc_local_label (codet &code)
 
virtual void typecheck_return (code_frontend_returnt &)
 
virtual void typecheck_switch (codet &code)
 
virtual void typecheck_while (code_whilet &code)
 
virtual void typecheck_dowhile (code_dowhilet &code)
 
virtual void typecheck_start_thread (codet &code)
 
virtual void typecheck_typed_target_call (side_effect_expr_function_callt &expr)
 
virtual void typecheck_obeys_contract_call (side_effect_expr_function_callt &expr)
 Checks an obeys_contract predicate occurrence. More...
 
virtual void check_history_expr_return_value (const exprt &expr, std::string &clause_type)
 Checks that no history expr or return_value exists in expr. More...
 
virtual void check_was_freed (const exprt &expr, std::string &clause_type)
 Checks that no occurence of the CPROVER_PREFIX was_freed predicate is found in expr. More...
 
virtual void typecheck_spec_frees (exprt::operandst &targets)
 
virtual void typecheck_conditional_targets (exprt::operandst &targets, const std::function< void(exprt &)> typecheck_target, const std::string &clause_type)
 
virtual void typecheck_spec_condition (exprt &condition)
 
virtual void typecheck_spec_assigns_target (exprt &target)
 
virtual void typecheck_spec_frees_target (exprt &target)
 
virtual void typecheck_spec_loop_invariant (codet &code)
 
virtual void typecheck_spec_decreases (codet &code)
 
virtual void throw_on_side_effects (const exprt &expr)
 
virtual void typecheck_expr_builtin_va_arg (exprt &expr)
 
virtual void typecheck_expr_builtin_offsetof (exprt &expr)
 
virtual void typecheck_expr_cw_va_arg_typeof (exprt &expr)
 
virtual void typecheck_expr_main (exprt &expr)
 
virtual void typecheck_expr_operands (exprt &expr)
 
virtual void typecheck_expr_comma (exprt &expr)
 
virtual void typecheck_expr_constant (exprt &expr)
 
virtual void typecheck_expr_side_effect (side_effect_exprt &expr)
 
virtual void typecheck_expr_unary_arithmetic (exprt &expr)
 
virtual void typecheck_expr_unary_boolean (exprt &expr)
 
virtual void typecheck_expr_binary_arithmetic (exprt &expr)
 
virtual void typecheck_expr_shifts (shift_exprt &expr)
 
virtual void typecheck_expr_pointer_arithmetic (exprt &expr)
 
virtual void typecheck_arithmetic_pointer (exprt &expr)
 
virtual void typecheck_expr_binary_boolean (exprt &expr)
 
virtual void typecheck_expr_trinary (if_exprt &expr)
 
virtual void typecheck_expr_address_of (exprt &expr)
 
virtual void typecheck_expr_dereference (exprt &expr)
 
virtual void typecheck_expr_member (exprt &expr)
 
virtual void typecheck_expr_ptrmember (exprt &expr)
 
virtual void typecheck_expr_rel (binary_relation_exprt &expr)
 
virtual void typecheck_expr_rel_vector (binary_exprt &expr)
 
virtual void adjust_float_rel (binary_relation_exprt &)
 
virtual void typecheck_expr_index (exprt &expr)
 
virtual void typecheck_expr_typecast (exprt &expr)
 
virtual void typecheck_expr_symbol (exprt &expr)
 
virtual void typecheck_expr_sizeof (exprt &expr)
 
virtual void typecheck_expr_alignof (exprt &expr)
 
virtual void typecheck_expr_function_identifier (exprt &expr)
 
virtual void typecheck_side_effect_gcc_conditional_expression (side_effect_exprt &expr)
 
virtual void typecheck_side_effect_function_call (side_effect_expr_function_callt &expr)
 
virtual void typecheck_side_effect_assignment (side_effect_exprt &expr)
 
virtual void typecheck_side_effect_statement_expression (side_effect_exprt &expr)
 
virtual void typecheck_function_call_arguments (side_effect_expr_function_callt &expr)
 Typecheck the parameters in a function call expression, and where necessary, make implicit casts around parameters explicit. More...
 
virtual exprt do_special_functions (side_effect_expr_function_callt &expr)
 
exprt typecheck_builtin_overflow (side_effect_expr_function_callt &expr, const irep_idt &arith_op)
 
exprt typecheck_saturating_arithmetic (const side_effect_expr_function_callt &expr)
 
virtual std::optional< symbol_exprttypecheck_gcc_polymorphic_builtin (const irep_idt &identifier, const exprt::operandst &arguments, const source_locationt &source_location)
 
virtual code_blockt instantiate_gcc_polymorphic_builtin (const irep_idt &identifier, const symbol_exprt &function_symbol)
 
virtual std::optional< symbol_exprttypecheck_shadow_memory_builtin (const side_effect_expr_function_callt &expr)
 Typecheck the function if it is a shadow_memory builtin and return a symbol for it. More...
 
virtual exprt typecheck_shuffle_vector (const side_effect_expr_function_callt &expr)
 
void disallow_subexpr_by_id (const exprt &, const irep_idt &, const std::string &) const
 
virtual void make_index_type (exprt &expr)
 
virtual void make_constant (exprt &expr)
 
virtual void make_constant_index (exprt &expr)
 
virtual bool gcc_types_compatible_p (const typet &, const typet &)
 
virtual bool builtin_factory (const irep_idt &)
 
virtual void typecheck_type (typet &type)
 
virtual void typecheck_compound_type (struct_union_typet &type)
 
virtual void typecheck_compound_body (struct_union_typet &type)
 
virtual void typecheck_c_enum_type (typet &type)
 
virtual void typecheck_c_enum_tag_type (c_enum_tag_typet &type)
 
virtual void typecheck_code_type (code_typet &type)
 
virtual void typecheck_typedef_type (typet &type)
 
virtual void typecheck_c_bit_field_type (c_bit_field_typet &type)
 
virtual void typecheck_typeof_type (typet &type)
 
virtual void typecheck_array_type (array_typet &type)
 
virtual void typecheck_vector_type (typet &type)
 
virtual void typecheck_custom_type (typet &type)
 
virtual void adjust_function_parameter (typet &type) const
 
virtual bool is_complete_type (const typet &type) const
 
typet enum_constant_type (const mp_integer &min, const mp_integer &max) const
 
bitvector_typet enum_underlying_type (const mp_integer &min, const mp_integer &max, bool is_packed) const
 
void move_symbol (symbolt &symbol, symbolt *&new_symbol)
 
void move_symbol (symbolt &symbol)
 
void typecheck_declaration (ansi_c_declarationt &)
 
void typecheck_symbol (symbolt &symbol)
 
void typecheck_new_symbol (symbolt &symbol)
 
void typecheck_redefinition_type (symbolt &old_symbol, symbolt &new_symbol)
 
void typecheck_redefinition_non_type (symbolt &old_symbol, symbolt &new_symbol)
 
void typecheck_function_body (symbolt &symbol)
 
void add_parameters_to_symbol_table (symbolt &symbol)
 Create symbols for parameter of the code-typed symbol symbol. More...
 
virtual void do_initializer (symbolt &symbol)
 
void apply_asm_label (const irep_idt &asm_label, symbolt &symbol)
 

Static Protected Member Functions

static void add_rounding_mode (exprt &)
 
static bool is_numeric_type (const typet &src)
 

Protected Attributes

symbol_table_basetsymbol_table
 
const irep_idt module
 
const irep_idt mode
 
symbolt current_symbol
 
id_type_mapt parameter_map
 
bool break_is_allowed
 
bool continue_is_allowed
 
bool case_is_allowed
 
typet switch_op_type
 
typet return_type
 
std::map< irep_idt, source_locationtlabels_defined
 
std::map< irep_idt, source_locationtlabels_used
 
std::list< codetclean_code
 
asm_label_mapt asm_label_map
 
- Protected Attributes inherited from messaget
message_handlertmessage_handler
 
mstreamt mstream
 
- Protected Attributes inherited from namespacet
const symbol_table_basetsymbol_table1
 
const symbol_table_basetsymbol_table2
 

Additional Inherited Members

- Public Types inherited from messaget
enum  message_levelt {
  M_ERROR =1 , M_WARNING =2 , M_RESULT =4 , M_STATUS =6 ,
  M_STATISTICS =8 , M_PROGRESS =9 , M_DEBUG =10
}
 
- Static Public Member Functions inherited from messaget
static unsigned eval_verbosity (const std::string &user_input, const message_levelt default_verbosity, message_handlert &dest)
 Parse a (user-)provided string as a verbosity level and set it as the verbosity of dest. More...
 
static commandt command (unsigned c)
 Create an ECMA-48 SGR (Select Graphic Rendition) command. More...
 
- Static Public Attributes inherited from messaget
static eomt eom
 
static const commandt reset
 return to default formatting, as defined by the terminal More...
 
static const commandt red
 render text with red foreground color More...
 
static const commandt green
 render text with green foreground color More...
 
static const commandt yellow
 render text with yellow foreground color More...
 
static const commandt blue
 render text with blue foreground color More...
 
static const commandt magenta
 render text with magenta foreground color More...
 
static const commandt cyan
 render text with cyan foreground color More...
 
static const commandt bright_red
 render text with bright red foreground color More...
 
static const commandt bright_green
 render text with bright green foreground color More...
 
static const commandt bright_yellow
 render text with bright yellow foreground color More...
 
static const commandt bright_blue
 render text with bright blue foreground color More...
 
static const commandt bright_magenta
 render text with bright magenta foreground color More...
 
static const commandt bright_cyan
 render text with bright cyan foreground color More...
 
static const commandt bold
 render text with bold font More...
 
static const commandt faint
 render text with faint font More...
 
static const commandt italic
 render italic text More...
 
static const commandt underline
 render underlined text More...
 

Detailed Description

Definition at line 28 of file c_typecheck_base.h.

Member Typedef Documentation

◆ asm_label_mapt

typedef std::unordered_map<irep_idt, irep_idt> c_typecheck_baset::asm_label_mapt
protected

Definition at line 316 of file c_typecheck_base.h.

◆ id_type_mapt

typedef std::unordered_map<irep_idt, typet> c_typecheck_baset::id_type_mapt
protected

Definition at line 76 of file c_typecheck_base.h.

Constructor & Destructor Documentation

◆ c_typecheck_baset() [1/2]

c_typecheck_baset::c_typecheck_baset ( symbol_table_baset _symbol_table,
const std::string &  _module,
message_handlert _message_handler 
)
inline

Definition at line 33 of file c_typecheck_base.h.

◆ c_typecheck_baset() [2/2]

c_typecheck_baset::c_typecheck_baset ( symbol_table_baset _symbol_table1,
const symbol_table_baset _symbol_table2,
const std::string &  _module,
message_handlert _message_handler 
)
inline

Definition at line 48 of file c_typecheck_base.h.

◆ ~c_typecheck_baset()

virtual c_typecheck_baset::~c_typecheck_baset ( )
inlinevirtual

Definition at line 64 of file c_typecheck_base.h.

Member Function Documentation

◆ add_parameters_to_symbol_table()

void c_typecheck_baset::add_parameters_to_symbol_table ( symbolt symbol)
protected

Create symbols for parameter of the code-typed symbol symbol.

Definition at line 996 of file c_typecheck_base.cpp.

◆ add_rounding_mode()

void c_typecheck_baset::add_rounding_mode ( exprt expr)
staticprotected

Definition at line 61 of file c_typecheck_expr.cpp.

◆ adjust_float_rel()

void c_typecheck_baset::adjust_float_rel ( binary_relation_exprt expr)
protectedvirtual

Definition at line 1347 of file c_typecheck_expr.cpp.

◆ adjust_function_parameter()

void c_typecheck_baset::adjust_function_parameter ( typet type) const
protectedvirtual

Definition at line 1631 of file c_typecheck_type.cpp.

◆ apply_asm_label()

void c_typecheck_baset::apply_asm_label ( const irep_idt asm_label,
symbolt symbol 
)
protected

Definition at line 656 of file c_typecheck_base.cpp.

◆ builtin_factory()

bool c_typecheck_baset::builtin_factory ( const irep_idt identifier)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 2075 of file c_typecheck_expr.cpp.

◆ check_history_expr_return_value()

void c_typecheck_baset::check_history_expr_return_value ( const exprt expr,
std::string &  clause_type 
)
protectedvirtual

Checks that no history expr or return_value exists in expr.

Definition at line 722 of file c_typecheck_base.cpp.

◆ check_was_freed()

void c_typecheck_baset::check_was_freed ( const exprt expr,
std::string &  clause_type 
)
protectedvirtual

Checks that no occurence of the CPROVER_PREFIX was_freed predicate is found in expr.

Definition at line 749 of file c_typecheck_base.cpp.

◆ designator_enter()

void c_typecheck_baset::designator_enter ( const typet type,
designatort designator 
)
protected

Definition at line 250 of file c_typecheck_initializer.cpp.

◆ disallow_subexpr_by_id()

void c_typecheck_baset::disallow_subexpr_by_id ( const exprt expr,
const irep_idt id,
const std::string &  message 
) const
protected

Definition at line 4694 of file c_typecheck_expr.cpp.

◆ do_designated_initializer()

exprt::operandst::const_iterator c_typecheck_baset::do_designated_initializer ( exprt result,
designatort designator,
const exprt initializer_list,
exprt::operandst::const_iterator  init_it,
bool  force_constant 
)
protectedvirtual

Definition at line 345 of file c_typecheck_initializer.cpp.

◆ do_initializer() [1/2]

void c_typecheck_baset::do_initializer ( exprt initializer,
const typet type,
bool  force_constant 
)
protectedvirtual

Definition at line 26 of file c_typecheck_initializer.cpp.

◆ do_initializer() [2/2]

void c_typecheck_baset::do_initializer ( symbolt symbol)
protectedvirtual

Definition at line 224 of file c_typecheck_initializer.cpp.

◆ do_initializer_list()

exprt c_typecheck_baset::do_initializer_list ( const exprt value,
const typet type,
bool  force_constant 
)
protectedvirtual

Definition at line 909 of file c_typecheck_initializer.cpp.

◆ do_initializer_rec()

exprt c_typecheck_baset::do_initializer_rec ( const exprt value,
const typet type,
bool  force_constant 
)
protectedvirtual

initialize something of type ‘type’ with given value ‘value’

Definition at line 56 of file c_typecheck_initializer.cpp.

◆ do_special_functions()

exprt c_typecheck_baset::do_special_functions ( side_effect_expr_function_callt expr)
protectedvirtual

Definition at line 2540 of file c_typecheck_expr.cpp.

◆ enum_constant_type()

typet c_typecheck_baset::enum_constant_type ( const mp_integer min,
const mp_integer max 
) const
protected

Definition at line 1099 of file c_typecheck_type.cpp.

◆ enum_underlying_type()

bitvector_typet c_typecheck_baset::enum_underlying_type ( const mp_integer min,
const mp_integer max,
bool  is_packed 
) const
protected

Definition at line 1131 of file c_typecheck_type.cpp.

◆ gcc_types_compatible_p()

bool c_typecheck_baset::gcc_types_compatible_p ( const typet type1,
const typet type2 
)
protectedvirtual

Definition at line 96 of file c_typecheck_expr.cpp.

◆ gcc_vector_types_compatible()

bool c_typecheck_baset::gcc_vector_types_compatible ( const vector_typet type0,
const vector_typet type1 
)
protected

Definition at line 3967 of file c_typecheck_expr.cpp.

◆ implicit_typecast()

void c_typecheck_baset::implicit_typecast ( exprt expr,
const typet type 
)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 13 of file c_typecheck_typecast.cpp.

◆ implicit_typecast_arithmetic() [1/2]

void c_typecheck_baset::implicit_typecast_arithmetic ( exprt expr)
protectedvirtual

Definition at line 68 of file c_typecheck_typecast.cpp.

◆ implicit_typecast_arithmetic() [2/2]

void c_typecheck_baset::implicit_typecast_arithmetic ( exprt expr1,
exprt expr2 
)
protectedvirtual

Definition at line 42 of file c_typecheck_typecast.cpp.

◆ implicit_typecast_bool()

virtual void c_typecheck_baset::implicit_typecast_bool ( exprt expr)
inlineprotectedvirtual

Definition at line 121 of file c_typecheck_base.h.

◆ increment_designator()

void c_typecheck_baset::increment_designator ( designatort designator)
protected

Definition at line 706 of file c_typecheck_initializer.cpp.

◆ instantiate_gcc_polymorphic_builtin()

code_blockt c_typecheck_baset::instantiate_gcc_polymorphic_builtin ( const irep_idt identifier,
const symbol_exprt function_symbol 
)
protectedvirtual

Definition at line 1238 of file c_typecheck_gcc_polymorphic_builtins.cpp.

◆ is_complete_type()

bool c_typecheck_baset::is_complete_type ( const typet type) const
protectedvirtual

Definition at line 366 of file c_typecheck_code.cpp.

◆ is_numeric_type()

static bool c_typecheck_baset::is_numeric_type ( const typet src)
inlinestaticprotected

Definition at line 301 of file c_typecheck_base.h.

◆ make_constant()

void c_typecheck_baset::make_constant ( exprt expr)
protectedvirtual

Definition at line 4655 of file c_typecheck_expr.cpp.

◆ make_constant_index()

void c_typecheck_baset::make_constant_index ( exprt expr)
protectedvirtual

Definition at line 4678 of file c_typecheck_expr.cpp.

◆ make_designator()

designatort c_typecheck_baset::make_designator ( const typet type,
const exprt src 
)
protected

Definition at line 756 of file c_typecheck_initializer.cpp.

◆ make_index_type()

void c_typecheck_baset::make_index_type ( exprt expr)
protectedvirtual

Definition at line 1284 of file c_typecheck_expr.cpp.

◆ move_symbol() [1/2]

void c_typecheck_baset::move_symbol ( symbolt symbol)
inlineprotected

Definition at line 284 of file c_typecheck_base.h.

◆ move_symbol() [2/2]

void c_typecheck_baset::move_symbol ( symbolt symbol,
symbolt *&  new_symbol 
)
protected

Definition at line 38 of file c_typecheck_base.cpp.

◆ start_typecheck_code()

void c_typecheck_baset::start_typecheck_code ( )
protectedvirtual

Definition at line 24 of file c_typecheck_code.cpp.

◆ throw_on_side_effects()

void c_typecheck_baset::throw_on_side_effects ( const exprt expr)
protectedvirtual

Definition at line 864 of file c_typecheck_code.cpp.

◆ to_string() [1/2]

std::string c_typecheck_baset::to_string ( const exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 28 of file c_typecheck_base.cpp.

◆ to_string() [2/2]

std::string c_typecheck_baset::to_string ( const typet type)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 33 of file c_typecheck_base.cpp.

◆ typecheck()

virtual void c_typecheck_baset::typecheck ( )
pure virtual

Implements typecheckt.

Implemented in cpp_typecheckt, and ansi_c_typecheckt.

◆ typecheck_arithmetic_pointer()

void c_typecheck_baset::typecheck_arithmetic_pointer ( exprt expr)
protectedvirtual

Definition at line 4196 of file c_typecheck_expr.cpp.

◆ typecheck_array_type()

void c_typecheck_baset::typecheck_array_type ( array_typet type)
protectedvirtual

Definition at line 516 of file c_typecheck_type.cpp.

◆ typecheck_asm()

void c_typecheck_baset::typecheck_asm ( code_asmt code)
protectedvirtual

Definition at line 155 of file c_typecheck_code.cpp.

◆ typecheck_assign()

void c_typecheck_baset::typecheck_assign ( codet expr)
protectedvirtual

Definition at line 189 of file c_typecheck_code.cpp.

◆ typecheck_block()

void c_typecheck_baset::typecheck_block ( code_blockt code)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 205 of file c_typecheck_code.cpp.

◆ typecheck_break()

void c_typecheck_baset::typecheck_break ( codet code)
protectedvirtual

Definition at line 224 of file c_typecheck_code.cpp.

◆ typecheck_builtin_overflow()

exprt c_typecheck_baset::typecheck_builtin_overflow ( side_effect_expr_function_callt expr,
const irep_idt arith_op 
)
protected

Definition at line 3747 of file c_typecheck_expr.cpp.

◆ typecheck_c_bit_field_type()

void c_typecheck_baset::typecheck_c_bit_field_type ( c_bit_field_typet type)
protectedvirtual

Definition at line 1475 of file c_typecheck_type.cpp.

◆ typecheck_c_enum_tag_type()

void c_typecheck_baset::typecheck_c_enum_tag_type ( c_enum_tag_typet type)
protectedvirtual

Definition at line 1417 of file c_typecheck_type.cpp.

◆ typecheck_c_enum_type()

void c_typecheck_baset::typecheck_c_enum_type ( typet type)
protectedvirtual

Definition at line 1189 of file c_typecheck_type.cpp.

◆ typecheck_code()

void c_typecheck_baset::typecheck_code ( codet code)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 29 of file c_typecheck_code.cpp.

◆ typecheck_code_type()

void c_typecheck_baset::typecheck_code_type ( code_typet type)
protectedvirtual

Definition at line 420 of file c_typecheck_type.cpp.

◆ typecheck_compound_body()

void c_typecheck_baset::typecheck_compound_body ( struct_union_typet type)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 861 of file c_typecheck_type.cpp.

◆ typecheck_compound_type()

void c_typecheck_baset::typecheck_compound_type ( struct_union_typet type)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 729 of file c_typecheck_type.cpp.

◆ typecheck_conditional_targets()

void c_typecheck_baset::typecheck_conditional_targets ( exprt::operandst targets,
const std::function< void(exprt &)>  typecheck_target,
const std::string &  clause_type 
)
protectedvirtual

Definition at line 927 of file c_typecheck_code.cpp.

◆ typecheck_continue()

void c_typecheck_baset::typecheck_continue ( codet code)
protectedvirtual

Definition at line 234 of file c_typecheck_code.cpp.

◆ typecheck_custom_type()

void c_typecheck_baset::typecheck_custom_type ( typet type)
protectedvirtual

Definition at line 325 of file c_typecheck_type.cpp.

◆ typecheck_decl()

void c_typecheck_baset::typecheck_decl ( codet code)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 244 of file c_typecheck_code.cpp.

◆ typecheck_declaration()

void c_typecheck_baset::typecheck_declaration ( ansi_c_declarationt declaration)
protected

Definition at line 770 of file c_typecheck_base.cpp.

◆ typecheck_dowhile()

void c_typecheck_baset::typecheck_dowhile ( code_dowhilet code)
protectedvirtual

Definition at line 818 of file c_typecheck_code.cpp.

◆ typecheck_expr()

void c_typecheck_baset::typecheck_expr ( exprt expr)
virtual

Reimplemented in cpp_typecheckt.

Definition at line 46 of file c_typecheck_expr.cpp.

◆ typecheck_expr_address_of()

void c_typecheck_baset::typecheck_expr_address_of ( exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 1746 of file c_typecheck_expr.cpp.

◆ typecheck_expr_alignof()

void c_typecheck_baset::typecheck_expr_alignof ( exprt expr)
protectedvirtual

Definition at line 1073 of file c_typecheck_expr.cpp.

◆ typecheck_expr_binary_arithmetic()

void c_typecheck_baset::typecheck_expr_binary_arithmetic ( exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 3996 of file c_typecheck_expr.cpp.

◆ typecheck_expr_binary_boolean()

void c_typecheck_baset::typecheck_expr_binary_boolean ( exprt expr)
protectedvirtual

Definition at line 4326 of file c_typecheck_expr.cpp.

◆ typecheck_expr_builtin_offsetof()

void c_typecheck_baset::typecheck_expr_builtin_offsetof ( exprt expr)
protectedvirtual

Definition at line 572 of file c_typecheck_expr.cpp.

◆ typecheck_expr_builtin_va_arg()

void c_typecheck_baset::typecheck_expr_builtin_va_arg ( exprt expr)
protectedvirtual

Definition at line 517 of file c_typecheck_expr.cpp.

◆ typecheck_expr_comma()

void c_typecheck_baset::typecheck_expr_comma ( exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 508 of file c_typecheck_expr.cpp.

◆ typecheck_expr_constant()

void c_typecheck_baset::typecheck_expr_constant ( exprt expr)
protectedvirtual

Definition at line 3920 of file c_typecheck_expr.cpp.

◆ typecheck_expr_cw_va_arg_typeof()

void c_typecheck_baset::typecheck_expr_cw_va_arg_typeof ( exprt expr)
protectedvirtual

Definition at line 555 of file c_typecheck_expr.cpp.

◆ typecheck_expr_dereference()

void c_typecheck_baset::typecheck_expr_dereference ( exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 1806 of file c_typecheck_expr.cpp.

◆ typecheck_expr_function_identifier()

void c_typecheck_baset::typecheck_expr_function_identifier ( exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 1851 of file c_typecheck_expr.cpp.

◆ typecheck_expr_index()

void c_typecheck_baset::typecheck_expr_index ( exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 1289 of file c_typecheck_expr.cpp.

◆ typecheck_expr_main()

void c_typecheck_baset::typecheck_expr_main ( exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 175 of file c_typecheck_expr.cpp.

◆ typecheck_expr_member()

void c_typecheck_baset::typecheck_expr_member ( exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 1526 of file c_typecheck_expr.cpp.

◆ typecheck_expr_operands()

void c_typecheck_baset::typecheck_expr_operands ( exprt expr)
protectedvirtual

Definition at line 731 of file c_typecheck_expr.cpp.

◆ typecheck_expr_pointer_arithmetic()

void c_typecheck_baset::typecheck_expr_pointer_arithmetic ( exprt expr)
protectedvirtual

Definition at line 4236 of file c_typecheck_expr.cpp.

◆ typecheck_expr_ptrmember()

void c_typecheck_baset::typecheck_expr_ptrmember ( exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 1492 of file c_typecheck_expr.cpp.

◆ typecheck_expr_rel()

void c_typecheck_baset::typecheck_expr_rel ( binary_relation_exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 1359 of file c_typecheck_expr.cpp.

◆ typecheck_expr_rel_vector()

void c_typecheck_baset::typecheck_expr_rel_vector ( binary_exprt expr)
protectedvirtual

Definition at line 1461 of file c_typecheck_expr.cpp.

◆ typecheck_expr_shifts()

void c_typecheck_baset::typecheck_expr_shifts ( shift_exprt expr)
protectedvirtual

Definition at line 4125 of file c_typecheck_expr.cpp.

◆ typecheck_expr_side_effect()

void c_typecheck_baset::typecheck_expr_side_effect ( side_effect_exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 1862 of file c_typecheck_expr.cpp.

◆ typecheck_expr_sizeof()

void c_typecheck_baset::typecheck_expr_sizeof ( exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 941 of file c_typecheck_expr.cpp.

◆ typecheck_expr_symbol()

void c_typecheck_baset::typecheck_expr_symbol ( exprt expr)
protectedvirtual

Definition at line 806 of file c_typecheck_expr.cpp.

◆ typecheck_expr_trinary()

void c_typecheck_baset::typecheck_expr_trinary ( if_exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 1606 of file c_typecheck_expr.cpp.

◆ typecheck_expr_typecast()

void c_typecheck_baset::typecheck_expr_typecast ( exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 1095 of file c_typecheck_expr.cpp.

◆ typecheck_expr_unary_arithmetic()

void c_typecheck_baset::typecheck_expr_unary_arithmetic ( exprt expr)
protectedvirtual

Definition at line 3925 of file c_typecheck_expr.cpp.

◆ typecheck_expr_unary_boolean()

void c_typecheck_baset::typecheck_expr_unary_boolean ( exprt expr)
protectedvirtual

Definition at line 3955 of file c_typecheck_expr.cpp.

◆ typecheck_expression()

void c_typecheck_baset::typecheck_expression ( codet code)
protectedvirtual

Definition at line 402 of file c_typecheck_code.cpp.

◆ typecheck_for()

void c_typecheck_baset::typecheck_for ( codet code)
protectedvirtual

Definition at line 416 of file c_typecheck_code.cpp.

◆ typecheck_function_body()

void c_typecheck_baset::typecheck_function_body ( symbolt symbol)
protected

Definition at line 609 of file c_typecheck_base.cpp.

◆ typecheck_function_call_arguments()

void c_typecheck_baset::typecheck_function_call_arguments ( side_effect_expr_function_callt expr)
protectedvirtual

Typecheck the parameters in a function call expression, and where necessary, make implicit casts around parameters explicit.

Reimplemented in cpp_typecheckt.

Definition at line 3842 of file c_typecheck_expr.cpp.

◆ typecheck_gcc_computed_goto()

void c_typecheck_baset::typecheck_gcc_computed_goto ( codet code)
protectedvirtual

Definition at line 600 of file c_typecheck_code.cpp.

◆ typecheck_gcc_local_label()

void c_typecheck_baset::typecheck_gcc_local_label ( codet code)
protectedvirtual

Definition at line 588 of file c_typecheck_code.cpp.

◆ typecheck_gcc_polymorphic_builtin()

std::optional< symbol_exprt > c_typecheck_baset::typecheck_gcc_polymorphic_builtin ( const irep_idt identifier,
const exprt::operandst arguments,
const source_locationt source_location 
)
protectedvirtual

Definition at line 494 of file c_typecheck_gcc_polymorphic_builtins.cpp.

◆ typecheck_gcc_switch_case_range()

void c_typecheck_baset::typecheck_gcc_switch_case_range ( code_gcc_switch_case_ranget code)
protectedvirtual

Definition at line 569 of file c_typecheck_code.cpp.

◆ typecheck_goto()

void c_typecheck_baset::typecheck_goto ( code_gotot code)
protectedvirtual

Definition at line 594 of file c_typecheck_code.cpp.

◆ typecheck_ifthenelse()

void c_typecheck_baset::typecheck_ifthenelse ( code_ifthenelset code)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 623 of file c_typecheck_code.cpp.

◆ typecheck_label()

void c_typecheck_baset::typecheck_label ( code_labelt code)
protectedvirtual

Definition at line 520 of file c_typecheck_code.cpp.

◆ typecheck_new_symbol()

void c_typecheck_baset::typecheck_new_symbol ( symbolt symbol)
protected

Definition at line 158 of file c_typecheck_base.cpp.

◆ typecheck_obeys_contract_call()

void c_typecheck_baset::typecheck_obeys_contract_call ( side_effect_expr_function_callt expr)
protectedvirtual

Checks an obeys_contract predicate occurrence.

Definition at line 2009 of file c_typecheck_expr.cpp.

◆ typecheck_redefinition_non_type()

void c_typecheck_baset::typecheck_redefinition_non_type ( symbolt old_symbol,
symbolt new_symbol 
)
protected

Definition at line 318 of file c_typecheck_base.cpp.

◆ typecheck_redefinition_type()

void c_typecheck_baset::typecheck_redefinition_type ( symbolt old_symbol,
symbolt new_symbol 
)
protected

Definition at line 188 of file c_typecheck_base.cpp.

◆ typecheck_return()

void c_typecheck_baset::typecheck_return ( code_frontend_returnt code)
protectedvirtual

Definition at line 672 of file c_typecheck_code.cpp.

◆ typecheck_saturating_arithmetic()

exprt c_typecheck_baset::typecheck_saturating_arithmetic ( const side_effect_expr_function_callt expr)
protected

Definition at line 3810 of file c_typecheck_expr.cpp.

◆ typecheck_shadow_memory_builtin()

std::optional< symbol_exprt > c_typecheck_baset::typecheck_shadow_memory_builtin ( const side_effect_expr_function_callt expr)
protectedvirtual

Typecheck the function if it is a shadow_memory builtin and return a symbol for it.

Otherwise return empty.

Definition at line 226 of file c_typecheck_shadow_memory_builtin.cpp.

◆ typecheck_shuffle_vector()

exprt c_typecheck_baset::typecheck_shuffle_vector ( const side_effect_expr_function_callt expr)
protectedvirtual

Definition at line 1403 of file c_typecheck_gcc_polymorphic_builtins.cpp.

◆ typecheck_side_effect_assignment()

void c_typecheck_baset::typecheck_side_effect_assignment ( side_effect_exprt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 4340 of file c_typecheck_expr.cpp.

◆ typecheck_side_effect_function_call()

void c_typecheck_baset::typecheck_side_effect_function_call ( side_effect_expr_function_callt expr)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 2084 of file c_typecheck_expr.cpp.

◆ typecheck_side_effect_gcc_conditional_expression()

void c_typecheck_baset::typecheck_side_effect_gcc_conditional_expression ( side_effect_exprt expr)
protectedvirtual

Definition at line 1718 of file c_typecheck_expr.cpp.

◆ typecheck_side_effect_statement_expression()

void c_typecheck_baset::typecheck_side_effect_statement_expression ( side_effect_exprt expr)
protectedvirtual

Definition at line 908 of file c_typecheck_expr.cpp.

◆ typecheck_spec_assigns()

void c_typecheck_baset::typecheck_spec_assigns ( exprt::operandst targets)
virtual

Definition at line 980 of file c_typecheck_code.cpp.

◆ typecheck_spec_assigns_target()

void c_typecheck_baset::typecheck_spec_assigns_target ( exprt target)
protectedvirtual

Definition at line 996 of file c_typecheck_code.cpp.

◆ typecheck_spec_condition()

void c_typecheck_baset::typecheck_spec_condition ( exprt condition)
protectedvirtual

Definition at line 880 of file c_typecheck_code.cpp.

◆ typecheck_spec_decreases()

void c_typecheck_baset::typecheck_spec_decreases ( codet code)
protectedvirtual

Definition at line 1106 of file c_typecheck_code.cpp.

◆ typecheck_spec_frees()

void c_typecheck_baset::typecheck_spec_frees ( exprt::operandst targets)
protectedvirtual

Definition at line 988 of file c_typecheck_code.cpp.

◆ typecheck_spec_frees_target()

void c_typecheck_baset::typecheck_spec_frees_target ( exprt target)
protectedvirtual

Definition at line 1044 of file c_typecheck_code.cpp.

◆ typecheck_spec_loop_invariant()

void c_typecheck_baset::typecheck_spec_loop_invariant ( codet code)
protectedvirtual

Definition at line 1089 of file c_typecheck_code.cpp.

◆ typecheck_start_thread()

void c_typecheck_baset::typecheck_start_thread ( codet code)
protectedvirtual

Definition at line 660 of file c_typecheck_code.cpp.

◆ typecheck_switch()

void c_typecheck_baset::typecheck_switch ( codet code)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 709 of file c_typecheck_code.cpp.

◆ typecheck_switch_case()

void c_typecheck_baset::typecheck_switch_case ( code_switch_caset code)
protectedvirtual

Definition at line 533 of file c_typecheck_code.cpp.

◆ typecheck_symbol()

void c_typecheck_baset::typecheck_symbol ( symbolt symbol)
protected

Definition at line 52 of file c_typecheck_base.cpp.

◆ typecheck_type()

void c_typecheck_baset::typecheck_type ( typet type)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 34 of file c_typecheck_type.cpp.

◆ typecheck_typed_target_call()

void c_typecheck_baset::typecheck_typed_target_call ( side_effect_expr_function_callt expr)
protectedvirtual

Definition at line 1954 of file c_typecheck_expr.cpp.

◆ typecheck_typedef_type()

void c_typecheck_baset::typecheck_typedef_type ( typet type)
protectedvirtual

Definition at line 1584 of file c_typecheck_type.cpp.

◆ typecheck_typeof_type()

void c_typecheck_baset::typecheck_typeof_type ( typet type)
protectedvirtual

Definition at line 1548 of file c_typecheck_type.cpp.

◆ typecheck_vector_type()

void c_typecheck_baset::typecheck_vector_type ( typet type)
protectedvirtual

Definition at line 643 of file c_typecheck_type.cpp.

◆ typecheck_while()

void c_typecheck_baset::typecheck_while ( code_whilet code)
protectedvirtual

Reimplemented in cpp_typecheckt.

Definition at line 772 of file c_typecheck_code.cpp.

Member Data Documentation

◆ asm_label_map

asm_label_mapt c_typecheck_baset::asm_label_map
protected

Definition at line 317 of file c_typecheck_base.h.

◆ break_is_allowed

bool c_typecheck_baset::break_is_allowed
protected

Definition at line 176 of file c_typecheck_base.h.

◆ case_is_allowed

bool c_typecheck_baset::case_is_allowed
protected

Definition at line 178 of file c_typecheck_base.h.

◆ clean_code

std::list<codet> c_typecheck_baset::clean_code
protected

Definition at line 280 of file c_typecheck_base.h.

◆ continue_is_allowed

bool c_typecheck_baset::continue_is_allowed
protected

Definition at line 177 of file c_typecheck_base.h.

◆ current_symbol

symbolt c_typecheck_baset::current_symbol
protected

Definition at line 74 of file c_typecheck_base.h.

◆ labels_defined

std::map<irep_idt, source_locationt> c_typecheck_baset::labels_defined
protected

Definition at line 183 of file c_typecheck_base.h.

◆ labels_used

std::map<irep_idt, source_locationt> c_typecheck_baset::labels_used
protected

Definition at line 183 of file c_typecheck_base.h.

◆ mode

const irep_idt c_typecheck_baset::mode
protected

Definition at line 73 of file c_typecheck_base.h.

◆ module

const irep_idt c_typecheck_baset::module
protected

Definition at line 72 of file c_typecheck_base.h.

◆ parameter_map

id_type_mapt c_typecheck_baset::parameter_map
protected

Definition at line 77 of file c_typecheck_base.h.

◆ return_type

typet c_typecheck_baset::return_type
protected

Definition at line 180 of file c_typecheck_base.h.

◆ switch_op_type

typet c_typecheck_baset::switch_op_type
protected

Definition at line 179 of file c_typecheck_base.h.

◆ symbol_table

symbol_table_baset& c_typecheck_baset::symbol_table
protected

Definition at line 71 of file c_typecheck_base.h.


The documentation for this class was generated from the following files: