import of clang from LLVM-16.0.6
[openbsd] / gnu / llvm / clang / include / clang / Analysis / FlowSensitive / NoopLattice.h
1 //===-- NoopLattice.h -------------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 //  This file defines the lattice with exactly one element.
10 //
11 //===----------------------------------------------------------------------===//
12
13 #ifndef LLVM_CLANG_ANALYSIS_FLOWSENSITIVE_NOOP_LATTICE_H
14 #define LLVM_CLANG_ANALYSIS_FLOWSENSITIVE_NOOP_LATTICE_H
15
16 #include "clang/Analysis/FlowSensitive/DataflowLattice.h"
17 #include <ostream>
18
19 namespace clang {
20 namespace dataflow {
21
22 /// Trivial lattice for dataflow analysis with exactly one element.
23 ///
24 /// Useful for analyses that only need the Environment and nothing more.
25 class NoopLattice {
26 public:
27   bool operator==(const NoopLattice &Other) const { return true; }
28
29   LatticeJoinEffect join(const NoopLattice &Other) {
30     return LatticeJoinEffect::Unchanged;
31   }
32 };
33
34 inline std::ostream &operator<<(std::ostream &OS, const NoopLattice &) {
35   return OS << "noop";
36 }
37
38 } // namespace dataflow
39 } // namespace clang
40
41 #endif // LLVM_CLANG_ANALYSIS_FLOWSENSITIVE_NOOP_LATTICE_H