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_CLEANUPINFO_H 15 #define LLVM_CLANG_SEMA_CLEANUPINFO_H 16 17 namespace clang { 18 19 class CleanupInfo { 20 bool ExprNeedsCleanups = false; 21 bool CleanupsHaveSideEffects = false; 22 23 public: exprNeedsCleanups()24 bool exprNeedsCleanups() const { return ExprNeedsCleanups; } 25 cleanupsHaveSideEffects()26 bool cleanupsHaveSideEffects() const { return CleanupsHaveSideEffects; } 27 setExprNeedsCleanups(bool SideEffects)28 void setExprNeedsCleanups(bool SideEffects) { 29 ExprNeedsCleanups = true; 30 CleanupsHaveSideEffects |= SideEffects; 31 } 32 reset()33 void reset() { 34 ExprNeedsCleanups = false; 35 CleanupsHaveSideEffects = false; 36 } 37 mergeFrom(CleanupInfo Rhs)38 void mergeFrom(CleanupInfo Rhs) { 39 ExprNeedsCleanups |= Rhs.ExprNeedsCleanups; 40 CleanupsHaveSideEffects |= Rhs.CleanupsHaveSideEffects; 41 } 42 }; 43 44 } // end namespace clang 45 46 #endif 47