blob: 29d6216b717633f99a7bc6d9a3dfe7bfe6a6473b [file] [log] [blame]
Ted Kremenekd59cccc2008-02-14 18:28:23 +00001//== GRTransferFuncs.cpp - Path-Sens. Transfer Functions Interface -*- 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 GRTransferFuncs, which provides a base-class that
11// defines an interface for transfer functions used by GRExprEngine.
12//
13//===----------------------------------------------------------------------===//
14
15#include "clang/Analysis/PathSensitive/GRTransferFuncs.h"
16
17using namespace clang;
18
19//===----------------------------------------------------------------------===//
20// Transfer function for Casts.
21//===----------------------------------------------------------------------===//
22
Ted Kremenekaa1c4e52008-02-21 18:02:17 +000023RVal GRTransferFuncs::EvalCast(ValueManager& ValMgr, RVal X, Expr* CastExpr) {
Ted Kremenekd59cccc2008-02-14 18:28:23 +000024
25 switch (X.getBaseKind()) {
Ted Kremenekaa1c4e52008-02-21 18:02:17 +000026
Ted Kremenekd59cccc2008-02-14 18:28:23 +000027 default:
Ted Kremenekaa1c4e52008-02-21 18:02:17 +000028 assert(false && "Invalid RVal."); break;
Ted Kremenekd59cccc2008-02-14 18:28:23 +000029
Ted Kremenekaa1c4e52008-02-21 18:02:17 +000030 case RVal::LValKind:
31 return EvalCast(ValMgr, cast<LVal>(X), CastExpr);
Ted Kremenekd59cccc2008-02-14 18:28:23 +000032
Ted Kremenekaa1c4e52008-02-21 18:02:17 +000033 case RVal::NonLValKind:
34 return EvalCast(ValMgr, cast<NonLVal>(X), CastExpr);
Ted Kremenekd59cccc2008-02-14 18:28:23 +000035
Ted Kremenekaa1c4e52008-02-21 18:02:17 +000036 case RVal::UninitializedKind:
37 case RVal::UnknownKind: break;
Ted Kremenekd59cccc2008-02-14 18:28:23 +000038 }
39
40 return X;
41}