blob: 373be305eaa55823f09e1f173e1e781210dea83d [file] [log] [blame]
Ted Kremenekd59cccc2008-02-14 18:28:23 +00001// GRSimpleVals.h - Transfer functions for tracking simple values -*- C++ -*--//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This files defines GRSimpleVals, a sub-class of GRTransferFuncs that
11// provides transfer functions for performing simple value tracking with
12// limited support for symbolics.
13//
14//===----------------------------------------------------------------------===//
15
16#ifndef LLVM_CLANG_ANALYSIS_GRSIMPLEVALS
17#define LLVM_CLANG_ANALYSIS_GRSIMPLEVALS
18
19#include "clang/Analysis/PathSensitive/GRTransferFuncs.h"
20
21namespace clang {
22
23class GRSimpleVals : public GRTransferFuncs {
24public:
25 GRSimpleVals() {}
26 virtual ~GRSimpleVals() {}
27
Ted Kremenekc3f261d2008-02-14 18:40:24 +000028 // Casts.
29
Ted Kremenekd59cccc2008-02-14 18:28:23 +000030 virtual RValue EvalCast(ValueManager& ValMgr, NonLValue V, Expr* CastExpr);
31 virtual RValue EvalCast(ValueManager& ValMgr, LValue V, Expr* CastExpr);
Ted Kremenekc3f261d2008-02-14 18:40:24 +000032
33 // Unary Operators.
34
35 virtual NonLValue EvalMinus(ValueManager& ValMgr, UnaryOperator* U,
36 NonLValue X);
37
38 virtual NonLValue EvalComplement(ValueManager& ValMgr, NonLValue X);
Ted Kremenekd59cccc2008-02-14 18:28:23 +000039};
40
41
42} // end clang namespace
43
44#endif