analyzer/feasible-graph.o \
analyzer/function-set.o \
analyzer/infinite-recursion.o \
+ analyzer/kf.o \
analyzer/kf-analyzer.o \
analyzer/kf-lang-cp.o \
analyzer/known-function-manager.o \
analyzer/region.o \
analyzer/region-model.o \
analyzer/region-model-asm.o \
- analyzer/region-model-impl-calls.o \
analyzer/region-model-manager.o \
analyzer/region-model-reachability.o \
analyzer/sm.o \
extern bool compat_types_p (tree src_type, tree dst_type);
/* Abstract base class for simulating the behavior of known functions,
- supplied by the core of the analyzer, or by plugins. */
+ supplied by the core of the analyzer, or by plugins.
+ The former are typically implemented in the various kf*.cc */
class known_function
{
namespace ana {
+/* Instances of known_function are registered with the known_function_manager
+ when the analyzer starts.
+
+ The known_function_manager has responsibility for determining which
+ known_function instance (if any) is relevant at a call site, by checking
+ name or id, and by calling known_function::matches_call_types_p to ensure
+ that the known_function's preconditions hold (typically assumptions about
+ types e.g. that "has 3 args, and that arg 0 is of pointer type").
+
+ The known_function subclasses themselves have responsibility for
+ determining the outcome(s) of the call. */
+
class known_function_manager : public log_user
{
public: