Skip to content

Commit 1e45d11

Browse files
authored
Merge branch 'main' into compatible-gcc-align-empty-record
2 parents 4c356e1 + 37aa347 commit 1e45d11

File tree

256 files changed

+8422
-2448
lines changed

Some content is hidden

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

256 files changed

+8422
-2448
lines changed

.ci/generate_test_report_github.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,15 @@
88

99
import generate_test_report_lib
1010

11-
PLATFORM_TITLES = {
12-
"Windows": ":window: Windows x64 Test Results",
13-
"Linux": ":penguin: Linux x64 Test Results",
14-
}
11+
def compute_platform_title() -> str:
12+
logo = ":window:" if platform.system() == "Windows" else ":penguin:"
13+
# On Linux the machine value is x86_64 on Windows it is AMD64.
14+
if platform.machine() == "x86_64" or platform.machine() == "AMD64":
15+
arch = "x64"
16+
else:
17+
arch = platform.machine()
18+
return f"{logo} {platform.system()} {arch} Test Results"
19+
1520

1621
if __name__ == "__main__":
1722
parser = argparse.ArgumentParser()
@@ -22,7 +27,7 @@
2227
args = parser.parse_args()
2328

2429
report = generate_test_report_lib.generate_report_from_files(
25-
PLATFORM_TITLES[platform.system()], args.return_code, args.build_test_logs
30+
compute_platform_title(), args.return_code, args.build_test_logs
2631
)
2732

2833
print(report)

.ci/utils.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ function start-group {
5656
export PIP_BREAK_SYSTEM_PACKAGES=1
5757
pip install -q -r "${MONOREPO_ROOT}"/.ci/all_requirements.txt
5858

59-
if [[ "$GITHUB_ACTIONS" != "" ]]; then
59+
# The ARM64 builders run on AWS and don't have access to the GCS cache.
60+
if [[ "$GITHUB_ACTIONS" != "" ]] && [[ "$RUNNER_ARCH" != "ARM64" ]]; then
6061
python .ci/cache_lit_timing_files.py download
6162
fi

.github/workflows/premerge.yaml

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,45 @@ concurrency:
2424

2525
jobs:
2626
premerge-checks-linux:
27-
name: Build and Test Linux
27+
name: Build and Test Linux${{ (startsWith(matrix.runs-on, 'depot-ubuntu-24.04-arm') && ' AArch64') || '' }}
2828
if: >-
2929
github.repository_owner == 'llvm' &&
3030
(github.event_name != 'pull_request' || github.event.action != 'closed')
31-
runs-on: llvm-premerge-linux-runners
31+
strategy:
32+
fail-fast: false
33+
matrix:
34+
runs-on:
35+
- depot-ubuntu-24.04-arm-16
36+
- llvm-premerge-linux-runners
37+
runs-on: ${{ matrix.runs-on }}
38+
container:
39+
# The llvm-premerge agents are already containers and running the
40+
# this same image, so we can't use a container for the github action
41+
# job. The depot containers are running on VMs, so we can use a
42+
# container. This helps ensure the build environment is as close
43+
# as possible on both the depot runners and the llvm-premerge runners.
44+
image: ${{ (startsWith(matrix.runs-on, 'depot-ubuntu-24.04-arm') && format('ghcr.io/{0}/arm64v8/ci-ubuntu-24.04',github.repository_owner) ) || null }}
45+
# --privileged is needed to run the lldb tests that disable aslr.
46+
# The SCCACHE environment variables are need to be copied from the host
47+
# to the container to make sure it is configured correctly to use the
48+
# depot cache.
49+
options: >-
50+
--privileged
51+
--env SCCACHE_WEBDAV_ENDPOINT
52+
--env SCCACHE_WEBDAV_TOKEN
53+
defaults:
54+
run:
55+
# The run step defaults to using sh as the shell when running in a
56+
# container, so make bash the default to ensure consistency between
57+
# container and non-container jobs.
58+
shell: bash
3259
steps:
3360
- name: Checkout LLVM
3461
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
3562
with:
3663
fetch-depth: 2
3764
- name: Build and Test
65+
continue-on-error: ${{ runner.arch == 'ARM64' }}
3866
run: |
3967
git config --global --add safe.directory '*'
4068
@@ -54,11 +82,16 @@ jobs:
5482
export CC=/opt/llvm/bin/clang
5583
export CXX=/opt/llvm/bin/clang++
5684
57-
# This environment variable is passes into the container through the
58-
# runner pod definition. This differs between our two clusters which
59-
# why we do not hardcode it.
60-
export SCCACHE_GCS_BUCKET=$CACHE_GCS_BUCKET
61-
export SCCACHE_GCS_RW_MODE=READ_WRITE
85+
# The linux-premerge runners are hosted on GCP and have a different
86+
# cache setup than the depot runners.
87+
if [[ "${{ matrix.runs-on }}" = "llvm-premerge-linux-runners" ]]; then
88+
# This environment variable is passes into the container through the
89+
# runner pod definition. This differs between our two clusters which
90+
# why we do not hardcode it.
91+
export SCCACHE_GCS_BUCKET=$CACHE_GCS_BUCKET
92+
export SCCACHE_GCS_RW_MODE=READ_WRITE
93+
fi
94+
env
6295
6396
# Set the idle timeout to zero to ensure sccache runs for the
6497
# entire duration of the job. Otherwise it might stop if we run
@@ -78,7 +111,7 @@ jobs:
78111
if: '!cancelled()'
79112
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
80113
with:
81-
name: Premerge Artifacts (Linux)
114+
name: Premerge Artifacts (Linux ${{ runner.arch }})
82115
path: artifacts/
83116
retention-days: 5
84117
include-hidden-files: 'true'

bolt/lib/Rewrite/RewriteInstance.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1514,6 +1514,12 @@ void RewriteInstance::registerFragments() {
15141514
}
15151515
if (BD) {
15161516
BinaryFunction *BF = BC->getFunctionForSymbol(BD->getSymbol());
1517+
if (BF == &Function) {
1518+
BC->errs()
1519+
<< "BOLT-WARNING: fragment maps to the same function as parent: "
1520+
<< Function << '\n';
1521+
continue;
1522+
}
15171523
if (BF) {
15181524
BC->registerFragment(Function, *BF);
15191525
continue;
@@ -4005,10 +4011,12 @@ void RewriteInstance::mapCodeSections(BOLTLinker::SectionMapper MapSection) {
40054011
BC->outs() << '\n';
40064012
AllocationDone = true;
40074013
} else {
4008-
BC->errs() << "BOLT-WARNING: original .text too small to fit the new code"
4009-
<< " using 0x" << Twine::utohexstr(opts::AlignText)
4010-
<< " alignment. " << CodeSize << " bytes needed, have "
4011-
<< BC->OldTextSectionSize << " bytes available.\n";
4014+
BC->errs() << "BOLT-WARNING: --use-old-text failed. The original .text "
4015+
"too small to fit the new code using 0x"
4016+
<< Twine::utohexstr(opts::AlignText) << " alignment. "
4017+
<< CodeSize << " bytes needed, have " << BC->OldTextSectionSize
4018+
<< " bytes available. Rebuilding without --use-old-text may "
4019+
"produce a smaller binary\n";
40124020
opts::UseOldText = false;
40134021
}
40144022
}

bolt/test/X86/fragment-alias.s

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## This test reproduces the issue where a fragment has the same address as
2+
## parent function.
3+
# RUN: llvm-mc --filetype=obj --triple x86_64-unknown-unknown %s -o %t.o
4+
# RUN: %clang %cflags %t.o -o %t
5+
# RUN: llvm-bolt %t -o %t.out 2>&1 | FileCheck %s
6+
# CHECK: BOLT-WARNING: fragment maps to the same function as parent: main/1(*2)
7+
.type main, @function
8+
.type main.cold, @function
9+
main.cold:
10+
main:
11+
ret
12+
.size main, .-main
13+
.size main.cold, .-main.cold

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

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,22 @@ class MustacheHTMLGenerator : public Generator {
4646
const ClangDocContext &CDCtx) override;
4747
};
4848

49-
class MustacheTemplateFile : public Template {
49+
class MustacheTemplateFile {
50+
BumpPtrAllocator Allocator;
51+
StringSaver Saver;
52+
MustacheContext Ctx;
53+
Template T;
54+
std::unique_ptr<MemoryBuffer> Buffer;
55+
5056
public:
5157
static Expected<std::unique_ptr<MustacheTemplateFile>>
5258
createMustacheFile(StringRef FileName) {
5359
ErrorOr<std::unique_ptr<MemoryBuffer>> BufferOrError =
5460
MemoryBuffer::getFile(FileName);
5561
if (auto EC = BufferOrError.getError())
5662
return createFileOpenError(FileName, EC);
57-
58-
std::unique_ptr<MemoryBuffer> Buffer = std::move(BufferOrError.get());
59-
StringRef FileContent = Buffer->getBuffer();
60-
return std::make_unique<MustacheTemplateFile>(FileContent);
63+
return std::make_unique<MustacheTemplateFile>(
64+
std::move(BufferOrError.get()));
6165
}
6266

6367
Error registerPartialFile(StringRef Name, StringRef FileName) {
@@ -68,11 +72,15 @@ class MustacheTemplateFile : public Template {
6872

6973
std::unique_ptr<MemoryBuffer> Buffer = std::move(BufferOrError.get());
7074
StringRef FileContent = Buffer->getBuffer();
71-
registerPartial(Name.str(), FileContent.str());
75+
T.registerPartial(Name.str(), FileContent.str());
7276
return Error::success();
7377
}
7478

75-
MustacheTemplateFile(StringRef TemplateStr) : Template(TemplateStr) {}
79+
void render(json::Value &V, raw_ostream &OS) { T.render(V, OS); }
80+
81+
MustacheTemplateFile(std::unique_ptr<MemoryBuffer> &&B)
82+
: Saver(Allocator), Ctx(Allocator, Saver), T(B->getBuffer(), Ctx),
83+
Buffer(std::move(B)) {}
7684
};
7785

7886
static std::unique_ptr<MustacheTemplateFile> NamespaceTemplate = nullptr;

clang-tools-extra/clang-tidy/objc/PropertyDeclarationCheck.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,11 @@ static FixItHint generateFixItHint(const ObjCPropertyDecl *Decl,
3939
auto NewName = Decl->getName().str();
4040
size_t Index = 0;
4141
if (Style == CategoryProperty) {
42-
Index = Name.find_first_of('_') + 1;
43-
NewName.replace(0, Index - 1, Name.substr(0, Index - 1).lower());
42+
size_t UnderScorePos = Name.find_first_of('_');
43+
if (UnderScorePos != llvm::StringRef::npos) {
44+
Index = UnderScorePos + 1;
45+
NewName.replace(0, Index - 1, Name.substr(0, Index - 1).lower());
46+
}
4447
}
4548
if (Index < Name.size()) {
4649
NewName[Index] = tolower(NewName[Index]);

clang-tools-extra/docs/clang-tidy/checks/list.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ Clang-Tidy Checks
372372
:doc:`readability-avoid-nested-conditional-operator <readability/avoid-nested-conditional-operator>`,
373373
:doc:`readability-avoid-return-with-void-value <readability/avoid-return-with-void-value>`, "Yes"
374374
:doc:`readability-avoid-unconditional-preprocessor-if <readability/avoid-unconditional-preprocessor-if>`,
375-
:doc:`readability-braces-around-statements <readability/braces-around-statements>`,
375+
:doc:`readability-braces-around-statements <readability/braces-around-statements>`, "Yes"
376376
:doc:`readability-const-return-type <readability/const-return-type>`, "Yes"
377377
:doc:`readability-container-contains <readability/container-contains>`, "Yes"
378378
:doc:`readability-container-data-pointer <readability/container-data-pointer>`, "Yes"
@@ -571,12 +571,12 @@ Check aliases
571571
:doc:`cppcoreguidelines-non-private-member-variables-in-classes <cppcoreguidelines/non-private-member-variables-in-classes>`, :doc:`misc-non-private-member-variables-in-classes <misc/non-private-member-variables-in-classes>`,
572572
:doc:`cppcoreguidelines-use-default-member-init <cppcoreguidelines/use-default-member-init>`, :doc:`modernize-use-default-member-init <modernize/use-default-member-init>`, "Yes"
573573
:doc:`fuchsia-header-anon-namespaces <fuchsia/header-anon-namespaces>`, :doc:`google-build-namespaces <google/build-namespaces>`,
574-
:doc:`google-readability-braces-around-statements <google/readability-braces-around-statements>`, :doc:`readability-braces-around-statements <readability/braces-around-statements>`,
574+
:doc:`google-readability-braces-around-statements <google/readability-braces-around-statements>`, :doc:`readability-braces-around-statements <readability/braces-around-statements>`, "Yes"
575575
:doc:`google-readability-function-size <google/readability-function-size>`, :doc:`readability-function-size <readability/function-size>`,
576576
:doc:`google-readability-namespace-comments <google/readability-namespace-comments>`, :doc:`llvm-namespace-comment <llvm/namespace-comment>`,
577577
:doc:`hicpp-avoid-c-arrays <hicpp/avoid-c-arrays>`, :doc:`modernize-avoid-c-arrays <modernize/avoid-c-arrays>`,
578578
:doc:`hicpp-avoid-goto <hicpp/avoid-goto>`, :doc:`cppcoreguidelines-avoid-goto <cppcoreguidelines/avoid-goto>`,
579-
:doc:`hicpp-braces-around-statements <hicpp/braces-around-statements>`, :doc:`readability-braces-around-statements <readability/braces-around-statements>`,
579+
:doc:`hicpp-braces-around-statements <hicpp/braces-around-statements>`, :doc:`readability-braces-around-statements <readability/braces-around-statements>`, "Yes"
580580
:doc:`hicpp-deprecated-headers <hicpp/deprecated-headers>`, :doc:`modernize-deprecated-headers <modernize/deprecated-headers>`, "Yes"
581581
:doc:`hicpp-explicit-conversions <hicpp/explicit-conversions>`, :doc:`google-explicit-constructor <google/explicit-constructor>`, "Yes"
582582
:doc:`hicpp-function-size <hicpp/function-size>`, :doc:`readability-function-size <readability/function-size>`,

0 commit comments

Comments
 (0)