clang  6.0.0svn
CleanupInfo.h
Go to the documentation of this file.
1 //===--- CleanupInfo.cpp - Cleanup Control in Sema ------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file implements a set of operations on whether generating an
11 // ExprWithCleanups in a full expression.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_CLANG_SEMA_CLEANUP_INFO_H
16 #define LLVM_CLANG_SEMA_CLEANUP_INFO_H
17 
18 namespace clang {
19 
20 class CleanupInfo {
21  bool ExprNeedsCleanups = false;
22  bool CleanupsHaveSideEffects = false;
23 
24 public:
25  bool exprNeedsCleanups() const { return ExprNeedsCleanups; }
26 
27  bool cleanupsHaveSideEffects() const { return CleanupsHaveSideEffects; }
28 
29  void setExprNeedsCleanups(bool SideEffects) {
30  ExprNeedsCleanups = true;
31  CleanupsHaveSideEffects |= SideEffects;
32  }
33 
34  void reset() {
35  ExprNeedsCleanups = false;
36  CleanupsHaveSideEffects = false;
37  }
38 
39  void mergeFrom(CleanupInfo Rhs) {
40  ExprNeedsCleanups |= Rhs.ExprNeedsCleanups;
41  CleanupsHaveSideEffects |= Rhs.CleanupsHaveSideEffects;
42  }
43 };
44 
45 } // end namespace clang
46 
47 #endif
void mergeFrom(CleanupInfo Rhs)
Definition: CleanupInfo.h:39
Dataflow Directional Tag Classes.
bool exprNeedsCleanups() const
Definition: CleanupInfo.h:25
bool cleanupsHaveSideEffects() const
Definition: CleanupInfo.h:27
void setExprNeedsCleanups(bool SideEffects)
Definition: CleanupInfo.h:29