1 //===--- XRayArgs.h - Arguments for XRay ------------------------*- 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 #ifndef LLVM_CLANG_DRIVER_XRAYARGS_H 10 #define LLVM_CLANG_DRIVER_XRAYARGS_H 11 12 #include "clang/Basic/XRayInstr.h" 13 #include "clang/Driver/Types.h" 14 #include "llvm/Option/Arg.h" 15 #include "llvm/Option/ArgList.h" 16 17 namespace clang { 18 namespace driver { 19 20 class ToolChain; 21 22 class XRayArgs { 23 std::vector<std::string> AlwaysInstrumentFiles; 24 std::vector<std::string> NeverInstrumentFiles; 25 std::vector<std::string> AttrListFiles; 26 std::vector<std::string> ExtraDeps; 27 std::vector<std::string> Modes; 28 XRayInstrSet InstrumentationBundle; 29 bool XRayInstrument = false; 30 int InstructionThreshold = 200; 31 bool XRayAlwaysEmitCustomEvents = false; 32 bool XRayAlwaysEmitTypedEvents = false; 33 bool XRayRT = true; 34 35 public: 36 /// Parses the XRay arguments from an argument list. 37 XRayArgs(const ToolChain &TC, const llvm::opt::ArgList &Args); 38 void addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args, 39 llvm::opt::ArgStringList &CmdArgs, types::ID InputType) const; 40 needsXRayRt()41 bool needsXRayRt() const { return XRayInstrument && XRayRT; } modeList()42 llvm::ArrayRef<std::string> modeList() const { return Modes; } instrumentationBundle()43 XRayInstrSet instrumentationBundle() const { return InstrumentationBundle; } 44 }; 45 46 } // namespace driver 47 } // namespace clang 48 49 #endif // LLVM_CLANG_DRIVER_XRAYARGS_H 50