brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.2 KiB · 24b499c Raw
36 lines · cpp
1//===--- StackExhaustionHandler.cpp -  - A utility for warning once when close2// to out of stack space -------*- C++ -*-===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9///10/// \file11/// Defines a utilitiy for warning once when close to out of stack space.12///13//===----------------------------------------------------------------------===//14 15#include "clang/Basic/StackExhaustionHandler.h"16#include "clang/Basic/Stack.h"17 18void clang::StackExhaustionHandler::runWithSufficientStackSpace(19    SourceLocation Loc, llvm::function_ref<void()> Fn) {20  clang::runWithSufficientStackSpace([&] { warnStackExhausted(Loc); }, Fn);21}22 23void clang::StackExhaustionHandler::warnOnStackNearlyExhausted(24    SourceLocation Loc) {25  if (isStackNearlyExhausted())26    warnStackExhausted(Loc);27}28 29void clang::StackExhaustionHandler::warnStackExhausted(SourceLocation Loc) {30  // Only warn about this once.31  if (!WarnedStackExhausted) {32    DiagsRef.Report(Loc, diag::warn_stack_exhausted);33    WarnedStackExhausted = true;34  }35}36