xref: /freebsd-src/contrib/llvm-project/clang/include/clang/Analysis/FlowSensitive/DataflowLattice.h (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
14824e7fdSDimitry Andric //===- DataflowLattice.h ----------------------------------------*- C++ -*-===//
24824e7fdSDimitry Andric //
34824e7fdSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
44824e7fdSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
54824e7fdSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
64824e7fdSDimitry Andric //
74824e7fdSDimitry Andric //===----------------------------------------------------------------------===//
84824e7fdSDimitry Andric //
94824e7fdSDimitry Andric //  This file defines base types for building lattices to be used in dataflow
104824e7fdSDimitry Andric //  analyses that run over Control-Flow Graphs (CFGs).
114824e7fdSDimitry Andric //
124824e7fdSDimitry Andric //===----------------------------------------------------------------------===//
134824e7fdSDimitry Andric 
144824e7fdSDimitry Andric #ifndef LLVM_CLANG_ANALYSIS_FLOWSENSITIVE_DATAFLOWLATTICE_H
154824e7fdSDimitry Andric #define LLVM_CLANG_ANALYSIS_FLOWSENSITIVE_DATAFLOWLATTICE_H
164824e7fdSDimitry Andric 
174824e7fdSDimitry Andric namespace clang {
184824e7fdSDimitry Andric namespace dataflow {
194824e7fdSDimitry Andric 
20*0fca6ea1SDimitry Andric /// Effect indicating whether a lattice operation resulted in a new value.
21*0fca6ea1SDimitry Andric enum class LatticeEffect {
224824e7fdSDimitry Andric   Unchanged,
234824e7fdSDimitry Andric   Changed,
244824e7fdSDimitry Andric };
25*0fca6ea1SDimitry Andric // DEPRECATED. Use `LatticeEffect`.
26*0fca6ea1SDimitry Andric using LatticeJoinEffect = LatticeEffect;
274824e7fdSDimitry Andric 
284824e7fdSDimitry Andric } // namespace dataflow
294824e7fdSDimitry Andric } // namespace clang
304824e7fdSDimitry Andric 
314824e7fdSDimitry Andric #endif // LLVM_CLANG_ANALYSIS_FLOWSENSITIVE_DATAFLOWLATTICE_H
32