Coverage Report

Created: 2018-07-12 09:57

/Users/buildslave/jenkins/workspace/clang-stage2-coverage-R/llvm/include/llvm/ADT/ScopeExit.h
Line
Count
Source (jump to first uncovered line)
1
//===- llvm/ADT/ScopeExit.h - Execute code at scope exit --------*- C++ -*-===//
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 defines the make_scope_exit function, which executes user-defined
11
// cleanup logic at scope exit.
12
//
13
//===----------------------------------------------------------------------===//
14
15
#ifndef LLVM_ADT_SCOPE_EXIT_H
16
#define LLVM_ADT_SCOPE_EXIT_H
17
18
#include "llvm/Support/Compiler.h"
19
20
#include <type_traits>
21
#include <utility>
22
23
namespace llvm {
24
namespace detail {
25
26
template <typename Callable> class scope_exit {
27
  Callable ExitFunction;
28
  bool Engaged = true; // False once moved-from or release()d.
29
30
public:
31
  template <typename Fp>
32
11.5M
  explicit scope_exit(Fp &&F) : ExitFunction(std::forward<Fp>(F)) {}
X86FlagsCopyLowering.cpp:llvm::detail::scope_exit<(anonymous namespace)::X86FlagsCopyLoweringPass::runOnMachineFunction(llvm::MachineFunction&)::$_1>::scope_exit<(anonymous namespace)::X86FlagsCopyLoweringPass::runOnMachineFunction(llvm::MachineFunction&)::$_1>((anonymous namespace)::X86FlagsCopyLoweringPass::runOnMachineFunction(llvm::MachineFunction&)::$_1&&)
Line
Count
Source
32
148
  explicit scope_exit(Fp &&F) : ExitFunction(std::forward<Fp>(F)) {}
LoopInfo.cpp:llvm::detail::scope_exit<llvm::LoopInfo::erase(llvm::Loop*)::$_3>::scope_exit<llvm::LoopInfo::erase(llvm::Loop*)::$_3>(llvm::LoopInfo::erase(llvm::Loop*)::$_3&&)
Line
Count
Source
32
26.7k
  explicit scope_exit(Fp &&F) : ExitFunction(std::forward<Fp>(F)) {}
ScalarEvolution.cpp:llvm::detail::scope_exit<llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value*, bool)::$_22>::scope_exit<llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value*, bool)::$_22>(llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value*, bool)::$_22&&)
Line
Count
Source
32
5.88M
  explicit scope_exit(Fp &&F) : ExitFunction(std::forward<Fp>(F)) {}
ScalarEvolution.cpp:llvm::detail::scope_exit<llvm::ScalarEvolution::isImpliedViaMerge(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, unsigned int)::$_23>::scope_exit<llvm::ScalarEvolution::isImpliedViaMerge(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, unsigned int)::$_23>(llvm::ScalarEvolution::isImpliedViaMerge(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, unsigned int)::$_23&&)
Line
Count
Source
32
2.65M
  explicit scope_exit(Fp &&F) : ExitFunction(std::forward<Fp>(F)) {}
IfConversion.cpp:llvm::detail::scope_exit<(anonymous namespace)::IfConverter::ValidForkedDiamond((anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&, unsigned int&, unsigned int&, (anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&) const::$_0>::scope_exit<(anonymous namespace)::IfConverter::ValidForkedDiamond((anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&, unsigned int&, unsigned int&, (anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&) const::$_0>((anonymous namespace)::IfConverter::ValidForkedDiamond((anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&, unsigned int&, unsigned int&, (anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&) const::$_0&&)
Line
Count
Source
32
42
  explicit scope_exit(Fp &&F) : ExitFunction(std::forward<Fp>(F)) {}
ResetMachineFunctionPass.cpp:llvm::detail::scope_exit<(anonymous namespace)::ResetMachineFunction::runOnMachineFunction(llvm::MachineFunction&)::'lambda'()>::scope_exit<(anonymous namespace)::ResetMachineFunction::runOnMachineFunction(llvm::MachineFunction&)::'lambda'()>((anonymous namespace)::ResetMachineFunction::runOnMachineFunction(llvm::MachineFunction&)::'lambda'()&&)
Line
Count
Source
32
232k
  explicit scope_exit(Fp &&F) : ExitFunction(std::forward<Fp>(F)) {}
LoopUtils.cpp:llvm::detail::scope_exit<llvm::formDedicatedExitBlocks(llvm::Loop*, llvm::DominatorTree*, llvm::LoopInfo*, bool)::$_0::operator()(llvm::BasicBlock*) const::'lambda'()>::scope_exit<llvm::formDedicatedExitBlocks(llvm::Loop*, llvm::DominatorTree*, llvm::LoopInfo*, bool)::$_0::operator()(llvm::BasicBlock*) const::'lambda'()>(llvm::formDedicatedExitBlocks(llvm::Loop*, llvm::DominatorTree*, llvm::LoopInfo*, bool)::$_0::operator()(llvm::BasicBlock*) const::'lambda'()&&)
Line
Count
Source
32
2.47M
  explicit scope_exit(Fp &&F) : ExitFunction(std::forward<Fp>(F)) {}
CGCoroutine.cpp:llvm::detail::scope_exit<emitSuspendExpression(clang::CodeGen::CodeGenFunction&, clang::CodeGen::CGCoroData&, clang::CoroutineSuspendExpr const&, (anonymous namespace)::AwaitKind, clang::CodeGen::AggValueSlot, bool, bool)::$_0>::scope_exit<emitSuspendExpression(clang::CodeGen::CodeGenFunction&, clang::CodeGen::CGCoroData&, clang::CoroutineSuspendExpr const&, (anonymous namespace)::AwaitKind, clang::CodeGen::AggValueSlot, bool, bool)::$_0>(emitSuspendExpression(clang::CodeGen::CodeGenFunction&, clang::CodeGen::CGCoroData&, clang::CoroutineSuspendExpr const&, (anonymous namespace)::AwaitKind, clang::CodeGen::AggValueSlot, bool, bool)::$_0&&)
Line
Count
Source
32
103
  explicit scope_exit(Fp &&F) : ExitFunction(std::forward<Fp>(F)) {}
IRTranslator.cpp:llvm::detail::scope_exit<llvm::IRTranslator::runOnMachineFunction(llvm::MachineFunction&)::$_2>::scope_exit<llvm::IRTranslator::runOnMachineFunction(llvm::MachineFunction&)::$_2>(llvm::IRTranslator::runOnMachineFunction(llvm::MachineFunction&)::$_2&&)
Line
Count
Source
32
233k
  explicit scope_exit(Fp &&F) : ExitFunction(std::forward<Fp>(F)) {}
ASTWriter.cpp:llvm::detail::scope_exit<clang::ASTWriter::WriteComments()::$_4>::scope_exit<clang::ASTWriter::WriteComments()::$_4>(clang::ASTWriter::WriteComments()::$_4&&)
Line
Count
Source
32
3.45k
  explicit scope_exit(Fp &&F) : ExitFunction(std::forward<Fp>(F)) {}
33
34
  scope_exit(scope_exit &&Rhs)
35
      : ExitFunction(std::move(Rhs.ExitFunction)), Engaged(Rhs.Engaged) {
36
    Rhs.release();
37
  }
38
  scope_exit(const scope_exit &) = delete;
39
  scope_exit &operator=(scope_exit &&) = delete;
40
  scope_exit &operator=(const scope_exit &) = delete;
41
42
0
  void release() { Engaged = false; }
Unexecuted instantiation: X86FlagsCopyLowering.cpp:llvm::detail::scope_exit<(anonymous namespace)::X86FlagsCopyLoweringPass::runOnMachineFunction(llvm::MachineFunction&)::$_1>::release()
Unexecuted instantiation: LoopInfo.cpp:llvm::detail::scope_exit<llvm::LoopInfo::erase(llvm::Loop*)::$_3>::release()
Unexecuted instantiation: ScalarEvolution.cpp:llvm::detail::scope_exit<llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value*, bool)::$_22>::release()
Unexecuted instantiation: ScalarEvolution.cpp:llvm::detail::scope_exit<llvm::ScalarEvolution::isImpliedViaMerge(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, unsigned int)::$_23>::release()
Unexecuted instantiation: IfConversion.cpp:llvm::detail::scope_exit<(anonymous namespace)::IfConverter::ValidForkedDiamond((anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&, unsigned int&, unsigned int&, (anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&) const::$_0>::release()
Unexecuted instantiation: ResetMachineFunctionPass.cpp:llvm::detail::scope_exit<(anonymous namespace)::ResetMachineFunction::runOnMachineFunction(llvm::MachineFunction&)::'lambda'()>::release()
Unexecuted instantiation: LoopUtils.cpp:llvm::detail::scope_exit<llvm::formDedicatedExitBlocks(llvm::Loop*, llvm::DominatorTree*, llvm::LoopInfo*, bool)::$_0::operator()(llvm::BasicBlock*) const::'lambda'()>::release()
Unexecuted instantiation: CGCoroutine.cpp:llvm::detail::scope_exit<emitSuspendExpression(clang::CodeGen::CodeGenFunction&, clang::CodeGen::CGCoroData&, clang::CoroutineSuspendExpr const&, (anonymous namespace)::AwaitKind, clang::CodeGen::AggValueSlot, bool, bool)::$_0>::release()
Unexecuted instantiation: IRTranslator.cpp:llvm::detail::scope_exit<llvm::IRTranslator::runOnMachineFunction(llvm::MachineFunction&)::$_2>::release()
Unexecuted instantiation: ASTWriter.cpp:llvm::detail::scope_exit<clang::ASTWriter::WriteComments()::$_4>::release()
43
44
11.5M
  ~scope_exit() {
45
11.5M
    if (Engaged)
46
11.5M
      ExitFunction();
47
11.5M
  }
X86FlagsCopyLowering.cpp:llvm::detail::scope_exit<(anonymous namespace)::X86FlagsCopyLoweringPass::runOnMachineFunction(llvm::MachineFunction&)::$_1>::~scope_exit()
Line
Count
Source
44
148
  ~scope_exit() {
45
148
    if (Engaged)
46
148
      ExitFunction();
47
148
  }
LoopInfo.cpp:llvm::detail::scope_exit<llvm::LoopInfo::erase(llvm::Loop*)::$_3>::~scope_exit()
Line
Count
Source
44
26.7k
  ~scope_exit() {
45
26.7k
    if (Engaged)
46
26.7k
      ExitFunction();
47
26.7k
  }
ScalarEvolution.cpp:llvm::detail::scope_exit<llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value*, bool)::$_22>::~scope_exit()
Line
Count
Source
44
5.88M
  ~scope_exit() {
45
5.88M
    if (Engaged)
46
5.88M
      ExitFunction();
47
5.88M
  }
ScalarEvolution.cpp:llvm::detail::scope_exit<llvm::ScalarEvolution::isImpliedViaMerge(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, unsigned int)::$_23>::~scope_exit()
Line
Count
Source
44
2.65M
  ~scope_exit() {
45
2.65M
    if (Engaged)
46
2.65M
      ExitFunction();
47
2.65M
  }
IfConversion.cpp:llvm::detail::scope_exit<(anonymous namespace)::IfConverter::ValidForkedDiamond((anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&, unsigned int&, unsigned int&, (anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&) const::$_0>::~scope_exit()
Line
Count
Source
44
42
  ~scope_exit() {
45
42
    if (Engaged)
46
42
      ExitFunction();
47
42
  }
ResetMachineFunctionPass.cpp:llvm::detail::scope_exit<(anonymous namespace)::ResetMachineFunction::runOnMachineFunction(llvm::MachineFunction&)::'lambda'()>::~scope_exit()
Line
Count
Source
44
232k
  ~scope_exit() {
45
232k
    if (Engaged)
46
232k
      ExitFunction();
47
232k
  }
LoopUtils.cpp:llvm::detail::scope_exit<llvm::formDedicatedExitBlocks(llvm::Loop*, llvm::DominatorTree*, llvm::LoopInfo*, bool)::$_0::operator()(llvm::BasicBlock*) const::'lambda'()>::~scope_exit()
Line
Count
Source
44
2.47M
  ~scope_exit() {
45
2.47M
    if (Engaged)
46
2.47M
      ExitFunction();
47
2.47M
  }
CGCoroutine.cpp:llvm::detail::scope_exit<emitSuspendExpression(clang::CodeGen::CodeGenFunction&, clang::CodeGen::CGCoroData&, clang::CoroutineSuspendExpr const&, (anonymous namespace)::AwaitKind, clang::CodeGen::AggValueSlot, bool, bool)::$_0>::~scope_exit()
Line
Count
Source
44
103
  ~scope_exit() {
45
103
    if (Engaged)
46
103
      ExitFunction();
47
103
  }
IRTranslator.cpp:llvm::detail::scope_exit<llvm::IRTranslator::runOnMachineFunction(llvm::MachineFunction&)::$_2>::~scope_exit()
Line
Count
Source
44
233k
  ~scope_exit() {
45
233k
    if (Engaged)
46
233k
      ExitFunction();
47
233k
  }
ASTWriter.cpp:llvm::detail::scope_exit<clang::ASTWriter::WriteComments()::$_4>::~scope_exit()
Line
Count
Source
44
3.45k
  ~scope_exit() {
45
3.45k
    if (Engaged)
46
3.45k
      ExitFunction();
47
3.45k
  }
48
};
49
50
} // end namespace detail
51
52
// Keeps the callable object that is passed in, and execute it at the
53
// destruction of the returned object (usually at the scope exit where the
54
// returned object is kept).
55
//
56
// Interface is specified by p0052r2.
57
template <typename Callable>
58
LLVM_NODISCARD detail::scope_exit<typename std::decay<Callable>::type>
59
11.5M
make_scope_exit(Callable &&F) {
60
11.5M
  return detail::scope_exit<typename std::decay<Callable>::type>(
61
11.5M
      std::forward<Callable>(F));
62
11.5M
}
X86FlagsCopyLowering.cpp:llvm::detail::scope_exit<std::__1::decay<(anonymous namespace)::X86FlagsCopyLoweringPass::runOnMachineFunction(llvm::MachineFunction&)::$_1>::type> llvm::make_scope_exit<(anonymous namespace)::X86FlagsCopyLoweringPass::runOnMachineFunction(llvm::MachineFunction&)::$_1>((anonymous namespace)::X86FlagsCopyLoweringPass::runOnMachineFunction(llvm::MachineFunction&)::$_1&&)
Line
Count
Source
59
148
make_scope_exit(Callable &&F) {
60
148
  return detail::scope_exit<typename std::decay<Callable>::type>(
61
148
      std::forward<Callable>(F));
62
148
}
LoopInfo.cpp:llvm::detail::scope_exit<std::__1::decay<llvm::LoopInfo::erase(llvm::Loop*)::$_3>::type> llvm::make_scope_exit<llvm::LoopInfo::erase(llvm::Loop*)::$_3>(llvm::LoopInfo::erase(llvm::Loop*)::$_3&&)
Line
Count
Source
59
26.7k
make_scope_exit(Callable &&F) {
60
26.7k
  return detail::scope_exit<typename std::decay<Callable>::type>(
61
26.7k
      std::forward<Callable>(F));
62
26.7k
}
ScalarEvolution.cpp:llvm::detail::scope_exit<std::__1::decay<llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value*, bool)::$_22>::type> llvm::make_scope_exit<llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value*, bool)::$_22>(llvm::ScalarEvolution::isImpliedCond(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::Value*, bool)::$_22&&)
Line
Count
Source
59
5.88M
make_scope_exit(Callable &&F) {
60
5.88M
  return detail::scope_exit<typename std::decay<Callable>::type>(
61
5.88M
      std::forward<Callable>(F));
62
5.88M
}
ScalarEvolution.cpp:llvm::detail::scope_exit<std::__1::decay<llvm::ScalarEvolution::isImpliedViaMerge(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, unsigned int)::$_23>::type> llvm::make_scope_exit<llvm::ScalarEvolution::isImpliedViaMerge(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, unsigned int)::$_23>(llvm::ScalarEvolution::isImpliedViaMerge(llvm::CmpInst::Predicate, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, llvm::SCEV const*, unsigned int)::$_23&&)
Line
Count
Source
59
2.65M
make_scope_exit(Callable &&F) {
60
2.65M
  return detail::scope_exit<typename std::decay<Callable>::type>(
61
2.65M
      std::forward<Callable>(F));
62
2.65M
}
IfConversion.cpp:llvm::detail::scope_exit<std::__1::decay<(anonymous namespace)::IfConverter::ValidForkedDiamond((anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&, unsigned int&, unsigned int&, (anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&) const::$_0>::type> llvm::make_scope_exit<(anonymous namespace)::IfConverter::ValidForkedDiamond((anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&, unsigned int&, unsigned int&, (anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&) const::$_0>((anonymous namespace)::IfConverter::ValidForkedDiamond((anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&, unsigned int&, unsigned int&, (anonymous namespace)::IfConverter::BBInfo&, (anonymous namespace)::IfConverter::BBInfo&) const::$_0&&)
Line
Count
Source
59
42
make_scope_exit(Callable &&F) {
60
42
  return detail::scope_exit<typename std::decay<Callable>::type>(
61
42
      std::forward<Callable>(F));
62
42
}
ResetMachineFunctionPass.cpp:llvm::detail::scope_exit<std::__1::decay<(anonymous namespace)::ResetMachineFunction::runOnMachineFunction(llvm::MachineFunction&)::'lambda'()>::type> llvm::make_scope_exit<(anonymous namespace)::ResetMachineFunction::runOnMachineFunction(llvm::MachineFunction&)::'lambda'()>((anonymous namespace)::ResetMachineFunction::runOnMachineFunction(llvm::MachineFunction&)::'lambda'()&&)
Line
Count
Source
59
232k
make_scope_exit(Callable &&F) {
60
232k
  return detail::scope_exit<typename std::decay<Callable>::type>(
61
232k
      std::forward<Callable>(F));
62
232k
}
LoopUtils.cpp:llvm::detail::scope_exit<std::__1::decay<llvm::formDedicatedExitBlocks(llvm::Loop*, llvm::DominatorTree*, llvm::LoopInfo*, bool)::$_0::operator()(llvm::BasicBlock*) const::'lambda'()>::type> llvm::make_scope_exit<llvm::formDedicatedExitBlocks(llvm::Loop*, llvm::DominatorTree*, llvm::LoopInfo*, bool)::$_0::operator()(llvm::BasicBlock*) const::'lambda'()>(llvm::formDedicatedExitBlocks(llvm::Loop*, llvm::DominatorTree*, llvm::LoopInfo*, bool)::$_0::operator()(llvm::BasicBlock*) const::'lambda'()&&)
Line
Count
Source
59
2.47M
make_scope_exit(Callable &&F) {
60
2.47M
  return detail::scope_exit<typename std::decay<Callable>::type>(
61
2.47M
      std::forward<Callable>(F));
62
2.47M
}
CGCoroutine.cpp:llvm::detail::scope_exit<std::__1::decay<emitSuspendExpression(clang::CodeGen::CodeGenFunction&, clang::CodeGen::CGCoroData&, clang::CoroutineSuspendExpr const&, (anonymous namespace)::AwaitKind, clang::CodeGen::AggValueSlot, bool, bool)::$_0>::type> llvm::make_scope_exit<emitSuspendExpression(clang::CodeGen::CodeGenFunction&, clang::CodeGen::CGCoroData&, clang::CoroutineSuspendExpr const&, (anonymous namespace)::AwaitKind, clang::CodeGen::AggValueSlot, bool, bool)::$_0>(emitSuspendExpression(clang::CodeGen::CodeGenFunction&, clang::CodeGen::CGCoroData&, clang::CoroutineSuspendExpr const&, (anonymous namespace)::AwaitKind, clang::CodeGen::AggValueSlot, bool, bool)::$_0&&)
Line
Count
Source
59
103
make_scope_exit(Callable &&F) {
60
103
  return detail::scope_exit<typename std::decay<Callable>::type>(
61
103
      std::forward<Callable>(F));
62
103
}
IRTranslator.cpp:llvm::detail::scope_exit<std::__1::decay<llvm::IRTranslator::runOnMachineFunction(llvm::MachineFunction&)::$_2>::type> llvm::make_scope_exit<llvm::IRTranslator::runOnMachineFunction(llvm::MachineFunction&)::$_2>(llvm::IRTranslator::runOnMachineFunction(llvm::MachineFunction&)::$_2&&)
Line
Count
Source
59
233k
make_scope_exit(Callable &&F) {
60
233k
  return detail::scope_exit<typename std::decay<Callable>::type>(
61
233k
      std::forward<Callable>(F));
62
233k
}
ASTWriter.cpp:llvm::detail::scope_exit<std::__1::decay<clang::ASTWriter::WriteComments()::$_4>::type> llvm::make_scope_exit<clang::ASTWriter::WriteComments()::$_4>(clang::ASTWriter::WriteComments()::$_4&&)
Line
Count
Source
59
3.45k
make_scope_exit(Callable &&F) {
60
3.45k
  return detail::scope_exit<typename std::decay<Callable>::type>(
61
3.45k
      std::forward<Callable>(F));
62
3.45k
}
63
64
} // end namespace llvm
65
66
#endif