Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
2d4a8da
[VPlan] Use DL index type consistently for GEPs (#169396)
artagnon Nov 26, 2025
800da10
[clang][DebugInfo] Add call site debug info flag (#169574)
jryans Nov 26, 2025
d090311
Reland "[clang] Refactor to remove clangDriver dependency from clangF…
naveen-seth Nov 26, 2025
cc1c417
[dwarf] make dwarf fission compatible with RISCV relaxations 2/2 (#16…
daniilavdeev Nov 26, 2025
bbbe511
Reland "[clang][Driver] Support for the SPIR-V backend when compiling…
mgcarrasco Nov 26, 2025
2b8d363
[Delinearization] Remove tryDelinearizeFixedSizeImpl (#169046)
kasuga-fj Nov 26, 2025
23f9030
Reland: [GPUToXeVMPipeline][Pipeline] Modify pipeline to add `convert…
mshahneo Nov 26, 2025
0a35f44
[HIP] Perform implicit pointer cast when compiling HIP, not when -fcu…
jmmartinez Nov 26, 2025
e3de8ff
[gn build] Port d090311aa7df
llvmgnsyncbot Nov 26, 2025
4cc8cc8
[VPlan] Hoist predicated loads with complementary masks. (#168373)
fhahn Nov 26, 2025
637f206
[Support] Add getAllocTokenModeAsString() helper (#169650)
melver Nov 26, 2025
b20d35c
[AArch64] Combine vector add(trunc(shift)) (#169523)
davemgreen Nov 26, 2025
cd1ad5a
[CIR] Add missing switch cases for AO__scoped_atomic_uinc/udec_wrap i…
wenju-he Nov 26, 2025
de4e128
[BOLT] Fix assertion test (#169635)
bgergely0 Nov 26, 2025
75ae0e8
[OpenMP] Add docs for fb_nullify/fb_preserve (#169558)
zahiraam Nov 26, 2025
ff0c347
opt: Try to respect target-abi command line option (#169604)
arsenm Nov 26, 2025
35dfeb7
[SPIRV] Enable DCE in instruction selection and update tests (#168428)
s-perron Nov 26, 2025
0c2701f
CodeGen: Make all targets override pseudos with pointers (#159881)
arsenm Nov 26, 2025
6e983e3
[SPIRV] Support Peeled Array Layouts for HLSL CBuffers (#169078)
s-perron Nov 26, 2025
e7bcd80
[SPIRV] Use OpCopyMemory for logical SPIRV memcpy (#169348)
s-perron Nov 26, 2025
7bf459b
CodeGen: Make target overrides of PointerLikeRegClass mandatory (#159…
arsenm Nov 26, 2025
9b88cd9
CodeGen: Remove PointerLikeRegClass handling from codegen (#159883)
arsenm Nov 26, 2025
43e69b1
RuntimeLibcalls: Add malloc and free entries (#167081)
arsenm Nov 26, 2025
59b3d18
RuntimeLibcalls: Add more function entries from TargetLibraryInfo (#1…
arsenm Nov 26, 2025
9e1d3ca
RuntimeLibcalls: Add memset_pattern* calls to darwin systems (#167083)
arsenm Nov 26, 2025
e8b9d42
[tysan] Type Sanitizer support for SystemZ (#162396)
anoopkg6 Nov 26, 2025
44c9d3a
[scudo] Add scudo_standalone support for SystemZ (#166187)
anoopkg6 Nov 26, 2025
f8bba3b
merge main into amd-staging
z1-cciauto Nov 26, 2025
ccb14ba
comgr remove Driver:: from GetResourcesPath
ronlieb Nov 26, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion amd/comgr/src/comgr-compiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1129,7 +1129,7 @@ amd_comgr_status_t AMDGPUCompiler::addDeviceLibraries() {
SmallString<256> ClangBinaryPath(env::getLLVMPath());
sys::path::append(ClangBinaryPath, "bin", "clang");

std::string ClangResourceDir = Driver::GetResourcesPath(ClangBinaryPath);
std::string ClangResourceDir = GetResourcesPath(ClangBinaryPath);

SmallString<256> DeviceLibPath(ClangResourceDir);
sys::path::append(DeviceLibPath, "lib");
Expand Down
2 changes: 2 additions & 0 deletions bolt/unittests/Core/MCPlusBuilder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -171,9 +171,11 @@ TEST_P(MCPlusBuilderTester, AArch64_BTI) {
ASSERT_EQ(II->getOperand(0).getImm(), 34);
ASSERT_TRUE(BC->MIB->isBTILandingPad(*II, true, false));

#ifndef NDEBUG
MCInst BTIinvalid;
ASSERT_DEATH(BC->MIB->createBTI(BTIinvalid, false, false),
"No target kinds!");
#endif

MCInst Paciasp = MCInstBuilder(AArch64::PACIASP);
II = BB->addInstruction(Paciasp);
Expand Down
3 changes: 1 addition & 2 deletions clang-tools-extra/clangd/CompileCommands.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -132,8 +132,7 @@ std::optional<std::string> detectSysroot() {

std::string detectStandardResourceDir() {
static int StaticForMainAddr; // Just an address in this process.
return CompilerInvocation::GetResourcesPath("clangd",
(void *)&StaticForMainAddr);
return GetResourcesPath("clangd", (void *)&StaticForMainAddr);
}

// The path passed to argv[0] is important:
Expand Down
1 change: 1 addition & 0 deletions clang-tools-extra/clangd/Compiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "Compiler.h"
#include "support/Logger.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Driver/CreateInvocationFromArgs.h"
#include "clang/Frontend/CompilerInvocation.h"
#include "clang/Lex/PreprocessorOptions.h"
#include "clang/Serialization/PCHContainerOperations.h"
Expand Down
6 changes: 5 additions & 1 deletion clang/docs/OpenMPSupport.rst
Original file line number Diff line number Diff line change
Expand Up @@ -580,6 +580,8 @@ implementation.
| need_device_addr modifier for adjust_args clause | :part:`partial` | :none:`unclaimed` | Parsing/Sema: https://github.com/llvm/llvm-project/pull/143442 |
| | | | https://github.com/llvm/llvm-project/pull/149586 |
+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
| need_device_ptr modifier for adjust_args clause | :part:`unclaimed` | :none:`unclaimed` | |
+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+
| Prescriptive num_threads | :good:`done` | :none:`unclaimed` | https://github.com/llvm/llvm-project/pull/160659 |
| | | | https://github.com/llvm/llvm-project/pull/146403 |
| | | | https://github.com/llvm/llvm-project/pull/146404 |
Expand Down Expand Up @@ -631,7 +633,9 @@ implementation.
| | | | RT: @abhinavgaba (https://github.com/llvm/llvm-project/pull/149036, |
| | | | https://github.com/llvm/llvm-project/pull/158370) |
+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+

| need_device_ptr modifier for adjust_args clause | :part:`partial` | :none:`unclaimed` | Clang Parsing/Sema: https://github.com/llvm/llvm-project/pull/168905 |
| | | | https://github.com/llvm/llvm-project/pull/169558 |
+-------------------------------------------------------------+---------------------------+---------------------------+--------------------------------------------------------------------------+

OpenMP Extensions
=================
Expand Down
5 changes: 5 additions & 0 deletions clang/docs/ReleaseNotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ Potentially Breaking Changes
- 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.
- The ``clangFrontend`` library no longer depends on ``clangDriver``, which may
break downstream projects that relied on this transitive dependency.

C/C++ Language Potentially Breaking Changes
-------------------------------------------
Expand Down Expand Up @@ -1010,6 +1012,9 @@ OpenMP Support
- Updated parsing and semantic analysis support for ``nowait`` clause to accept
optional argument in OpenMP >= 60.
- Added support for ``default`` clause on ``target`` directive.
- Added parsing and semantic analysis support for ``need_device_ptr`` modifier
to accept an optional fallback argument (``fb_nullify`` or ``fb_preserve``)
with OpenMP >= 61.

Improvements
^^^^^^^^^^^^
Expand Down
3 changes: 3 additions & 0 deletions clang/include/clang/Basic/DebugOptions.def
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ DEBUGOPT(DebugKeyInstructions, 1, 0, Benign)
DEBUGOPT(DebugColumnInfo, 1, 0, Compatible) ///< Whether or not to use column information
///< in debug info.

/// Whether or not to include call site information in debug info.
DEBUGOPT(DebugCallSiteInfo, 1, 1, Benign)

DEBUGOPT(DebugTypeExtRefs, 1, 0, Compatible) ///< Whether or not debug info should contain
///< external references to a PCH or module.

Expand Down
10 changes: 0 additions & 10 deletions clang/include/clang/Driver/CommonArgs.h
Original file line number Diff line number Diff line change
Expand Up @@ -312,16 +312,6 @@ void handleVectorizeLoopsArgs(const llvm::opt::ArgList &Args,
void handleVectorizeSLPArgs(const llvm::opt::ArgList &Args,
llvm::opt::ArgStringList &CmdArgs);

// Parse -mprefer-vector-width=. Return the Value string if well-formed.
// Otherwise, return an empty string and issue a diagnosic message if needed.
StringRef parseMPreferVectorWidthOption(clang::DiagnosticsEngine &Diags,
const llvm::opt::ArgList &Args);

// Parse -mrecip. Return the Value string if well-formed.
// Otherwise, return an empty string and issue a diagnosic message if needed.
StringRef parseMRecipOption(clang::DiagnosticsEngine &Diags,
const llvm::opt::ArgList &Args);

// Convert ComplexRangeKind to a string that can be passed as a frontend option.
std::string complexRangeKindToStr(LangOptions::ComplexRangeKind Range);

Expand Down
80 changes: 80 additions & 0 deletions clang/include/clang/Driver/CreateASTUnitFromArgs.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
//===-- CreateInvocationFromArgs.h - Create an ASTUnit from Args-*- C++ -*-===//
//
// 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
//
//===----------------------------------------------------------------------===//
//
// Utility for creating an ASTUnit from a vector of command line arguments.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_DRIVER_CREATEASTUNITFROMARGS_H
#define LLVM_CLANG_DRIVER_CREATEASTUNITFROMARGS_H

#include "clang/Frontend/ASTUnit.h"

namespace clang {

/// Create an ASTUnit from a vector of command line arguments, which must
/// specify exactly one source file.
///
/// \param ArgBegin - The beginning of the argument vector.
///
/// \param ArgEnd - The end of the argument vector.
///
/// \param PCHContainerOps - The PCHContainerOperations to use for loading and
/// creating modules.
///
/// \param Diags - The diagnostics engine to use for reporting errors; its
/// lifetime is expected to extend past that of the returned ASTUnit.
///
/// \param ResourceFilesPath - The path to the compiler resource files.
///
/// \param StorePreamblesInMemory - Whether to store PCH in memory. If false,
/// PCH are stored in temporary files.
///
/// \param PreambleStoragePath - The path to a directory, in which to create
/// temporary PCH files. If empty, the default system temporary directory is
/// used. This parameter is ignored if \p StorePreamblesInMemory is true.
///
/// \param ModuleFormat - If provided, uses the specific module format.
///
/// \param ErrAST - If non-null and parsing failed without any AST to return
/// (e.g. because the PCH could not be loaded), this accepts the ASTUnit
/// mainly to allow the caller to see the diagnostics.
///
/// \param VFS - A llvm::vfs::FileSystem to be used for all file accesses.
/// Note that preamble is saved to a temporary directory on a RealFileSystem,
/// so in order for it to be loaded correctly, VFS should have access to
/// it(i.e., be an overlay over RealFileSystem). RealFileSystem will be used
/// if \p VFS is nullptr.
///
// FIXME: Move OnlyLocalDecls, UseBumpAllocator to setters on the ASTUnit, we
// shouldn't need to specify them at construction time.
std::unique_ptr<ASTUnit> CreateASTUnitFromCommandLine(
const char **ArgBegin, const char **ArgEnd,
std::shared_ptr<PCHContainerOperations> PCHContainerOps,
std::shared_ptr<DiagnosticOptions> DiagOpts,
IntrusiveRefCntPtr<DiagnosticsEngine> Diags, StringRef ResourceFilesPath,
bool StorePreamblesInMemory = false,
StringRef PreambleStoragePath = StringRef(), bool OnlyLocalDecls = false,
CaptureDiagsKind CaptureDiagnostics = CaptureDiagsKind::None,
ArrayRef<ASTUnit::RemappedFile> RemappedFiles = {},
bool RemappedFilesKeepOriginalName = true,
unsigned PrecompilePreambleAfterNParses = 0,
TranslationUnitKind TUKind = TU_Complete,
bool CacheCodeCompletionResults = false,
bool IncludeBriefCommentsInCodeCompletion = false,
bool AllowPCHWithCompilerErrors = false,
SkipFunctionBodiesScope SkipFunctionBodies = SkipFunctionBodiesScope::None,
bool SingleFileParse = false, bool UserFilesAreVolatile = false,
bool ForSerialization = false, bool RetainExcludedConditionalBlocks = false,
std::optional<StringRef> ModuleFormat = std::nullopt,
std::unique_ptr<ASTUnit> *ErrAST = nullptr,
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = nullptr);

} // namespace clang

#endif // LLVM_CLANG_DRIVER_CREATEASTUNITFROMARGS_H
76 changes: 76 additions & 0 deletions clang/include/clang/Driver/CreateInvocationFromArgs.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
//===--- CreateInvocationFromArgs.h - CompilerInvocation from Args --------===//
//
// 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
//
//===----------------------------------------------------------------------===//
//
// Utility for creating a CompilerInvocation from command-line arguments, for
// tools to use in preparation to parse a file.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CLANG_DRIVER_CREATEINVOCATIONFROMARGS_H
#define LLVM_CLANG_DRIVER_CREATEINVOCATIONFROMARGS_H

#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/LLVM.h"
#include "llvm/Support/VirtualFileSystem.h"
#include <memory>
#include <string>
#include <vector>

namespace clang {

class CompilerInvocation;
class DiagnosticsEngine;

/// Optional inputs to createInvocation.
struct CreateInvocationOptions {
/// Receives diagnostics encountered while parsing command-line flags.
/// If not provided, these are printed to stderr.
IntrusiveRefCntPtr<DiagnosticsEngine> Diags = nullptr;
/// Used e.g. to probe for system headers locations.
/// If not provided, the real filesystem is used.
/// FIXME: the driver does perform some non-virtualized IO.
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = nullptr;
/// Whether to attempt to produce a non-null (possibly incorrect) invocation
/// if any errors were encountered.
/// By default, always return null on errors.
bool RecoverOnError = false;
/// Allow the driver to probe the filesystem for PCH files.
/// This is used to replace -include with -include-pch in the cc1 args.
/// FIXME: ProbePrecompiled=true is a poor, historical default.
/// It misbehaves if the PCH file is from GCC, has the wrong version, etc.
bool ProbePrecompiled = false;
/// If set, the target is populated with the cc1 args produced by the driver.
/// This may be populated even if createInvocation returns nullptr.
std::vector<std::string> *CC1Args = nullptr;
};

/// Interpret clang arguments in preparation to parse a file.
///
/// This simulates a number of steps Clang takes when its driver is invoked:
/// - choosing actions (e.g compile + link) to run
/// - probing the system for settings like standard library locations
/// - spawning a cc1 subprocess to compile code, with more explicit arguments
/// - in the cc1 process, assembling those arguments into a CompilerInvocation
/// which is used to configure the parser
///
/// This simulation is lossy, e.g. in some situations one driver run would
/// result in multiple parses. (Multi-arch, CUDA, ...).
/// This function tries to select a reasonable invocation that tools should use.
///
/// Args[0] should be the driver name, such as "clang" or "/usr/bin/g++".
/// Absolute path is preferred - this affects searching for system headers.
///
/// May return nullptr if an invocation could not be determined.
/// See CreateInvocationOptions::RecoverOnError to try harder!
std::unique_ptr<CompilerInvocation>
createInvocation(ArrayRef<const char *> Args,
CreateInvocationOptions Opts = {});

} // namespace clang

#endif // LLVM_CLANG_DRIVER_CREATEINVOCATIONFROMARGS_H
4 changes: 0 additions & 4 deletions clang/include/clang/Driver/Driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -412,10 +412,6 @@ class Driver {
SmallString<128> &CrashDiagDir);

public:
/// Takes the path to a binary that's either in bin/ or lib/ and returns
/// the path to clang's resource directory.
static std::string GetResourcesPath(StringRef BinaryPath);

Driver(StringRef ClangExecutable, StringRef TargetTriple,
DiagnosticsEngine &Diags, std::string Title = "clang LLVM compiler",
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS = nullptr);
Expand Down
Loading