]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/include/clang/Sema/CleanupInfo.h
Update clang to release_39 branch r276489, and resolve conflicts.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / clang / include / clang / Sema / CleanupInfo.h
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