Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
f63d33d
Reland "[clang] Refactor option-related code from clangDriver into ne…
naveen-seth Nov 10, 2025
4ae7348
[DirectX] Teach DXILResourceAccess about cbuffers (#164554)
bogner Nov 10, 2025
793ab6a
X86: Enable terminal rule (#165957)
arsenm Nov 10, 2025
2fc2e1f
[LLDB] Fix darwin shell tests under ASAN
adrian-prantl Nov 10, 2025
f8e9723
ARM: Enable terminal rule (#165958)
arsenm Nov 10, 2025
2aa629d
AArch64: Enable terminal rule (#165959)
arsenm Nov 10, 2025
067f155
[AMDGPU] remove clamp and omod for trans bf16 insts (#165819)
broxigarchen Nov 10, 2025
826cadd
[Hexagon] Clean-up Instrprof test (#166990)
fhossein-quic Nov 10, 2025
17e2641
[bazel][clang] Port #167374: split clang options/driver (#167387)
rupprecht Nov 10, 2025
a37c4e0
[NFC][SpecialCaseList] Hide Section internals in private section (#16…
vitalybuka Nov 10, 2025
b4a6151
[CIR][NFC] Re-land: Add test for Complex imag literal GNU extension (…
AmrDeveloper Nov 10, 2025
540250c
[OpenMP][Clang] Add codegen support for dyn_groupprivate clause (#152…
kevinsala Nov 10, 2025
20e1a12
[LLDB] Fix (more) darwin shell tests under ASAN
adrian-prantl Nov 10, 2025
fb2fa21
[AMDGPU] Remove calling conv check on entry function (#162080)
jofrn Nov 10, 2025
4b9d7e1
Reapply "[libc] Return errno from OFD failure paths in fcntl." (#1666…
jtstogel Nov 10, 2025
8c86bc8
AMDGPU/GlobalISel: Fix AGPR regbank check for mfma_scale (#167393)
arsenm Nov 10, 2025
0767c64
[VPlan] Use getDefiningRecipe instead of directly accessing Def. (NFC)
fhahn Nov 10, 2025
a1934ee
[NFC][SpecialCaseList] Replace callback with return value (#165943)
vitalybuka Nov 10, 2025
046ae85
[scudo] Small cleanup of memory tagging code. (#166860)
cferris1000 Nov 10, 2025
8b1cc2d
[VPlan] Update canNarrowLoad to check WidenMember0's op first (NFCI).
fhahn Nov 10, 2025
95db31e
Treat specifying a function in the bbsection profile without any dire…
rlavaee Nov 10, 2025
d5125b3
[flang][CUDA] Unify element size computation in CUF helpers (#167398)
wangzpgi Nov 10, 2025
7b12a08
[AArch64] Allow peephole to optimize AND + signed compare with 0 (#15…
AZero13 Nov 10, 2025
bf3b704
[flang][NFC] Characterize allocation based on MemAlloc effect instead…
SusanTan Nov 10, 2025
ad9eb0d
Add default empty header filter regex to root .clang-tidy (#167386)
vbvictor Nov 10, 2025
11ab23c
CodeGen: Keep reference to TargetRegisterInfo in TargetInstrInfo (#15…
arsenm Nov 10, 2025
da996a3
[NFC][SpecialCaseList] Refactor error handling (#167277)
vitalybuka Nov 10, 2025
5b8e869
[llc] Fix save-stats test in read only directories (#167403)
michaelrj-google Nov 10, 2025
c5ce802
[libc] fwrite_unlocked: only return errno if an actual error occurred…
Sterling-Augustine Nov 10, 2025
3be78f7
merge main into amd-staging
ronlieb Nov 11, 2025
89ef2fe
[OMPIRBuilder] Fix addrspace of internal critical section lock (#166459)
sarnex Nov 10, 2025
0759bc9
merge main into amd-staging
ronlieb Nov 11, 2025
a013261
merge main into amd-staging
ronlieb Nov 11, 2025
a7a75e2
Revert "[OpenMP][Clang] Add codegen support for dyn_groupprivate clau…
ronlieb Nov 11, 2025
dff7e09
merge main into amd-staging
ronlieb Nov 11, 2025
1430624
Regen llvm/test/CodeGen/AMDGPU/cc-entry.ll
ronlieb Nov 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
HeaderFilterRegex: ''
Checks: >
-*,
clang-diagnostic-*,
Expand Down
1 change: 1 addition & 0 deletions clang-tools-extra/clangd/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ clang_target_link_libraries(clangDaemon
clangBasic
clangDependencyScanning
clangDriver
clangOptions
clangFormat
clangFrontend
clangIndex
Expand Down
27 changes: 13 additions & 14 deletions clang-tools-extra/clangd/CompileCommands.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
#include "support/Logger.h"
#include "support/Trace.h"
#include "clang/Driver/Driver.h"
#include "clang/Driver/Options.h"
#include "clang/Frontend/CompilerInvocation.h"
#include "clang/Options/Options.h"
#include "clang/Tooling/CompilationDatabase.h"
#include "clang/Tooling/Tooling.h"
#include "llvm/ADT/ArrayRef.h"
Expand Down Expand Up @@ -206,7 +206,7 @@ void CommandMangler::operator()(tooling::CompileCommand &Command,
if (Cmd.empty())
return;

auto &OptTable = clang::driver::getDriverOptTable();
auto &OptTable = getDriverOptTable();
// OriginalArgs needs to outlive ArgList.
llvm::SmallVector<const char *, 16> OriginalArgs;
OriginalArgs.reserve(Cmd.size());
Expand All @@ -222,8 +222,8 @@ void CommandMangler::operator()(tooling::CompileCommand &Command,
llvm::opt::InputArgList ArgList;
ArgList = OptTable.ParseArgs(
llvm::ArrayRef(OriginalArgs).drop_front(), IgnoredCount, IgnoredCount,
llvm::opt::Visibility(IsCLMode ? driver::options::CLOption
: driver::options::ClangOption));
llvm::opt::Visibility(IsCLMode ? options::CLOption
: options::ClangOption));

llvm::SmallVector<unsigned, 1> IndicesToDrop;
// Having multiple architecture options (e.g. when building fat binaries)
Expand All @@ -232,7 +232,7 @@ void CommandMangler::operator()(tooling::CompileCommand &Command,
// As there are no signals to figure out which one user actually wants. They
// can explicitly specify one through `CompileFlags.Add` if need be.
unsigned ArchOptCount = 0;
for (auto *Input : ArgList.filtered(driver::options::OPT_arch)) {
for (auto *Input : ArgList.filtered(options::OPT_arch)) {
++ArchOptCount;
for (auto I = 0U; I <= Input->getNumValues(); ++I)
IndicesToDrop.push_back(Input->getIndex() + I);
Expand Down Expand Up @@ -262,13 +262,12 @@ void CommandMangler::operator()(tooling::CompileCommand &Command,
// explicitly at the end of the flags. This ensures modifications done in the
// following steps apply in more cases (like setting -x, which only affects
// inputs that come after it).
for (auto *Input : ArgList.filtered(driver::options::OPT_INPUT)) {
for (auto *Input : ArgList.filtered(options::OPT_INPUT)) {
SawInput(Input->getValue(0));
IndicesToDrop.push_back(Input->getIndex());
}
// Anything after `--` is also treated as input, drop them as well.
if (auto *DashDash =
ArgList.getLastArgNoClaim(driver::options::OPT__DASH_DASH)) {
if (auto *DashDash = ArgList.getLastArgNoClaim(options::OPT__DASH_DASH)) {
auto DashDashIndex = DashDash->getIndex() + 1; // +1 accounts for Cmd[0]
// Another +1 so we don't treat the `--` itself as an input.
for (unsigned I = DashDashIndex + 1; I < Cmd.size(); ++I)
Expand Down Expand Up @@ -424,11 +423,11 @@ DriverMode getDriverMode(const std::vector<std::string> &Args) {
// Returns the set of DriverModes where an option may be used.
unsigned char getModes(const llvm::opt::Option &Opt) {
unsigned char Result = DM_None;
if (Opt.hasVisibilityFlag(driver::options::ClangOption))
if (Opt.hasVisibilityFlag(options::ClangOption))
Result |= DM_GCC;
if (Opt.hasVisibilityFlag(driver::options::CC1Option))
if (Opt.hasVisibilityFlag(options::CC1Option))
Result |= DM_CC1;
if (Opt.hasVisibilityFlag(driver::options::CLOption))
if (Opt.hasVisibilityFlag(options::CLOption))
Result |= DM_CL;
return Result;
}
Expand All @@ -442,8 +441,8 @@ llvm::ArrayRef<ArgStripper::Rule> ArgStripper::rulesFor(llvm::StringRef Arg) {
using TableTy =
llvm::StringMap<llvm::SmallVector<Rule, 4>, llvm::BumpPtrAllocator>;
static TableTy *Table = [] {
auto &DriverTable = driver::getDriverOptTable();
using DriverID = clang::driver::options::ID;
auto &DriverTable = getDriverOptTable();
using DriverID = clang::options::ID;

// Collect sets of aliases, so we can treat -foo and -foo= as synonyms.
// Conceptually a double-linked list: PrevAlias[I] -> I -> NextAlias[I].
Expand All @@ -468,7 +467,7 @@ llvm::ArrayRef<ArgStripper::Rule> ArgStripper::rulesFor(llvm::StringRef Arg) {
FLAGS, VISIBILITY, PARAM, HELPTEXT, HELPTEXTSFORVARIANTS, \
METAVAR, VALUES, SUBCOMMANDIDS_OFFSET) \
{DriverID::OPT_##ID, DriverID::OPT_##ALIAS, ALIASARGS},
#include "clang/Driver/Options.inc"
#include "clang/Options/Options.inc"
#undef OPTION
};
for (auto &E : AliasTable)
Expand Down
1 change: 1 addition & 0 deletions clang-tools-extra/modularize/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ clang_target_link_libraries(modularize
clangAST
clangBasic
clangDriver
clangOptions
clangFrontend
clangLex
clangSerialization
Expand Down
6 changes: 3 additions & 3 deletions clang-tools-extra/modularize/CoverageChecker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,18 +50,18 @@
//
//===----------------------------------------------------------------------===//

#include "CoverageChecker.h"
#include "ModularizeUtilities.h"
#include "clang/AST/ASTConsumer.h"
#include "CoverageChecker.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Driver/Options.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Frontend/FrontendAction.h"
#include "clang/Frontend/FrontendActions.h"
#include "clang/Lex/PPCallbacks.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Options/Options.h"
#include "clang/Tooling/CompilationDatabase.h"
#include "clang/Tooling/Tooling.h"
#include "llvm/Option/Option.h"
Expand All @@ -73,7 +73,7 @@
using namespace Modularize;
using namespace clang;
using namespace clang::driver;
using namespace clang::driver::options;
using namespace clang::options;
using namespace clang::tooling;
namespace cl = llvm::cl;
namespace sys = llvm::sys;
Expand Down
4 changes: 2 additions & 2 deletions clang-tools-extra/modularize/Modularize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -231,11 +231,11 @@
#include "clang/AST/ASTContext.h"
#include "clang/AST/RecursiveASTVisitor.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Driver/Options.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Frontend/FrontendAction.h"
#include "clang/Frontend/FrontendActions.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Options/Options.h"
#include "clang/Tooling/CompilationDatabase.h"
#include "clang/Tooling/Tooling.h"
#include "llvm/Option/Arg.h"
Expand All @@ -254,7 +254,7 @@

using namespace clang;
using namespace clang::driver;
using namespace clang::driver::options;
using namespace clang::options;
using namespace clang::tooling;
using namespace llvm;
using namespace llvm::opt;
Expand Down
6 changes: 3 additions & 3 deletions clang-tools-extra/modularize/ModularizeUtilities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@
//
//===----------------------------------------------------------------------===//

#include "ModularizeUtilities.h"
#include "CoverageChecker.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Driver/Options.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Frontend/FrontendActions.h"
#include "CoverageChecker.h"
#include "clang/Options/Options.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/Support/FileUtilities.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
#include "ModularizeUtilities.h"

using namespace clang;
using namespace llvm;
Expand Down
1 change: 1 addition & 0 deletions clang-tools-extra/pp-trace/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ clang_target_link_libraries(pp-trace
PRIVATE
clangAST
clangBasic
clangOptions
clangFrontend
clangLex
clangSerialization
Expand Down
2 changes: 1 addition & 1 deletion clang-tools-extra/pp-trace/PPTrace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Driver/Options.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Frontend/FrontendAction.h"
#include "clang/Frontend/FrontendActions.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Options/Options.h"
#include "clang/Tooling/Execution.h"
#include "clang/Tooling/Tooling.h"
#include "llvm/Option/Arg.h"
Expand Down
2 changes: 1 addition & 1 deletion clang/docs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ if (LLVM_ENABLE_SPHINX)
# Generated files
gen_rst_file_from_td(AttributeReference.rst -gen-attr-docs ../include/clang/Basic/Attr.td "${docs_targets}")
gen_rst_file_from_td(DiagnosticsReference.rst -gen-diag-docs ../include/clang/Basic/Diagnostic.td "${docs_targets}")
gen_rst_file_from_td(ClangCommandLineReference.rst -gen-opt-docs ../include/clang/Driver/ClangOptionDocs.td "${docs_targets}")
gen_rst_file_from_td(ClangCommandLineReference.rst -gen-opt-docs ../include/clang/Options/ClangOptionDocs.td "${docs_targets}")

# Another generated file from a different source
set(docs_tools_dir ${CMAKE_CURRENT_SOURCE_DIR}/tools)
Expand Down
8 changes: 4 additions & 4 deletions clang/docs/InternalsManual.rst
Original file line number Diff line number Diff line change
Expand Up @@ -667,7 +667,7 @@ Command Line Interface
----------------------

The command line interface of the Clang ``-cc1`` frontend is defined alongside
the driver options in ``clang/Driver/Options.td``. The information making up an
the driver options in ``clang/Options/Options.td``. The information making up an
option definition includes its prefix and name (for example ``-std=``), form and
position of the option value, help text, aliases and more. Each option may
belong to a certain group and can be marked with zero or more flags. Options
Expand Down Expand Up @@ -712,7 +712,7 @@ variable for the option value:
}

Next, declare the command line interface of the option in the tablegen file
``clang/include/clang/Driver/Options.td``. This is done by instantiating the
``clang/include/clang/Options/Options.td``. This is done by instantiating the
``Option`` class (defined in ``llvm/include/llvm/Option/OptParser.td``). The
instance is typically created through one of the helper classes that encode the
acceptable ways to specify the option value on the command line:
Expand Down Expand Up @@ -906,7 +906,7 @@ command line:
SHOULD_PARSE, KEYPATH, DEFAULT_VALUE, \
IMPLIED_CHECK, IMPLIED_VALUE, NORMALIZER, \
MERGER, TABLE_INDEX)
#include "clang/Driver/Options.inc"
#include "clang/Options/Options.inc"
#undef LANG_OPTION_WITH_MARSHALLING

// ...
Expand All @@ -925,7 +925,7 @@ command line:
GENERATE_OPTION_WITH_MARSHALLING( \
Args, SA, KIND, FLAGS, SPELLING, ALWAYS_EMIT, KEYPATH, DEFAULT_VALUE, \
IMPLIED_CHECK, IMPLIED_VALUE, DENORMALIZER, EXTRACTOR, TABLE_INDEX)
#include "clang/Driver/Options.inc"
#include "clang/Options/Options.inc"
#undef LANG_OPTION_WITH_MARSHALLING

// ...
Expand Down
3 changes: 3 additions & 0 deletions clang/docs/ReleaseNotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ Potentially Breaking Changes
void foo(void) {
return ({ 1;; });
}
- Downstream projects that previously linked only against ``clangDriver`` may
now (also) need to link against the new ``clangOptions`` library, since
options-related code has been moved out of the Driver into a separate library.

C/C++ Language Potentially Breaking Changes
-------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion clang/include/clang/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ add_subdirectory(Basic)
if(CLANG_ENABLE_CIR)
add_subdirectory(CIR)
endif()
add_subdirectory(Driver)
add_subdirectory(Options)
add_subdirectory(Parse)
add_subdirectory(Sema)
add_subdirectory(Serialization)
Expand Down
2 changes: 1 addition & 1 deletion clang/include/clang/Driver/Driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
#include "clang/Driver/Action.h"
#include "clang/Driver/DriverDiagnostic.h"
#include "clang/Driver/InputInfo.h"
#include "clang/Driver/Options.h"
#include "clang/Driver/Phases.h"
#include "clang/Driver/ToolChain.h"
#include "clang/Driver/Types.h"
#include "clang/Driver/Util.h"
#include "clang/Options/Options.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/STLFunctionalExtras.h"
#include "llvm/ADT/StringMap.h"
Expand Down
2 changes: 1 addition & 1 deletion clang/include/clang/Frontend/Utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@

#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/LLVM.h"
#include "clang/Driver/OptionUtils.h"
#include "clang/Frontend/DependencyOutputOptions.h"
#include "clang/Options/OptionUtils.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/IntrusiveRefCntPtr.h"
#include "llvm/ADT/StringMap.h"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_DRIVER_OPTIONUTILS_H
#define LLVM_CLANG_DRIVER_OPTIONUTILS_H
#ifndef LLVM_CLANG_OPTIONS_OPTIONUTILS_H
#define LLVM_CLANG_OPTIONS_OPTIONUTILS_H

#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/LLVM.h"
Expand Down Expand Up @@ -55,4 +55,4 @@ inline uint64_t getLastArgUInt64Value(const llvm::opt::ArgList &Args,

} // namespace clang

#endif // LLVM_CLANG_DRIVER_OPTIONUTILS_H
#endif // LLVM_CLANG_OPTIONS_OPTIONUTILS_H
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_DRIVER_OPTIONS_H
#define LLVM_CLANG_DRIVER_OPTIONS_H
#ifndef LLVM_CLANG_OPTIONS_OPTIONS_H
#define LLVM_CLANG_OPTIONS_OPTIONS_H

#include "llvm/Option/OptTable.h"
#include "llvm/Option/Option.h"

namespace clang {
namespace driver {

namespace options {
/// Flags specifically for clang options. Must not overlap with
Expand Down Expand Up @@ -42,16 +41,15 @@ enum ClangVisibility {
};

enum ID {
OPT_INVALID = 0, // This is not an option ID.
OPT_INVALID = 0, // This is not an option ID.
#define OPTION(...) LLVM_MAKE_OPT_ID(__VA_ARGS__),
#include "clang/Driver/Options.inc"
LastOption
#include "clang/Options/Options.inc"
LastOption
#undef OPTION
};
}
};
} // namespace options

const llvm::opt::OptTable &getDriverOptTable();
}
}
} // namespace clang

#endif
#endif // LLVM_CLANG_OPTIONS_OPTIONS_H
1 change: 1 addition & 0 deletions clang/include/module.modulemap
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ module Clang_Lex {
module * { export * }
}

module Clang_Options { requires cplusplus umbrella "clang/Options" module * { export * } }
module Clang_Parse { requires cplusplus umbrella "clang/Parse" module * { export * } }
module Clang_Rewrite { requires cplusplus umbrella "clang/Rewrite/Core" module * { export * } }
module Clang_RewriteFrontend { requires cplusplus umbrella "clang/Rewrite/Frontend" module * { export * } }
Expand Down
2 changes: 1 addition & 1 deletion clang/lib/Basic/Diagnostic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,7 @@ WarningsSpecialCaseList::create(const llvm::MemoryBuffer &Input,
void WarningsSpecialCaseList::processSections(DiagnosticsEngine &Diags) {
static constexpr auto WarningFlavor = clang::diag::Flavor::WarningOrError;
for (const auto &SectionEntry : sections()) {
StringRef DiagGroup = SectionEntry.SectionStr;
StringRef DiagGroup = SectionEntry.name();
if (DiagGroup == "*") {
// Drop the default section introduced by special case list, we only
// support exact diagnostic group names.
Expand Down
2 changes: 1 addition & 1 deletion clang/lib/Basic/ProfileList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class ProfileSpecialCaseList : public llvm::SpecialCaseList {

bool hasPrefix(StringRef Prefix) const {
for (const auto &It : sections())
if (It.Entries.count(Prefix) > 0)
if (It.hasPrefix(Prefix))
return true;
return false;
}
Expand Down
4 changes: 2 additions & 2 deletions clang/lib/Basic/SanitizerSpecialCaseList.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ void SanitizerSpecialCaseList::createSanitizerSections() {
SanitizerMask Mask;

#define SANITIZER(NAME, ID) \
if (S.SectionMatcher.matchAny(NAME)) \
if (S.matchName(NAME)) \
Mask |= SanitizerKind::ID;
#define SANITIZER_GROUP(NAME, ID, ALIAS) SANITIZER(NAME, ID)

Expand All @@ -68,7 +68,7 @@ SanitizerSpecialCaseList::inSectionBlame(SanitizerMask Mask, StringRef Prefix,
if (S.Mask & Mask) {
unsigned LineNum = S.S.getLastMatch(Prefix, Query, Category);
if (LineNum > 0)
return {S.S.FileIdx, LineNum};
return {S.S.fileIndex(), LineNum};
}
}
return NotFound;
Expand Down
Loading