clang  10.0.0svn
CleanupInfo.h
Go to the documentation of this file.
1 //===--- CleanupInfo.cpp - Cleanup Control in Sema ------------------------===//
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 implements a set of operations on whether generating an
10 // ExprWithCleanups in a full expression.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_CLANG_SEMA_CLEANUP_INFO_H
15 #define LLVM_CLANG_SEMA_CLEANUP_INFO_H
16 
17 namespace clang {
18 
19 class CleanupInfo {
20  bool ExprNeedsCleanups = false;
21  bool CleanupsHaveSideEffects = false;
22 
23 public:
24  bool exprNeedsCleanups() const { return ExprNeedsCleanups; }
25 
26  bool cleanupsHaveSideEffects() const { return CleanupsHaveSideEffects; }
27 
28  void setExprNeedsCleanups(bool SideEffects) {
29  ExprNeedsCleanups = true;
30  CleanupsHaveSideEffects |= SideEffects;
31  }
32 
33  void reset() {
34  ExprNeedsCleanups = false;
35  CleanupsHaveSideEffects = false;
36  }
37 
38  void mergeFrom(CleanupInfo Rhs) {
39  ExprNeedsCleanups |= Rhs.ExprNeedsCleanups;
40  CleanupsHaveSideEffects |= Rhs.CleanupsHaveSideEffects;
41  }
42 };
43 
44 } // end namespace clang
45 
46 #endif
void mergeFrom(CleanupInfo Rhs)
Definition: CleanupInfo.h:38
Dataflow Directional Tag Classes.
bool exprNeedsCleanups() const
Definition: CleanupInfo.h:24
bool cleanupsHaveSideEffects() const
Definition: CleanupInfo.h:26
void setExprNeedsCleanups(bool SideEffects)
Definition: CleanupInfo.h:28