Skip to content

Commit c543643

Browse files
committed
merge main into amd-staging
revert: stacked on SPIRV patches a22578d ConstraintElim: teach fact-transfer about samesign (llvm#115893) Change-Id: If585e91c8cf2ac18d204be5564131956b18f14e8
2 parents 98abacc + e339f0a commit c543643

File tree

2,301 files changed

+3896
-3477
lines changed

Some content is hidden

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

2,301 files changed

+3896
-3477
lines changed

clang-tools-extra/clangd/index/SymbolCollector.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -550,9 +550,14 @@ bool SymbolCollector::shouldCollectSymbol(const NamedDecl &ND,
550550
// Avoid indexing internal symbols in protobuf generated headers.
551551
if (isPrivateProtoDecl(ND))
552552
return false;
553+
554+
// System headers that end with `intrin.h` likely contain useful symbols.
553555
if (!Opts.CollectReserved &&
554556
(hasReservedName(ND) || hasReservedScope(*ND.getDeclContext())) &&
555-
ASTCtx.getSourceManager().isInSystemHeader(ND.getLocation()))
557+
ASTCtx.getSourceManager().isInSystemHeader(ND.getLocation()) &&
558+
!ASTCtx.getSourceManager()
559+
.getFilename(ND.getLocation())
560+
.ends_with("intrin.h"))
556561
return false;
557562

558563
return true;

clang-tools-extra/clangd/unittests/SymbolCollectorTests.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2111,6 +2111,20 @@ TEST_F(SymbolCollectorTest, Reserved) {
21112111
EXPECT_THAT(Symbols, IsEmpty());
21122112
}
21132113

2114+
TEST_F(SymbolCollectorTest, ReservedSymbolInIntrinsicHeader) {
2115+
const char *Header = R"cpp(
2116+
#pragma once
2117+
void __foo();
2118+
)cpp";
2119+
2120+
TestHeaderName = "xintrin.h";
2121+
TestHeaderURI = URI::create(testPath(TestHeaderName)).toString();
2122+
InMemoryFileSystem = new llvm::vfs::InMemoryFileSystem;
2123+
CollectorOpts.FallbackDir = testRoot();
2124+
runSymbolCollector("#pragma GCC system_header\n" + std::string(Header), "");
2125+
EXPECT_THAT(Symbols, UnorderedElementsAre(qName("__foo")));
2126+
}
2127+
21142128
TEST_F(SymbolCollectorTest, Concepts) {
21152129
const char *Header = R"cpp(
21162130
template <class T>

clang/lib/Driver/ToolChains/CommonArgs.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1561,7 +1561,6 @@ void tools::addAsNeededOption(const ToolChain &TC,
15611561

15621562
void tools::linkSanitizerRuntimeDeps(const ToolChain &TC,
15631563
const llvm::opt::ArgList &Args,
1564-
const SanitizerArgs &SanArgs,
15651564
ArgStringList &CmdArgs) {
15661565
// Force linking against the system libraries sanitizers depends on
15671566
// (see PR15823 why this is necessary).
@@ -1588,18 +1587,18 @@ void tools::linkSanitizerRuntimeDeps(const ToolChain &TC,
15881587
// libresolv.a, even if exists, is an empty archive to satisfy POSIX -lresolv
15891588
// requirement.
15901589
if (TC.getTriple().isOSLinux() && !TC.getTriple().isAndroid() &&
1591-
!TC.getTriple().isMusl() && SanArgs.needsMsanRt())
1590+
!TC.getTriple().isMusl())
15921591
CmdArgs.push_back("-lresolv");
15931592
}
15941593

15951594
static void
15961595
collectSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
1597-
const SanitizerArgs &SanArgs,
15981596
SmallVectorImpl<StringRef> &SharedRuntimes,
15991597
SmallVectorImpl<StringRef> &StaticRuntimes,
16001598
SmallVectorImpl<StringRef> &NonWholeStaticRuntimes,
16011599
SmallVectorImpl<StringRef> &HelperStaticRuntimes,
16021600
SmallVectorImpl<StringRef> &RequiredSymbols) {
1601+
const SanitizerArgs &SanArgs = TC.getSanitizerArgs(Args);
16031602
// Collect shared runtimes.
16041603
if (SanArgs.needsSharedRt()) {
16051604
if (SanArgs.needsAsanRt()) {
@@ -1733,12 +1732,12 @@ collectSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
17331732
// Should be called before we add system libraries (C++ ABI, libstdc++/libc++,
17341733
// C runtime, etc). Returns true if sanitizer system deps need to be linked in.
17351734
bool tools::addSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
1736-
const SanitizerArgs &SanArgs,
17371735
ArgStringList &CmdArgs) {
1736+
const SanitizerArgs &SanArgs = TC.getSanitizerArgs(Args);
17381737
SmallVector<StringRef, 4> SharedRuntimes, StaticRuntimes,
17391738
NonWholeStaticRuntimes, HelperStaticRuntimes, RequiredSymbols;
17401739
if (SanArgs.linkRuntimes()) {
1741-
collectSanitizerRuntimes(TC, Args, SanArgs, SharedRuntimes, StaticRuntimes,
1740+
collectSanitizerRuntimes(TC, Args, SharedRuntimes, StaticRuntimes,
17421741
NonWholeStaticRuntimes, HelperStaticRuntimes,
17431742
RequiredSymbols);
17441743
}

clang/lib/Driver/ToolChains/CommonArgs.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,10 @@ void addLinkerCompressDebugSectionsOption(const ToolChain &TC,
4141
void claimNoWarnArgs(const llvm::opt::ArgList &Args);
4242

4343
bool addSanitizerRuntimes(const ToolChain &TC, const llvm::opt::ArgList &Args,
44-
const SanitizerArgs &SanArgs,
4544
llvm::opt::ArgStringList &CmdArgs);
4645

4746
void linkSanitizerRuntimeDeps(const ToolChain &TC,
4847
const llvm::opt::ArgList &Args,
49-
const SanitizerArgs &SanArgs,
5048
llvm::opt::ArgStringList &CmdArgs);
5149

5250
bool addXRayRuntime(const ToolChain &TC, const llvm::opt::ArgList &Args,

clang/lib/Driver/ToolChains/FreeBSD.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -297,9 +297,7 @@ void freebsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
297297
D.getLTOMode() == LTOK_Thin);
298298
}
299299

300-
const SanitizerArgs &SanArgs = ToolChain.getSanitizerArgs(Args);
301-
bool NeedsSanitizerDeps =
302-
addSanitizerRuntimes(ToolChain, Args, SanArgs, CmdArgs);
300+
bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
303301
bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs);
304302
addLinkerCompressDebugSectionsOption(ToolChain, Args, CmdArgs);
305303
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
@@ -340,7 +338,7 @@ void freebsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
340338
}
341339

342340
if (NeedsSanitizerDeps)
343-
linkSanitizerRuntimeDeps(ToolChain, Args, SanArgs, CmdArgs);
341+
linkSanitizerRuntimeDeps(ToolChain, Args, CmdArgs);
344342
if (NeedsXRayDeps)
345343
linkXRayRuntimeDeps(ToolChain, Args, CmdArgs);
346344
// FIXME: For some reason GCC passes -lgcc and -lgcc_s before adding

clang/lib/Driver/ToolChains/Fuchsia.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -184,8 +184,7 @@ void fuchsia::Linker::ConstructJob(Compilation &C, const JobAction &JA,
184184
// Note that Fuchsia never needs to link in sanitizer runtime deps. Any
185185
// sanitizer runtimes with system dependencies use the `.deplibs` feature
186186
// instead.
187-
const SanitizerArgs &SanArgs = ToolChain.getSanitizerArgs(Args);
188-
addSanitizerRuntimes(ToolChain, Args, SanArgs, CmdArgs);
187+
addSanitizerRuntimes(ToolChain, Args, CmdArgs);
189188

190189
addXRayRuntime(ToolChain, Args, CmdArgs);
191190

@@ -318,9 +317,10 @@ Fuchsia::Fuchsia(const Driver &D, const llvm::Triple &Triple,
318317
Args.hasFlag(options::OPT_fexceptions, options::OPT_fno_exceptions, true);
319318
addMultilibFlag(Exceptions, "-fexceptions", Flags);
320319
addMultilibFlag(!Exceptions, "-fno-exceptions", Flags);
321-
const SanitizerArgs &SanArgs = getSanitizerArgs(Args);
322-
addMultilibFlag(SanArgs.needsAsanRt(), "-fsanitize=address", Flags);
323-
addMultilibFlag(SanArgs.needsHwasanRt(), "-fsanitize=hwaddress", Flags);
320+
addMultilibFlag(getSanitizerArgs(Args).needsAsanRt(), "-fsanitize=address",
321+
Flags);
322+
addMultilibFlag(getSanitizerArgs(Args).needsHwasanRt(),
323+
"-fsanitize=hwaddress", Flags);
324324

325325
addMultilibFlag(Args.getLastArgValue(options::OPT_fcxx_abi_EQ) == "itanium",
326326
"-fc++-abi=itanium", Flags);

clang/lib/Driver/ToolChains/Gnu.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
#include "clang/Driver/DriverDiagnostic.h"
2424
#include "clang/Driver/MultilibBuilder.h"
2525
#include "clang/Driver/Options.h"
26-
#include "clang/Driver/SanitizerArgs.h"
2726
#include "clang/Driver/Tool.h"
2827
#include "clang/Driver/ToolChain.h"
2928
#include "llvm/ADT/StringSet.h"
@@ -550,9 +549,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
550549
if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle))
551550
CmdArgs.push_back("--no-demangle");
552551

553-
const SanitizerArgs &SanArgs = ToolChain.getSanitizerArgs(Args);
554-
bool NeedsSanitizerDeps =
555-
addSanitizerRuntimes(ToolChain, Args, SanArgs, CmdArgs);
552+
bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
556553
bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs);
557554
addLinkerCompressDebugSectionsOption(ToolChain, Args, CmdArgs);
558555
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
@@ -597,7 +594,7 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
597594
CmdArgs.push_back("--start-group");
598595

599596
if (NeedsSanitizerDeps)
600-
linkSanitizerRuntimeDeps(ToolChain, Args, SanArgs, CmdArgs);
597+
linkSanitizerRuntimeDeps(ToolChain, Args, CmdArgs);
601598

602599
if (NeedsXRayDeps)
603600
linkXRayRuntimeDeps(ToolChain, Args, CmdArgs);

clang/lib/Driver/ToolChains/Hexagon.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
#include "clang/Driver/DriverDiagnostic.h"
1414
#include "clang/Driver/InputInfo.h"
1515
#include "clang/Driver/Options.h"
16-
#include "clang/Driver/SanitizerArgs.h"
1716
#include "llvm/ADT/StringExtras.h"
1817
#include "llvm/Option/ArgList.h"
1918
#include "llvm/Support/FileSystem.h"
@@ -216,8 +215,7 @@ void hexagon::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
216215
"-mcpu=hexagon" +
217216
toolchains::HexagonToolChain::GetTargetCPUVersion(Args)));
218217

219-
SanitizerArgs SanArgs = HTC.getSanitizerArgs(Args);
220-
addSanitizerRuntimes(HTC, Args, SanArgs, CmdArgs);
218+
addSanitizerRuntimes(HTC, Args, CmdArgs);
221219

222220
assert((Output.isFilename() || Output.isNothing()) && "Invalid output.");
223221
if (Output.isFilename()) {
@@ -303,8 +301,7 @@ constructHexagonLinkArgs(Compilation &C, const JobAction &JA,
303301
bool UseShared = IsShared && !IsStatic;
304302
StringRef CpuVer = toolchains::HexagonToolChain::GetTargetCPUVersion(Args);
305303

306-
const SanitizerArgs &SanArgs = HTC.getSanitizerArgs(Args);
307-
bool NeedsSanitizerDeps = addSanitizerRuntimes(HTC, Args, SanArgs, CmdArgs);
304+
bool NeedsSanitizerDeps = addSanitizerRuntimes(HTC, Args, CmdArgs);
308305
bool NeedsXRayDeps = addXRayRuntime(HTC, Args, CmdArgs);
309306

310307
//----------------------------------------------------------------------------
@@ -374,7 +371,7 @@ constructHexagonLinkArgs(Compilation &C, const JobAction &JA,
374371

375372
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
376373
if (NeedsSanitizerDeps) {
377-
linkSanitizerRuntimeDeps(HTC, Args, SanArgs, CmdArgs);
374+
linkSanitizerRuntimeDeps(HTC, Args, CmdArgs);
378375

379376
if (UNW != ToolChain::UNW_None)
380377
CmdArgs.push_back("-lunwind");

clang/lib/Driver/ToolChains/NetBSD.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -274,12 +274,11 @@ void netbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
274274
options::OPT_s, options::OPT_t});
275275
ToolChain.AddFilePathLibArgs(Args, CmdArgs);
276276

277-
const SanitizerArgs &SanArgs = ToolChain.getSanitizerArgs(Args);
278-
bool NeedsSanitizerDeps =
279-
addSanitizerRuntimes(ToolChain, Args, SanArgs, CmdArgs);
277+
bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
280278
bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs);
281279
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
282280

281+
const SanitizerArgs &SanArgs = ToolChain.getSanitizerArgs(Args);
283282
if (SanArgs.needsSharedRt()) {
284283
CmdArgs.push_back("-rpath");
285284
CmdArgs.push_back(Args.MakeArgString(ToolChain.getCompilerRTPath()));
@@ -335,7 +334,7 @@ void netbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
335334
}
336335

337336
if (NeedsSanitizerDeps)
338-
linkSanitizerRuntimeDeps(ToolChain, Args, SanArgs, CmdArgs);
337+
linkSanitizerRuntimeDeps(ToolChain, Args, CmdArgs);
339338
if (NeedsXRayDeps)
340339
linkXRayRuntimeDeps(ToolChain, Args, CmdArgs);
341340
if (Args.hasArg(options::OPT_pthread))

clang/lib/Driver/ToolChains/OpenBSD.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,7 @@ void openbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
213213
D.getLTOMode() == LTOK_Thin);
214214
}
215215

216-
const SanitizerArgs &SanArgs = ToolChain.getSanitizerArgs(Args);
217-
bool NeedsSanitizerDeps =
218-
addSanitizerRuntimes(ToolChain, Args, SanArgs, CmdArgs);
216+
bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
219217
bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs);
220218
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
221219

@@ -253,7 +251,7 @@ void openbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
253251

254252
if (NeedsSanitizerDeps) {
255253
CmdArgs.push_back(ToolChain.getCompilerRTArgString(Args, "builtins"));
256-
linkSanitizerRuntimeDeps(ToolChain, Args, SanArgs, CmdArgs);
254+
linkSanitizerRuntimeDeps(ToolChain, Args, CmdArgs);
257255
}
258256
if (NeedsXRayDeps) {
259257
CmdArgs.push_back(ToolChain.getCompilerRTArgString(Args, "builtins"));

clang/lib/Driver/ToolChains/Solaris.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,7 @@ void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA,
203203

204204
Args.addAllArgs(CmdArgs, {options::OPT_L, options::OPT_T_Group});
205205

206-
const SanitizerArgs &SA = ToolChain.getSanitizerArgs(Args);
207-
bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, SA, CmdArgs);
206+
bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
208207
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs, JA);
209208

210209
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs,
@@ -251,8 +250,9 @@ void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA,
251250
if (!Args.hasArg(options::OPT_shared)) {
252251
CmdArgs.push_back("-lgcc");
253252
}
253+
const SanitizerArgs &SA = ToolChain.getSanitizerArgs(Args);
254254
if (NeedsSanitizerDeps) {
255-
linkSanitizerRuntimeDeps(ToolChain, Args, SA, CmdArgs);
255+
linkSanitizerRuntimeDeps(ToolChain, Args, CmdArgs);
256256

257257
// Work around Solaris/amd64 ld bug when calling __tls_get_addr directly.
258258
// However, ld -z relax=transtls is available since Solaris 11.2, but not

0 commit comments

Comments
 (0)