mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-01 13:20:25 +00:00
97ba483026
Extend -fxray-instrumentation-bundle to split function-entry and function-exit into two separate options, so that it is possible to instrument only function entry or only function exit. For use cases that only care about one or the other this will save significant overhead and code size. Differential Revision: https://reviews.llvm.org/D72890
34 lines
1.2 KiB
C++
34 lines
1.2 KiB
C++
//===--- XRayInstr.cpp ------------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This is part of XRay, a function call instrumentation system.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "clang/Basic/XRayInstr.h"
|
|
#include "llvm/ADT/StringSwitch.h"
|
|
|
|
namespace clang {
|
|
|
|
XRayInstrMask parseXRayInstrValue(StringRef Value) {
|
|
XRayInstrMask ParsedKind =
|
|
llvm::StringSwitch<XRayInstrMask>(Value)
|
|
.Case("all", XRayInstrKind::All)
|
|
.Case("custom", XRayInstrKind::Custom)
|
|
.Case("function",
|
|
XRayInstrKind::FunctionEntry | XRayInstrKind::FunctionExit)
|
|
.Case("function-entry", XRayInstrKind::FunctionEntry)
|
|
.Case("function-exit", XRayInstrKind::FunctionExit)
|
|
.Case("typed", XRayInstrKind::Typed)
|
|
.Case("none", XRayInstrKind::None)
|
|
.Default(XRayInstrKind::None);
|
|
return ParsedKind;
|
|
}
|
|
|
|
} // namespace clang
|