Skip to content

Commit 9664939

Browse files
authored
merge main into amd-staging (#660)
2 parents 28bd166 + 0b9b0b4 commit 9664939

File tree

98 files changed

+1285
-870
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+1285
-870
lines changed

amd/comgr/src/comgr-compiler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1129,7 +1129,7 @@ amd_comgr_status_t AMDGPUCompiler::addDeviceLibraries() {
11291129
SmallString<256> ClangBinaryPath(env::getLLVMPath());
11301130
sys::path::append(ClangBinaryPath, "bin", "clang");
11311131

1132-
std::string ClangResourceDir = Driver::GetResourcesPath(ClangBinaryPath);
1132+
std::string ClangResourceDir = GetResourcesPath(ClangBinaryPath);
11331133

11341134
SmallString<256> DeviceLibPath(ClangResourceDir);
11351135
sys::path::append(DeviceLibPath, "lib");

clang-tools-extra/clangd/CompileCommands.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,7 @@ std::optional<std::string> detectSysroot() {
132132

133133
std::string detectStandardResourceDir() {
134134
static int StaticForMainAddr; // Just an address in this process.
135-
return CompilerInvocation::GetResourcesPath("clangd",
136-
(void *)&StaticForMainAddr);
135+
return GetResourcesPath("clangd", (void *)&StaticForMainAddr);
137136
}
138137

139138
// The path passed to argv[0] is important:

clang-tools-extra/clangd/Compiler.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "Compiler.h"
1010
#include "support/Logger.h"
1111
#include "clang/Basic/TargetInfo.h"
12+
#include "clang/Driver/CreateInvocationFromArgs.h"
1213
#include "clang/Frontend/CompilerInvocation.h"
1314
#include "clang/Lex/PreprocessorOptions.h"
1415
#include "clang/Serialization/PCHContainerOperations.h"

clang/docs/ReleaseNotes.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ Potentially Breaking Changes
8484
- Downstream projects that previously linked only against ``clangDriver`` may
8585
now (also) need to link against the new ``clangOptions`` library, since
8686
options-related code has been moved out of the Driver into a separate library.
87+
- The ``clangFrontend`` library no longer depends on ``clangDriver``, which may
88+
break downstream projects that relied on this transitive dependency.
8789

8890
C/C++ Language Potentially Breaking Changes
8991
-------------------------------------------

clang/include/clang/Basic/BuiltinsX86.td

Lines changed: 22 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1246,109 +1246,58 @@ let Features = "avx512bw", Attributes = [NoThrow, Const, Constexpr] in {
12461246
def knotdi : X86Builtin<"unsigned long long int(unsigned long long int)">;
12471247
}
12481248

1249-
let Features = "avx512vl,avx512bw",
1250-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
1251-
def cmpb128_mask : X86Builtin<"unsigned short(_Vector<16, char>, _Vector<16, char>, _Constant int, unsigned short)">;
1252-
}
1253-
1254-
let Features = "avx512vl",
1255-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
1249+
let Features = "avx512vl", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
12561250
def cmpd128_mask : X86Builtin<"unsigned char(_Vector<4, int>, _Vector<4, int>, _Constant int, unsigned char)">;
12571251
def cmpq128_mask : X86Builtin<"unsigned char(_Vector<2, long long int>, _Vector<2, long long int>, _Constant int, unsigned char)">;
1258-
}
1259-
1260-
let Features = "avx512vl,avx512bw",
1261-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
1262-
def cmpw128_mask : X86Builtin<"unsigned char(_Vector<8, short>, _Vector<8, short>, _Constant int, unsigned char)">;
1263-
}
1264-
1265-
let Features = "avx512vl,avx512bw",
1266-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<256>] in {
1267-
def cmpb256_mask : X86Builtin<"unsigned int(_Vector<32, char>, _Vector<32, char>, _Constant int, unsigned int)">;
1268-
}
1269-
1270-
let Features = "avx512vl",
1271-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<256>] in {
1272-
def cmpd256_mask : X86Builtin<"unsigned char(_Vector<8, int>, _Vector<8, int>, _Constant int, unsigned char)">;
1273-
def cmpq256_mask : X86Builtin<"unsigned char(_Vector<4, long long int>, _Vector<4, long long int>, _Constant int, unsigned char)">;
1274-
}
1275-
1276-
let Features = "avx512vl,avx512bw",
1277-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<256>] in {
1278-
def cmpw256_mask : X86Builtin<"unsigned short(_Vector<16, short>, _Vector<16, short>, _Constant int, unsigned short)">;
1279-
}
1280-
1281-
let Features = "avx512bw",
1282-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<512>] in {
1283-
def cmpb512_mask : X86Builtin<"unsigned long long int(_Vector<64, char>, _Vector<64, char>, _Constant int, unsigned long long int)">;
1284-
}
1285-
1286-
let Features = "avx512f",
1287-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<512>] in {
1288-
def cmpd512_mask : X86Builtin<"unsigned short(_Vector<16, int>, _Vector<16, int>, _Constant int, unsigned short)">;
1289-
def cmpq512_mask : X86Builtin<"unsigned char(_Vector<8, long long int>, _Vector<8, long long int>, _Constant int, unsigned char)">;
1290-
}
1291-
1292-
let Features = "avx512bw",
1293-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<512>] in {
1294-
def cmpw512_mask : X86Builtin<"unsigned int(_Vector<32, short>, _Vector<32, short>, _Constant int, unsigned int)">;
1295-
}
1296-
1297-
let Features = "avx512vl,avx512bw",
1298-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
1299-
def ucmpb128_mask : X86Builtin<"unsigned short(_Vector<16, char>, _Vector<16, char>, _Constant int, unsigned short)">;
1300-
}
13011252

1302-
let Features = "avx512vl",
1303-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
13041253
def ucmpd128_mask : X86Builtin<"unsigned char(_Vector<4, int>, _Vector<4, int>, _Constant int, unsigned char)">;
13051254
def ucmpq128_mask : X86Builtin<"unsigned char(_Vector<2, long long int>, _Vector<2, long long int>, _Constant int, unsigned char)">;
13061255
}
13071256

1308-
let Features = "avx512vl,avx512bw",
1309-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
1257+
let Features = "avx512vl,avx512bw", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
1258+
def cmpb128_mask : X86Builtin<"unsigned short(_Vector<16, char>, _Vector<16, char>, _Constant int, unsigned short)">;
1259+
def cmpw128_mask : X86Builtin<"unsigned char(_Vector<8, short>, _Vector<8, short>, _Constant int, unsigned char)">;
1260+
1261+
def ucmpb128_mask : X86Builtin<"unsigned short(_Vector<16, char>, _Vector<16, char>, _Constant int, unsigned short)">;
13101262
def ucmpw128_mask : X86Builtin<"unsigned char(_Vector<8, short>, _Vector<8, short>, _Constant int, unsigned char)">;
13111263
}
13121264

1313-
let Features = "avx512vl,avx512bw",
1314-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<256>] in {
1315-
def ucmpb256_mask : X86Builtin<"unsigned int(_Vector<32, char>, _Vector<32, char>, _Constant int, unsigned int)">;
1316-
}
1265+
let Features = "avx512vl", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<256>] in {
1266+
def cmpd256_mask : X86Builtin<"unsigned char(_Vector<8, int>, _Vector<8, int>, _Constant int, unsigned char)">;
1267+
def cmpq256_mask : X86Builtin<"unsigned char(_Vector<4, long long int>, _Vector<4, long long int>, _Constant int, unsigned char)">;
13171268

1318-
let Features = "avx512vl",
1319-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<256>] in {
13201269
def ucmpd256_mask : X86Builtin<"unsigned char(_Vector<8, int>, _Vector<8, int>, _Constant int, unsigned char)">;
13211270
def ucmpq256_mask : X86Builtin<"unsigned char(_Vector<4, long long int>, _Vector<4, long long int>, _Constant int, unsigned char)">;
13221271
}
13231272

1324-
let Features = "avx512vl,avx512bw",
1325-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<256>] in {
1273+
let Features = "avx512vl,avx512bw", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<256>] in {
1274+
def cmpb256_mask : X86Builtin<"unsigned int(_Vector<32, char>, _Vector<32, char>, _Constant int, unsigned int)">;
1275+
def cmpw256_mask : X86Builtin<"unsigned short(_Vector<16, short>, _Vector<16, short>, _Constant int, unsigned short)">;
1276+
1277+
def ucmpb256_mask : X86Builtin<"unsigned int(_Vector<32, char>, _Vector<32, char>, _Constant int, unsigned int)">;
13261278
def ucmpw256_mask : X86Builtin<"unsigned short(_Vector<16, short>, _Vector<16, short>, _Constant int, unsigned short)">;
13271279
}
13281280

1329-
let Features = "avx512bw",
1330-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<512>] in {
1331-
def ucmpb512_mask : X86Builtin<"unsigned long long int(_Vector<64, char>, _Vector<64, char>, _Constant int, unsigned long long int)">;
1332-
}
1281+
let Features = "avx512f", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<512>] in {
1282+
def cmpd512_mask : X86Builtin<"unsigned short(_Vector<16, int>, _Vector<16, int>, _Constant int, unsigned short)">;
1283+
def cmpq512_mask : X86Builtin<"unsigned char(_Vector<8, long long int>, _Vector<8, long long int>, _Constant int, unsigned char)">;
13331284

1334-
let Features = "avx512f",
1335-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<512>] in {
13361285
def ucmpd512_mask : X86Builtin<"unsigned short(_Vector<16, int>, _Vector<16, int>, _Constant int, unsigned short)">;
13371286
def ucmpq512_mask : X86Builtin<"unsigned char(_Vector<8, long long int>, _Vector<8, long long int>, _Constant int, unsigned char)">;
13381287
}
13391288

1340-
let Features = "avx512bw",
1341-
Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<512>] in {
1342-
def ucmpw512_mask : X86Builtin<"unsigned int(_Vector<32, short>, _Vector<32, short>, _Constant int, unsigned int)">;
1343-
}
1344-
13451289
let Features = "avx512bw", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<512>] in {
13461290
def packsswb512 : X86Builtin<"_Vector<64, char>(_Vector<32, short>, _Vector<32, short>)">;
13471291
def packssdw512 : X86Builtin<"_Vector<32, short>(_Vector<16, int>, _Vector<16, int>)">;
13481292
def packuswb512 : X86Builtin<"_Vector<64, char>(_Vector<32, short>, _Vector<32, short>)">;
13491293
def packusdw512 : X86Builtin<"_Vector<32, short>(_Vector<16, int>, _Vector<16, int>)">;
13501294

13511295
def pshufb512 : X86Builtin<"_Vector<64, char>(_Vector<64, char>, _Vector<64, char>)">;
1296+
1297+
def cmpb512_mask : X86Builtin<"unsigned long long int(_Vector<64, char>, _Vector<64, char>, _Constant int, unsigned long long int)">;
1298+
def cmpw512_mask : X86Builtin<"unsigned int(_Vector<32, short>, _Vector<32, short>, _Constant int, unsigned int)">;
1299+
def ucmpb512_mask : X86Builtin<"unsigned long long int(_Vector<64, char>, _Vector<64, char>, _Constant int, unsigned long long int)">;
1300+
def ucmpw512_mask : X86Builtin<"unsigned int(_Vector<32, short>, _Vector<32, short>, _Constant int, unsigned int)">;
13521301
}
13531302

13541303
let Features = "avx512cd,avx512vl", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
@@ -1397,7 +1346,6 @@ let Features = "avx512f", Attributes = [NoThrow, Const, RequiredVectorWidth<512>
13971346
def subps512 : X86Builtin<"_Vector<16, float>(_Vector<16, float>, _Vector<16, float>, _Constant int)">;
13981347
}
13991348

1400-
14011349
let Features = "avx512f", Attributes = [NoThrow, Const, RequiredVectorWidth<128>] in {
14021350
def addss_round_mask : X86Builtin<"_Vector<4, float>(_Vector<4, float>, _Vector<4, float>, _Vector<4, float>, unsigned char, _Constant int)">;
14031351
def divss_round_mask : X86Builtin<"_Vector<4, float>(_Vector<4, float>, _Vector<4, float>, _Vector<4, float>, unsigned char, _Constant int)">;

clang/include/clang/Driver/CommonArgs.h

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -312,16 +312,6 @@ void handleVectorizeLoopsArgs(const llvm::opt::ArgList &Args,
312312
void handleVectorizeSLPArgs(const llvm::opt::ArgList &Args,
313313
llvm::opt::ArgStringList &CmdArgs);
314314

315-
// Parse -mprefer-vector-width=. Return the Value string if well-formed.
316-
// Otherwise, return an empty string and issue a diagnosic message if needed.
317-
StringRef parseMPreferVectorWidthOption(clang::DiagnosticsEngine &Diags,
318-
const llvm::opt::ArgList &Args);
319-
320-
// Parse -mrecip. Return the Value string if well-formed.
321-
// Otherwise, return an empty string and issue a diagnosic message if needed.
322-
StringRef parseMRecipOption(clang::DiagnosticsEngine &Diags,
323-
const llvm::opt::ArgList &Args);
324-
325315
// Convert ComplexRangeKind to a string that can be passed as a frontend option.
326316
std::string complexRangeKindToStr(LangOptions::ComplexRangeKind Range);
327317

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
//===-- CreateInvocationFromArgs.h - Create an ASTUnit from Args-*- C++ -*-===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
//
9+
// Utility for creating an ASTUnit from a vector of command line arguments.
10+
//
11+
//===----------------------------------------------------------------------===//
12+
13+
#ifndef LLVM_CLANG_DRIVER_CREATEASTUNITFROMARGS_H
14+
#define LLVM_CLANG_DRIVER_CREATEASTUNITFROMARGS_H
15+
16+
#include "clang/Frontend/ASTUnit.h"
17+
18+
namespace clang {
19+
20+
/// Create an ASTUnit from a vector of command line arguments, which must
21+
/// specify exactly one source file.
22+
///
23+
/// \param ArgBegin - The beginning of the argument vector.
24+
///
25+
/// \param ArgEnd - The end of the argument vector.
26+
///
27+
/// \param PCHContainerOps - The PCHContainerOperations to use for loading and
28+
/// creating modules.
29+
///
30+
/// \param Diags - The diagnostics engine to use for reporting errors; its
31+
/// lifetime is expected to extend past that of the returned ASTUnit.
32+
///
33+
/// \param ResourceFilesPath - The path to the compiler resource files.
34+
///
35+
/// \param StorePreamblesInMemory - Whether to store PCH in memory. If false,
36+
/// PCH are stored in temporary files.
37+
///
38+
/// \param PreambleStoragePath - The path to a directory, in which to create
39+
/// temporary PCH files. If empty, the default system temporary directory is
40+
/// used. This parameter is ignored if \p StorePreamblesInMemory is true.
41+
///
42+
/// \param ModuleFormat - If provided, uses the specific module format.
43+
///
44+
/// \param ErrAST - If non-null and parsing failed without any AST to return
45+
/// (e.g. because the PCH could not be loaded), this accepts the ASTUnit
46+
/// mainly to allow the caller to see the diagnostics.
47+
///
48+
/// \param VFS - A llvm::vfs::FileSystem to be used for all file accesses.
49+
/// Note that preamble is saved to a temporary directory on a RealFileSystem,
50+
/// so in order for it to be loaded correctly, VFS should have access to
51+
/// it(i.e., be an overlay over RealFileSystem). RealFileSystem will be used
52+
/// if \p VFS is nullptr.
53+
///
54+
// FIXME: Move OnlyLocalDecls, UseBumpAllocator to setters on the ASTUnit, we
55+
// shouldn't need to specify them at construction time.
56+
std::unique_ptr<ASTUnit> CreateASTUnitFromCommandLine(
57+
const char **ArgBegin, const char **ArgEnd,
58+
std::shared_ptr<PCHContainerOperations> PCHContainerOps,
59+
std::shared_ptr<DiagnosticOptions> DiagOpts,
60+
IntrusiveRefCntPtr<DiagnosticsEngine> Diags, StringRef ResourceFilesPath,
61+
bool StorePreamblesInMemory = false,
62+
StringRef PreambleStoragePath = StringRef(), bool OnlyLocalDecls = false,
63+
CaptureDiagsKind CaptureDiagnostics = CaptureDiagsKind::None,
64+
ArrayRef<ASTUnit::RemappedFile> RemappedFiles = {},
65+
bool RemappedFilesKeepOriginalName = true,
66+
unsigned PrecompilePreambleAfterNParses = 0,
67+
TranslationUnitKind TUKind = TU_Complete,
68+
bool CacheCodeCompletionResults = false,
69+
bool IncludeBriefCommentsInCodeCompletion = false,
70+
bool AllowPCHWithCompilerErrors = false,
71+
SkipFunctionBodiesScope SkipFunctionBodies = SkipFunctionBodiesScope::None,
72+
bool SingleFileParse = false, bool UserFilesAreVolatile = false,
73+
bool ForSerialization = false, bool RetainExcludedConditionalBlocks = false,
74+
std::optional<StringRef> ModuleFormat = std::nullopt,
75+
std::unique_ptr<ASTUnit> *ErrAST = nullptr,
76+
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = nullptr);
77+
78+
} // namespace clang
79+
80+
#endif // LLVM_CLANG_DRIVER_CREATEASTUNITFROMARGS_H
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
//===--- CreateInvocationFromArgs.h - CompilerInvocation from Args --------===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
//
9+
// Utility for creating a CompilerInvocation from command-line arguments, for
10+
// tools to use in preparation to parse a file.
11+
//
12+
//===----------------------------------------------------------------------===//
13+
14+
#ifndef LLVM_CLANG_DRIVER_CREATEINVOCATIONFROMARGS_H
15+
#define LLVM_CLANG_DRIVER_CREATEINVOCATIONFROMARGS_H
16+
17+
#include "clang/Basic/Diagnostic.h"
18+
#include "clang/Basic/LLVM.h"
19+
#include "llvm/Support/VirtualFileSystem.h"
20+
#include <memory>
21+
#include <string>
22+
#include <vector>
23+
24+
namespace clang {
25+
26+
class CompilerInvocation;
27+
class DiagnosticsEngine;
28+
29+
/// Optional inputs to createInvocation.
30+
struct CreateInvocationOptions {
31+
/// Receives diagnostics encountered while parsing command-line flags.
32+
/// If not provided, these are printed to stderr.
33+
IntrusiveRefCntPtr<DiagnosticsEngine> Diags = nullptr;
34+
/// Used e.g. to probe for system headers locations.
35+
/// If not provided, the real filesystem is used.
36+
/// FIXME: the driver does perform some non-virtualized IO.
37+
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = nullptr;
38+
/// Whether to attempt to produce a non-null (possibly incorrect) invocation
39+
/// if any errors were encountered.
40+
/// By default, always return null on errors.
41+
bool RecoverOnError = false;
42+
/// Allow the driver to probe the filesystem for PCH files.
43+
/// This is used to replace -include with -include-pch in the cc1 args.
44+
/// FIXME: ProbePrecompiled=true is a poor, historical default.
45+
/// It misbehaves if the PCH file is from GCC, has the wrong version, etc.
46+
bool ProbePrecompiled = false;
47+
/// If set, the target is populated with the cc1 args produced by the driver.
48+
/// This may be populated even if createInvocation returns nullptr.
49+
std::vector<std::string> *CC1Args = nullptr;
50+
};
51+
52+
/// Interpret clang arguments in preparation to parse a file.
53+
///
54+
/// This simulates a number of steps Clang takes when its driver is invoked:
55+
/// - choosing actions (e.g compile + link) to run
56+
/// - probing the system for settings like standard library locations
57+
/// - spawning a cc1 subprocess to compile code, with more explicit arguments
58+
/// - in the cc1 process, assembling those arguments into a CompilerInvocation
59+
/// which is used to configure the parser
60+
///
61+
/// This simulation is lossy, e.g. in some situations one driver run would
62+
/// result in multiple parses. (Multi-arch, CUDA, ...).
63+
/// This function tries to select a reasonable invocation that tools should use.
64+
///
65+
/// Args[0] should be the driver name, such as "clang" or "/usr/bin/g++".
66+
/// Absolute path is preferred - this affects searching for system headers.
67+
///
68+
/// May return nullptr if an invocation could not be determined.
69+
/// See CreateInvocationOptions::RecoverOnError to try harder!
70+
std::unique_ptr<CompilerInvocation>
71+
createInvocation(ArrayRef<const char *> Args,
72+
CreateInvocationOptions Opts = {});
73+
74+
} // namespace clang
75+
76+
#endif // LLVM_CLANG_DRIVER_CREATEINVOCATIONFROMARGS_H

clang/include/clang/Driver/Driver.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -412,11 +412,6 @@ class Driver {
412412
SmallString<128> &CrashDiagDir);
413413

414414
public:
415-
416-
/// Takes the path to a binary that's either in bin/ or lib/ and returns
417-
/// the path to clang's resource directory.
418-
static std::string GetResourcesPath(StringRef BinaryPath);
419-
420415
Driver(StringRef ClangExecutable, StringRef TargetTriple,
421416
DiagnosticsEngine &Diags, std::string Title = "clang LLVM compiler",
422417
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = nullptr);

0 commit comments

Comments
 (0)