Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:37:08

0001 //===--- LoopWidening.h - Widen loops ---------------------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 /// \file
0009 /// This header contains the declarations of functions which are used to widen
0010 /// loops which do not otherwise exit. The widening is done by invalidating
0011 /// anything which might be modified by the body of the loop.
0012 ///
0013 //===----------------------------------------------------------------------===//
0014 
0015 #ifndef LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_LOOPWIDENING_H
0016 #define LLVM_CLANG_STATICANALYZER_CORE_PATHSENSITIVE_LOOPWIDENING_H
0017 
0018 #include "clang/Analysis/CFG.h"
0019 #include "clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h"
0020 
0021 namespace clang {
0022 namespace ento {
0023 
0024 /// Get the states that result from widening the loop.
0025 ///
0026 /// Widen the loop by invalidating anything that might be modified
0027 /// by the loop body in any iteration.
0028 ProgramStateRef getWidenedLoopState(ProgramStateRef PrevState,
0029                                     const LocationContext *LCtx,
0030                                     unsigned BlockCount, const Stmt *LoopStmt);
0031 
0032 } // end namespace ento
0033 } // end namespace clang
0034 
0035 #endif