LoopWidening.h revision 292920
1//===--- LoopWidening.h - Widen loops ---------------------------*- 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 header contains the declarations of functions which are used to widen 11/// loops which do not otherwise exit. The widening is done by invalidating 12/// anything which might be modified by the body of the loop. 13/// 14//===----------------------------------------------------------------------===// 15 16#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_LOOPWIDENING_H 17#define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_LOOPWIDENING_H 18 19#include "clang/Analysis/CFG.h" 20#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h" 21 22namespace clang { 23namespace ento { 24 25/// \brief Get the states that result from widening the loop. 26/// 27/// Widen the loop by invalidating anything that might be modified 28/// by the loop body in any iteration. 29ProgramStateRef getWidenedLoopState(ProgramStateRef PrevState, 30 const LocationContext *LCtx, 31 unsigned BlockCount, const Stmt *LoopStmt); 32 33} // end namespace ento 34} // end namespace clang 35 36#endif 37