Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:36:53

0001 //===--- XRayArgs.h - Arguments for XRay ------------------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 #ifndef LLVM_CLANG_DRIVER_XRAYARGS_H
0009 #define LLVM_CLANG_DRIVER_XRAYARGS_H
0010 
0011 #include "clang/Basic/XRayInstr.h"
0012 #include "clang/Driver/Types.h"
0013 #include "llvm/Option/Arg.h"
0014 #include "llvm/Option/ArgList.h"
0015 
0016 namespace clang {
0017 namespace driver {
0018 
0019 class ToolChain;
0020 
0021 class XRayArgs {
0022   std::vector<std::string> AlwaysInstrumentFiles;
0023   std::vector<std::string> NeverInstrumentFiles;
0024   std::vector<std::string> AttrListFiles;
0025   std::vector<std::string> ExtraDeps;
0026   std::vector<std::string> Modes;
0027   XRayInstrSet InstrumentationBundle;
0028   llvm::opt::Arg *XRayInstrument = nullptr;
0029   bool XRayRT = true;
0030   bool XRayShared = false;
0031 
0032 public:
0033   /// Parses the XRay arguments from an argument list.
0034   XRayArgs(const ToolChain &TC, const llvm::opt::ArgList &Args);
0035   void addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args,
0036                llvm::opt::ArgStringList &CmdArgs, types::ID InputType) const;
0037 
0038   bool needsXRayRt() const { return XRayInstrument && XRayRT; }
0039   bool needsXRayDSORt() const { return XRayInstrument && XRayRT && XRayShared; }
0040   llvm::ArrayRef<std::string> modeList() const { return Modes; }
0041   XRayInstrSet instrumentationBundle() const { return InstrumentationBundle; }
0042 };
0043 
0044 } // namespace driver
0045 } // namespace clang
0046 
0047 #endif // LLVM_CLANG_DRIVER_XRAYARGS_H