1226586Sdim//==- ProgramPoint.cpp - Program Points for Path-Sensitive Analysis -*- C++ -*-/ 2226586Sdim// 3226586Sdim// The LLVM Compiler Infrastructure 4226586Sdim// 5226586Sdim// This file is distributed under the University of Illinois Open Source 6226586Sdim// License. See LICENSE.TXT for details. 7226586Sdim// 8226586Sdim//===----------------------------------------------------------------------===// 9226586Sdim// 10226586Sdim// This file defines the interface ProgramPoint, which identifies a 11226586Sdim// distinct location in a function. 12226586Sdim// 13226586Sdim//===----------------------------------------------------------------------===// 14226586Sdim 15226586Sdim#include "clang/Analysis/ProgramPoint.h" 16226586Sdim 17226586Sdimusing namespace clang; 18226586Sdim 19226586SdimProgramPointTag::~ProgramPointTag() {} 20226586Sdim 21226586SdimProgramPoint ProgramPoint::getProgramPoint(const Stmt *S, ProgramPoint::Kind K, 22226586Sdim const LocationContext *LC, 23226586Sdim const ProgramPointTag *tag){ 24226586Sdim switch (K) { 25226586Sdim default: 26226586Sdim llvm_unreachable("Unhandled ProgramPoint kind"); 27226586Sdim case ProgramPoint::PreStmtKind: 28226586Sdim return PreStmt(S, LC, tag); 29226586Sdim case ProgramPoint::PostStmtKind: 30226586Sdim return PostStmt(S, LC, tag); 31226586Sdim case ProgramPoint::PreLoadKind: 32226586Sdim return PreLoad(S, LC, tag); 33226586Sdim case ProgramPoint::PostLoadKind: 34226586Sdim return PostLoad(S, LC, tag); 35226586Sdim case ProgramPoint::PreStoreKind: 36226586Sdim return PreStore(S, LC, tag); 37226586Sdim case ProgramPoint::PostLValueKind: 38226586Sdim return PostLValue(S, LC, tag); 39239462Sdim case ProgramPoint::PostStmtPurgeDeadSymbolsKind: 40239462Sdim return PostStmtPurgeDeadSymbols(S, LC, tag); 41239462Sdim case ProgramPoint::PreStmtPurgeDeadSymbolsKind: 42239462Sdim return PreStmtPurgeDeadSymbols(S, LC, tag); 43226586Sdim } 44226586Sdim} 45226586Sdim 46226586SdimSimpleProgramPointTag::SimpleProgramPointTag(StringRef description) 47226586Sdim : desc(description) {} 48226586Sdim 49226586SdimStringRef SimpleProgramPointTag::getTagDescription() const { 50226586Sdim return desc; 51226586Sdim} 52