LoopWidening.h revision 292942
189051Sjake//===--- LoopWidening.h - Widen loops ---------------------------*- C++ -*-===// 289051Sjake// 389051Sjake// The LLVM Compiler Infrastructure 489051Sjake// 589051Sjake// This file is distributed under the University of Illinois Open Source 689051Sjake// License. See LICENSE.TXT for details. 789051Sjake// 889051Sjake//===----------------------------------------------------------------------===// 989051Sjake/// 1089051Sjake/// This header contains the declarations of functions which are used to widen 1189051Sjake/// loops which do not otherwise exit. The widening is done by invalidating 1289051Sjake/// anything which might be modified by the body of the loop. 1389051Sjake/// 1489051Sjake//===----------------------------------------------------------------------===// 1589051Sjake 1689051Sjake#ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_LOOPWIDENING_H 1789051Sjake#define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_LOOPWIDENING_H 1889051Sjake 1989051Sjake#include "clang/Analysis/CFG.h" 2089051Sjake#include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h" 2189051Sjake 2289051Sjakenamespace clang { 2389051Sjakenamespace ento { 2489051Sjake 2589051Sjake/// \brief Get the states that result from widening the loop. 2689051Sjake/// 27114188Sjake/// Widen the loop by invalidating anything that might be modified 28114188Sjake/// by the loop body in any iteration. 29114188SjakeProgramStateRef getWidenedLoopState(ProgramStateRef PrevState, 3089051Sjake const LocationContext *LCtx, 31166105Smarius unsigned BlockCount, const Stmt *LoopStmt); 32166105Smarius 3389051Sjake} // end namespace ento 3489051Sjake} // end namespace clang 3589051Sjake 3689051Sjake#endif 3789051Sjake