Summary: This change addresses http://llvm.org/PR36926 by allowing users to pick which instrumentation bundles to use, when instrumenting with XRay. In particular, the flag `-fxray-instrumentation-bundle=` has four valid values: - `all`: the default, emits all instrumentation kinds - `none`: equivalent to -fnoxray-instrument - `function`: emits the entry/exit instrumentation - `custom`: emits the custom event instrumentation These can be combined either as comma-separated values, or as repeated flag values. Reviewers: echristo, kpw, eizan, pelikan Reviewed By: pelikan Subscribers: mgorny, cfe-commits Differential Revision: https://reviews.llvm.org/D44970 llvm-svn: 329985
30 lines
1.1 KiB
C++
30 lines
1.1 KiB
C++
//===--- XRayInstr.cpp ------------------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// 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::Function)
|
|
.Case("none", XRayInstrKind::None)
|
|
.Default(XRayInstrKind::None);
|
|
return ParsedKind;
|
|
}
|
|
|
|
} // namespace clang
|