003 File Manager
Current Path:
/usr/src/contrib/llvm-project/clang/lib/Basic
usr
/
src
/
contrib
/
llvm-project
/
clang
/
lib
/
Basic
/
📁
..
📄
Attributes.cpp
(4.35 KB)
📄
Builtins.cpp
(7.39 KB)
📄
CharInfo.cpp
(4.03 KB)
📄
CodeGenOptions.cpp
(997 B)
📄
Cuda.cpp
(5.85 KB)
📄
Diagnostic.cpp
(41.13 KB)
📄
DiagnosticIDs.cpp
(25.94 KB)
📄
DiagnosticOptions.cpp
(837 B)
📄
ExpressionTraits.cpp
(1.21 KB)
📄
FileManager.cpp
(21.8 KB)
📄
FileSystemStatCache.cpp
(4.45 KB)
📄
FixedPoint.cpp
(13.51 KB)
📄
IdentifierTable.cpp
(23.6 KB)
📄
LangOptions.cpp
(2.36 KB)
📄
LangStandards.cpp
(1.56 KB)
📄
Module.cpp
(20.64 KB)
📄
ObjCRuntime.cpp
(3 KB)
📄
OpenMPKinds.cpp
(25.62 KB)
📄
OperatorPrecedence.cpp
(2.77 KB)
📄
SanitizerBlacklist.cpp
(2.35 KB)
📄
SanitizerSpecialCaseList.cpp
(2.22 KB)
📄
Sanitizers.cpp
(2.07 KB)
📄
SourceLocation.cpp
(7.15 KB)
📄
SourceManager.cpp
(85.48 KB)
📄
Stack.cpp
(2.41 KB)
📄
TargetInfo.cpp
(27.2 KB)
📁
Targets
📄
Targets.cpp
(24.48 KB)
📄
Targets.h
(1.73 KB)
📄
TokenKinds.cpp
(1.69 KB)
📄
TypeTraits.cpp
(2.85 KB)
📄
Version.cpp
(2.86 KB)
📄
Warnings.cpp
(8.62 KB)
📄
XRayInstr.cpp
(1.21 KB)
📄
XRayLists.cpp
(3.31 KB)
Editing: XRayLists.cpp
//===-- XRayLists.cpp - XRay automatic-attribution ------------------------===// // // 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 // //===----------------------------------------------------------------------===// // // User-provided filters for always/never XRay instrumenting certain functions. // //===----------------------------------------------------------------------===// #include "clang/Basic/XRayLists.h" #include "clang/Basic/FileManager.h" #include "clang/Basic/SourceManager.h" #include "llvm/Support/SpecialCaseList.h" using namespace clang; XRayFunctionFilter::XRayFunctionFilter( ArrayRef<std::string> AlwaysInstrumentPaths, ArrayRef<std::string> NeverInstrumentPaths, ArrayRef<std::string> AttrListPaths, SourceManager &SM) : AlwaysInstrument(llvm::SpecialCaseList::createOrDie( AlwaysInstrumentPaths, SM.getFileManager().getVirtualFileSystem())), NeverInstrument(llvm::SpecialCaseList::createOrDie( NeverInstrumentPaths, SM.getFileManager().getVirtualFileSystem())), AttrList(llvm::SpecialCaseList::createOrDie( AttrListPaths, SM.getFileManager().getVirtualFileSystem())), SM(SM) {} XRayFunctionFilter::~XRayFunctionFilter() = default; XRayFunctionFilter::ImbueAttribute XRayFunctionFilter::shouldImbueFunction(StringRef FunctionName) const { // First apply the always instrument list, than if it isn't an "always" see // whether it's treated as a "never" instrument function. // TODO: Remove these as they're deprecated; use the AttrList exclusively. if (AlwaysInstrument->inSection("xray_always_instrument", "fun", FunctionName, "arg1") || AttrList->inSection("always", "fun", FunctionName, "arg1")) return ImbueAttribute::ALWAYS_ARG1; if (AlwaysInstrument->inSection("xray_always_instrument", "fun", FunctionName) || AttrList->inSection("always", "fun", FunctionName)) return ImbueAttribute::ALWAYS; if (NeverInstrument->inSection("xray_never_instrument", "fun", FunctionName) || AttrList->inSection("never", "fun", FunctionName)) return ImbueAttribute::NEVER; return ImbueAttribute::NONE; } XRayFunctionFilter::ImbueAttribute XRayFunctionFilter::shouldImbueFunctionsInFile(StringRef Filename, StringRef Category) const { if (AlwaysInstrument->inSection("xray_always_instrument", "src", Filename, Category) || AttrList->inSection("always", "src", Filename, Category)) return ImbueAttribute::ALWAYS; if (NeverInstrument->inSection("xray_never_instrument", "src", Filename, Category) || AttrList->inSection("never", "src", Filename, Category)) return ImbueAttribute::NEVER; return ImbueAttribute::NONE; } XRayFunctionFilter::ImbueAttribute XRayFunctionFilter::shouldImbueLocation(SourceLocation Loc, StringRef Category) const { if (!Loc.isValid()) return ImbueAttribute::NONE; return this->shouldImbueFunctionsInFile(SM.getFilename(SM.getFileLoc(Loc)), Category); }
Upload File
Create Folder