Skip to content

Commit 7dc5c63

Browse files
committed
Rebase
Created using spr 1.3.6-beta.1
2 parents da2f682 + d95da39 commit 7dc5c63

File tree

1,896 files changed

+253354
-129918
lines changed

Some content is hidden

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

1,896 files changed

+253354
-129918
lines changed

.ci/metrics/metrics.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,13 @@ def github_get_metrics(
282282
queued_count = collections.Counter()
283283
running_count = collections.Counter()
284284

285+
# Initialize all the counters to 0 so we report 0 when no job is queued
286+
# or running.
287+
for wf_name, wf_metric_name in GITHUB_WORKFLOW_TO_TRACK.items():
288+
for job_name, job_metric_name in GITHUB_JOB_TO_TRACK[wf_metric_name].items():
289+
queued_count[wf_metric_name + "_" + job_metric_name] = 0
290+
running_count[wf_metric_name + "_" + job_metric_name] = 0
291+
285292
# The list of workflows this iteration will process.
286293
# MaxSize = GITHUB_WORKFLOWS_MAX_PROCESS_COUNT
287294
workflow_seen_as_completed = set()

bolt/include/bolt/Core/MCPlusBuilder.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -577,12 +577,12 @@ class MCPlusBuilder {
577577
return getNoRegister();
578578
}
579579

580-
/// Returns the register used as call destination, or no-register, if not
581-
/// an indirect call. Sets IsAuthenticatedInternally if the instruction
582-
/// accepts a signed pointer as its operand and authenticates it internally.
580+
/// Returns the register used as the destination of an indirect branch or call
581+
/// instruction. Sets IsAuthenticatedInternally if the instruction accepts
582+
/// a signed pointer as its operand and authenticates it internally.
583583
virtual MCPhysReg
584-
getRegUsedAsCallDest(const MCInst &Inst,
585-
bool &IsAuthenticatedInternally) const {
584+
getRegUsedAsIndirectBranchDest(const MCInst &Inst,
585+
bool &IsAuthenticatedInternally) const {
586586
llvm_unreachable("not implemented");
587587
return getNoRegister();
588588
}

bolt/lib/Passes/PAuthGadgetScanner.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -498,14 +498,16 @@ static std::shared_ptr<Report>
498498
shouldReportCallGadget(const BinaryContext &BC, const MCInstReference &Inst,
499499
const State &S) {
500500
static const GadgetKind CallKind("non-protected call found");
501-
if (!BC.MIB->isCall(Inst) && !BC.MIB->isBranch(Inst))
501+
if (!BC.MIB->isIndirectCall(Inst) && !BC.MIB->isIndirectBranch(Inst))
502502
return nullptr;
503503

504504
bool IsAuthenticated = false;
505-
MCPhysReg DestReg = BC.MIB->getRegUsedAsCallDest(Inst, IsAuthenticated);
506-
if (IsAuthenticated || DestReg == BC.MIB->getNoRegister())
505+
MCPhysReg DestReg =
506+
BC.MIB->getRegUsedAsIndirectBranchDest(Inst, IsAuthenticated);
507+
if (IsAuthenticated)
507508
return nullptr;
508509

510+
assert(DestReg != BC.MIB->getNoRegister());
509511
LLVM_DEBUG({
510512
traceInst(BC, "Found call inst", Inst);
511513
traceReg(BC, "Call destination reg", DestReg);

bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13+
#include "AArch64InstrInfo.h"
1314
#include "AArch64MCSymbolizer.h"
1415
#include "MCTargetDesc/AArch64AddressingModes.h"
1516
#include "MCTargetDesc/AArch64FixupKinds.h"
@@ -277,15 +278,14 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
277278
}
278279
}
279280

280-
MCPhysReg
281-
getRegUsedAsCallDest(const MCInst &Inst,
282-
bool &IsAuthenticatedInternally) const override {
283-
assert(isCall(Inst) || isBranch(Inst));
284-
IsAuthenticatedInternally = false;
281+
MCPhysReg getRegUsedAsIndirectBranchDest(
282+
const MCInst &Inst, bool &IsAuthenticatedInternally) const override {
283+
assert(isIndirectCall(Inst) || isIndirectBranch(Inst));
285284

286285
switch (Inst.getOpcode()) {
287286
case AArch64::BR:
288287
case AArch64::BLR:
288+
IsAuthenticatedInternally = false;
289289
return Inst.getOperand(0).getReg();
290290
case AArch64::BRAA:
291291
case AArch64::BRAB:
@@ -298,9 +298,7 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
298298
IsAuthenticatedInternally = true;
299299
return Inst.getOperand(0).getReg();
300300
default:
301-
if (isIndirectCall(Inst) || isIndirectBranch(Inst))
302-
llvm_unreachable("Unhandled indirect branch");
303-
return getNoRegister();
301+
llvm_unreachable("Unhandled indirect branch or call");
304302
}
305303
}
306304

@@ -699,7 +697,7 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
699697
}
700698

701699
bool isIndirectCall(const MCInst &Inst) const override {
702-
return Inst.getOpcode() == AArch64::BLR;
700+
return isIndirectCallOpcode(Inst.getOpcode());
703701
}
704702

705703
MCPhysReg getSpRegister(int Size) const {

clang-tools-extra/clang-doc/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ set(LLVM_LINK_COMPONENTS
33
BitstreamReader
44
FrontendOpenMP
55
)
6+
add_subdirectory(support)
67

78
add_clang_library(clangDoc STATIC
89
BitcodeReader.cpp
@@ -23,6 +24,7 @@ add_clang_library(clangDoc STATIC
2324

2425
clang_target_link_libraries(clangDoc
2526
PRIVATE
27+
clangDocSupport
2628
clangAnalysis
2729
clangAST
2830
clangASTMatchers

clang-tools-extra/clang-doc/HTMLGenerator.cpp

Lines changed: 1 addition & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include "Generators.h"
1010
#include "Representation.h"
11+
#include "support/File.h"
1112
#include "clang/Basic/Version.h"
1213
#include "llvm/ADT/StringExtras.h"
1314
#include "llvm/ADT/StringRef.h"
@@ -251,47 +252,6 @@ static void appendVector(std::vector<Derived> &&New,
251252
std::move(New.begin(), New.end(), std::back_inserter(Original));
252253
}
253254

254-
// Compute the relative path from an Origin directory to a Destination directory
255-
static SmallString<128> computeRelativePath(StringRef Destination,
256-
StringRef Origin) {
257-
// If Origin is empty, the relative path to the Destination is its complete
258-
// path.
259-
if (Origin.empty())
260-
return Destination;
261-
262-
// The relative path is an empty path if both directories are the same.
263-
if (Destination == Origin)
264-
return {};
265-
266-
// These iterators iterate through each of their parent directories
267-
llvm::sys::path::const_iterator FileI = llvm::sys::path::begin(Destination);
268-
llvm::sys::path::const_iterator FileE = llvm::sys::path::end(Destination);
269-
llvm::sys::path::const_iterator DirI = llvm::sys::path::begin(Origin);
270-
llvm::sys::path::const_iterator DirE = llvm::sys::path::end(Origin);
271-
// Advance both iterators until the paths differ. Example:
272-
// Destination = A/B/C/D
273-
// Origin = A/B/E/F
274-
// FileI will point to C and DirI to E. The directories behind them is the
275-
// directory they share (A/B).
276-
while (FileI != FileE && DirI != DirE && *FileI == *DirI) {
277-
++FileI;
278-
++DirI;
279-
}
280-
SmallString<128> Result; // This will hold the resulting path.
281-
// Result has to go up one directory for each of the remaining directories in
282-
// Origin
283-
while (DirI != DirE) {
284-
llvm::sys::path::append(Result, "..");
285-
++DirI;
286-
}
287-
// Result has to append each of the remaining directories in Destination
288-
while (FileI != FileE) {
289-
llvm::sys::path::append(Result, *FileI);
290-
++FileI;
291-
}
292-
return Result;
293-
}
294-
295255
// HTML generation
296256

297257
static std::vector<std::unique_ptr<TagNode>>
@@ -1138,23 +1098,6 @@ static llvm::Error genIndex(const ClangDocContext &CDCtx) {
11381098
return llvm::Error::success();
11391099
}
11401100

1141-
static llvm::Error copyFile(StringRef FilePath, StringRef OutDirectory) {
1142-
llvm::SmallString<128> PathWrite;
1143-
llvm::sys::path::native(OutDirectory, PathWrite);
1144-
llvm::sys::path::append(PathWrite, llvm::sys::path::filename(FilePath));
1145-
llvm::SmallString<128> PathRead;
1146-
llvm::sys::path::native(FilePath, PathRead);
1147-
std::error_code OK;
1148-
std::error_code FileErr = llvm::sys::fs::copy_file(PathRead, PathWrite);
1149-
if (FileErr != OK) {
1150-
return llvm::createStringError(llvm::inconvertibleErrorCode(),
1151-
"error creating file " +
1152-
llvm::sys::path::filename(FilePath) +
1153-
": " + FileErr.message() + "\n");
1154-
}
1155-
return llvm::Error::success();
1156-
}
1157-
11581101
llvm::Error HTMLGenerator::createResources(ClangDocContext &CDCtx) {
11591102
auto Err = serializeIndex(CDCtx);
11601103
if (Err)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# clang-doc/support contains support libraries that do not depend
2+
# on clang either programmatically or conceptually.
3+
set(LLVM_LINK_COMPONENTS
4+
Support
5+
)
6+
7+
add_clang_library(clangDocSupport STATIC
8+
File.cpp
9+
)
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
//===----------------------------------------------------------------------===//
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+
#include "File.h"
9+
#include "llvm/Support/FileSystem.h"
10+
#include "llvm/Support/Path.h"
11+
12+
namespace clang {
13+
namespace doc {
14+
15+
llvm::Error copyFile(llvm::StringRef FilePath, llvm::StringRef OutDirectory) {
16+
llvm::SmallString<128> PathWrite;
17+
llvm::sys::path::native(OutDirectory, PathWrite);
18+
llvm::sys::path::append(PathWrite, llvm::sys::path::filename(FilePath));
19+
llvm::SmallString<128> PathRead;
20+
llvm::sys::path::native(FilePath, PathRead);
21+
std::error_code FileErr = llvm::sys::fs::copy_file(PathRead, PathWrite);
22+
if (FileErr) {
23+
return llvm::createStringError(llvm::inconvertibleErrorCode(),
24+
"error creating file " +
25+
llvm::sys::path::filename(FilePath) +
26+
": " + FileErr.message() + "\n");
27+
}
28+
return llvm::Error::success();
29+
}
30+
31+
llvm::SmallString<128> computeRelativePath(llvm::StringRef Destination,
32+
llvm::StringRef Origin) {
33+
// If Origin is empty, the relative path to the Destination is its complete
34+
// path.
35+
if (Origin.empty())
36+
return Destination;
37+
38+
// The relative path is an empty path if both directories are the same.
39+
if (Destination == Origin)
40+
return {};
41+
42+
// These iterators iterate through each of their parent directories
43+
llvm::sys::path::const_iterator FileI = llvm::sys::path::begin(Destination);
44+
llvm::sys::path::const_iterator FileE = llvm::sys::path::end(Destination);
45+
llvm::sys::path::const_iterator DirI = llvm::sys::path::begin(Origin);
46+
llvm::sys::path::const_iterator DirE = llvm::sys::path::end(Origin);
47+
// Advance both iterators until the paths differ. Example:
48+
// Destination = A/B/C/D
49+
// Origin = A/B/E/F
50+
// FileI will point to C and DirI to E. The directories behind them is the
51+
// directory they share (A/B).
52+
while (FileI != FileE && DirI != DirE && *FileI == *DirI) {
53+
++FileI;
54+
++DirI;
55+
}
56+
llvm::SmallString<128> Result; // This will hold the resulting path.
57+
// Result has to go up one directory for each of the remaining directories in
58+
// Origin
59+
while (DirI != DirE) {
60+
llvm::sys::path::append(Result, "..");
61+
++DirI;
62+
}
63+
// Result has to append each of the remaining directories in Destination
64+
while (FileI != FileE) {
65+
llvm::sys::path::append(Result, *FileI);
66+
++FileI;
67+
}
68+
return Result;
69+
}
70+
71+
} // namespace doc
72+
} // namespace clang
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
//===----------------------------------------------------------------------===//
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+
#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_FILE_H
9+
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_FILE_H
10+
11+
#include "llvm/ADT/StringExtras.h"
12+
#include "llvm/Support/Error.h"
13+
14+
namespace clang {
15+
namespace doc {
16+
17+
llvm::Error copyFile(llvm::StringRef FilePath, llvm::StringRef OutDirectory);
18+
19+
llvm::SmallString<128> computeRelativePath(llvm::StringRef Destination,
20+
llvm::StringRef Origin);
21+
22+
} // namespace doc
23+
} // namespace clang
24+
25+
#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_FILE_H

clang-tools-extra/clang-tidy/ClangTidyDiagnosticConsumer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,8 @@ ClangTidyContext::ClangTidyContext(
167167
AllowEnablingAnalyzerAlphaCheckers(AllowEnablingAnalyzerAlphaCheckers),
168168
EnableModuleHeadersParsing(EnableModuleHeadersParsing) {
169169
// Before the first translation unit we can get errors related to command-line
170-
// parsing, use empty string for the file name in this case.
171-
setCurrentFile("");
170+
// parsing, use dummy string for the file name in this case.
171+
setCurrentFile("dummy");
172172
}
173173

174174
ClangTidyContext::~ClangTidyContext() = default;

0 commit comments

Comments
 (0)