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 join(const NoopLattice & Other)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 42