Skip to content

Commit bb08587

Browse files
authored
Merge branch 'main' into aarch64-ci
2 parents 4201876 + 009da92 commit bb08587

File tree

972 files changed

+29757
-15253
lines changed

Some content is hidden

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

972 files changed

+29757
-15253
lines changed

.ci/all_requirements.txt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -194,10 +194,6 @@ ml-dtypes==0.5.1 ; python_version < "3.13" \
194194
--hash=sha256:d13755f8e8445b3870114e5b6240facaa7cb0c3361e54beba3e07fa912a6e12b \
195195
--hash=sha256:fd918d4e6a4e0c110e2e05be7a7814d10dc1b95872accbf6512b80a109b71ae1
196196
# via -r mlir/python/requirements.txt
197-
nanobind==2.9.2 \
198-
--hash=sha256:c37957ffd5eac7eda349cff3622ecd32e5ee1244ecc912c99b5bc8188bafd16e \
199-
--hash=sha256:e7608472de99d375759814cab3e2c94aba3f9ec80e62cfef8ced495ca5c27d6e
200-
# via -r mlir/python/requirements.txt
201197
numpy==2.0.2 \
202198
--hash=sha256:0123ffdaa88fa4ab64835dcbde75dcdf89c453c922f18dced6e27c90d1d0ec5a \
203199
--hash=sha256:11a76c372d1d37437857280aa142086476136a8c0f373b2e648ab2c8f18fb195 \
@@ -299,10 +295,6 @@ pyasn1-modules==0.4.2 \
299295
--hash=sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a \
300296
--hash=sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6
301297
# via google-auth
302-
pybind11==2.13.6 \
303-
--hash=sha256:237c41e29157b962835d356b370ededd57594a26d5894a795960f0047cb5caf5 \
304-
--hash=sha256:ba6af10348c12b24e92fa086b39cfba0eff619b61ac77c406167d813b096d39a
305-
# via -r mlir/python/requirements.txt
306298
pyyaml==6.0.1 \
307299
--hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \
308300
--hash=sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc \

.github/new-prs-labeler.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,3 +1121,6 @@ tablegen:
11211121
- llvm/include/TableGen/**
11221122
- llvm/lib/TableGen/**
11231123
- llvm/utils/TableGen/**
1124+
1125+
infrastructure:
1126+
- .ci/**
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
name: Build CI Container
2+
3+
permissions:
4+
contents: read
5+
6+
on:
7+
push:
8+
branches:
9+
- main
10+
paths:
11+
- .github/workflows/build-ci-container-tooling.yml
12+
- '.github/workflows/containers/github-action-ci-tooling/**'
13+
- llvm/utils/git/requirements_formatting.txt
14+
- llvm/utils/git/requirements_linting.txt
15+
pull_request:
16+
paths:
17+
- .github/workflows/build-ci-container-tooling.yml
18+
- '.github/workflows/containers/github-action-ci-tooling/**'
19+
- llvm/utils/git/requirements_formatting.txt
20+
- llvm/utils/git/requirements_linting.txt
21+
22+
jobs:
23+
build-ci-container-tooling:
24+
if: github.repository_owner == 'llvm'
25+
runs-on: ubuntu-24.04
26+
steps:
27+
- name: Checkout LLVM
28+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
29+
with:
30+
sparse-checkout: |
31+
.github/workflows/containers/github-action-ci-tooling/
32+
llvm/utils/git/requirements_formatting.txt
33+
llvm/utils/git/requirements_linting.txt
34+
clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py
35+
36+
- name: Write Variables
37+
id: vars
38+
run: |
39+
tag=$(git rev-parse --short=12 HEAD)
40+
container_name="ghcr.io/$GITHUB_REPOSITORY_OWNER/amd64/ci-ubuntu-24.04"
41+
echo "container-name-format=$container_name-code-format" >> $GITHUB_OUTPUT
42+
echo "container-name-lint=$container_name-code-lint" >> $GITHUB_OUTPUT
43+
echo "container-name-format-tag=$container_name-format:$tag" >> $GITHUB_OUTPUT
44+
echo "container-name-lint-tag=$container_name-lint:$tag" >> $GITHUB_OUTPUT
45+
echo "container-format-filename=$(echo $container_name-format:$tag | sed -e 's/\//-/g' -e 's/:/-/g').tar" >> $GITHUB_OUTPUT
46+
echo "container-lint-filename=$(echo $container_name-lint:$tag | sed -e 's/\//-/g' -e 's/:/-/g').tar" >> $GITHUB_OUTPUT
47+
48+
- name: Build container
49+
run: |
50+
podman build --target ci-container-code-format \
51+
-f .github/workflows/containers/github-action-ci-tooling/Dockerfile \
52+
-t ${{ steps.vars.outputs.container-name-format-tag }} .
53+
podman build --target ci-container-code-lint \
54+
-f .github/workflows/containers/github-action-ci-tooling/Dockerfile \
55+
-t ${{ steps.vars.outputs.container-name-lint-tag }} .
56+
57+
# Save the container so we have it in case the push fails. This also
58+
# allows us to separate the push step into a different job so we can
59+
# maintain minimal permissions while building the container.
60+
- name: Save container image
61+
run: |
62+
podman save ${{ steps.vars.outputs.container-name-format-tag }} > ${{ steps.vars.outputs.container-format-filename }}
63+
podman save ${{ steps.vars.outputs.container-name-lint-tag }} > ${{ steps.vars.outputs.container-lint-filename }}
64+
65+
- name: Upload container image
66+
uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0
67+
with:
68+
name: container-amd64
69+
path: "*.tar"
70+
retention-days: 14
71+
72+
- name: Test Container
73+
run: |
74+
# Use --pull=never to ensure we are testing the just built image.
75+
podman run --pull=never --rm -it ${{ steps.vars.outputs.container-name-format-tag }} /usr/bin/bash -x -c 'cd $HOME && clang-format --version | grep version && black --version | grep black'
76+
podman run --pull=never --rm -it ${{ steps.vars.outputs.container-name-lint-tag }} /usr/bin/bash -x -c 'cd $HOME && clang-tidy --version | grep version && clang-tidy-diff.py -h | grep usage'
77+
78+
push-ci-container:
79+
if: github.event_name == 'push'
80+
needs:
81+
- build-ci-container-tooling
82+
permissions:
83+
packages: write
84+
runs-on: ubuntu-24.04
85+
env:
86+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
87+
steps:
88+
- name: Download container
89+
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
90+
91+
- name: Push Container
92+
run: |
93+
function push_container {
94+
image_name=$1
95+
latest_name=$(echo $image_name | sed 's/:[a-f0-9]\+$/:latest/g')
96+
podman tag $image_name $latest_name
97+
echo "Pushing $image_name ..."
98+
podman push $image_name
99+
echo "Pushing $latest_name ..."
100+
podman push $latest_name
101+
}
102+
103+
podman login -u ${{ github.actor }} -p $GITHUB_TOKEN ghcr.io
104+
for f in $(find . -iname *.tar); do
105+
image_name=$(podman load -q -i $f | sed 's/Loaded image: //g')
106+
push_container $image_name
107+
108+
if echo $image_name | grep '/amd64/'; then
109+
# For amd64, create an alias with the arch component removed.
110+
# This matches the convention used on dockerhub.
111+
default_image_name=$(echo $(dirname $(dirname $image_name))/$(basename $image_name))
112+
podman tag $image_name $default_image_name
113+
push_container $default_image_name
114+
fi
115+
done
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
ARG LLVM_VERSION=21.1.0
2+
3+
FROM docker.io/library/ubuntu:24.04 AS llvm-downloader
4+
ARG LLVM_VERSION
5+
6+
RUN apt-get update && \
7+
apt-get install -y wget xz-utils && \
8+
wget -O llvm.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/LLVM-${LLVM_VERSION}-Linux-X64.tar.xz && \
9+
mkdir -p /llvm-extract && \
10+
tar -xvJf llvm.tar.xz -C /llvm-extract \
11+
# Only unpack these tools to save space on Github runner.
12+
LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-tidy \
13+
LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-format && \
14+
rm llvm.tar.xz
15+
16+
17+
FROM docker.io/library/ubuntu:24.04 AS base
18+
ENV LLVM_SYSROOT=/opt/llvm
19+
20+
# Need nodejs for some of the GitHub actions.
21+
# Need git for git-clang-format.
22+
RUN apt-get update && \
23+
DEBIAN_FRONTEND=noninteractive apt-get install -y \
24+
git \
25+
nodejs \
26+
sudo \
27+
# These are needed by the premerge pipeline.
28+
# Pip is used to install dependent python packages.
29+
python3-pip \
30+
python-is-python3 && \
31+
apt-get clean && \
32+
rm -rf /var/lib/apt/lists/*
33+
34+
35+
FROM base AS ci-container-code-format
36+
ARG LLVM_VERSION
37+
38+
COPY --from=llvm-downloader /llvm-extract/LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-format ${LLVM_SYSROOT}/bin/clang-format
39+
40+
ENV PATH=${LLVM_SYSROOT}/bin:${PATH}
41+
42+
# Install dependencies for 'pr-code-format.yml' job
43+
COPY llvm/utils/git/requirements_formatting.txt requirements_formatting.txt
44+
RUN pip install -r requirements_formatting.txt --break-system-packages && \
45+
rm requirements_formatting.txt
46+
47+
48+
FROM base AS ci-container-code-lint
49+
ARG LLVM_VERSION
50+
51+
COPY --from=llvm-downloader /llvm-extract/LLVM-${LLVM_VERSION}-Linux-X64/bin/clang-tidy ${LLVM_SYSROOT}/bin/
52+
COPY clang-tools-extra/clang-tidy/tool/clang-tidy-diff.py ${LLVM_SYSROOT}/bin/clang-tidy-diff.py
53+
54+
ENV PATH=${LLVM_SYSROOT}/bin:${PATH}
55+
56+
# Install dependencies for 'pr-code-lint.yml' job
57+
COPY llvm/utils/git/requirements_linting.txt requirements_linting.txt
58+
RUN pip install -r requirements_linting.txt --break-system-packages && \
59+
rm requirements_linting.txt

.github/workflows/libcxx-build-and-test.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,6 @@ jobs:
255255
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
256256
- name: Install dependencies
257257
run: |
258-
choco install -y ninja
259258
pip install psutil
260259
- name: Install a current LLVM
261260
if: ${{ matrix.mingw != true }}
@@ -281,6 +280,10 @@ jobs:
281280
- name: Set up the MSVC dev environment
282281
if: ${{ matrix.mingw != true }}
283282
uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
283+
- name: Add the installed Clang at the start of the path
284+
if: ${{ matrix.mingw != true }}
285+
run: |
286+
echo "c:\Program Files\LLVM\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append
284287
- name: Build and test
285288
run: |
286289
bash libcxx/utils/ci/run-buildbot ${{ matrix.config }}

.github/workflows/llvm-tests.yml renamed to .github/workflows/llvm-abi-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: LLVM Tests
1+
name: LLVM ABI Tests
22

33
permissions:
44
contents: read

bolt/lib/Rewrite/RewriteInstance.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -917,9 +917,6 @@ void RewriteInstance::discoverFileObjects() {
917917
bool IsData = false;
918918
uint64_t LastAddr = 0;
919919
for (const auto &SymInfo : SortedSymbols) {
920-
if (LastAddr == SymInfo.Address) // don't repeat markers
921-
continue;
922-
923920
MarkerSymType MarkerType = BC->getMarkerType(SymInfo.Symbol);
924921

925922
// Treat ST_Function as code.
@@ -929,8 +926,14 @@ void RewriteInstance::discoverFileObjects() {
929926
if (IsData) {
930927
Expected<StringRef> NameOrError = SymInfo.Symbol.getName();
931928
consumeError(NameOrError.takeError());
932-
BC->errs() << "BOLT-WARNING: function symbol " << *NameOrError
933-
<< " lacks code marker\n";
929+
if (LastAddr == SymInfo.Address) {
930+
BC->errs() << "BOLT-WARNING: ignoring data marker conflicting with "
931+
"function symbol "
932+
<< *NameOrError << '\n';
933+
} else {
934+
BC->errs() << "BOLT-WARNING: function symbol " << *NameOrError
935+
<< " lacks code marker\n";
936+
}
934937
}
935938
MarkerType = MarkerSymType::CODE;
936939
}

bolt/test/AArch64/data-at-0-offset.c

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
## Check that if a data marker is present at the start of a function, the
2+
## underlying bytes are still treated as code.
3+
4+
# RUN: %clang %cflags %s -o %t.exe
5+
# RUN: llvm-bolt %t.exe -o %t.bolt --print-cfg 2>&1 | FileCheck %s
6+
7+
# CHECK: BOLT-WARNING: ignoring data marker conflicting with function symbol _start
8+
9+
.text
10+
.balign 4
11+
12+
## Data marker is emitted because ".long" directive is used instead of ".inst".
13+
.global _start
14+
.type _start, %function
15+
_start:
16+
.long 0xcec08000 // sha512su0 v0.2d, v0.2d
17+
ret
18+
.size _start, .-_start
19+
20+
# CHECK-LABEL: Binary Function "_start"
21+
# CHECK: Entry Point
22+
# CHECK-NEXT: sha512su0 v0.2d, v0.2d
23+

bolt/utils/dot2html/d3-graphviz-template.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<!DOCTYPE html>
22
<meta charset="utf-8">
33
<body>
4-
<script src="https://d3js.org/d3.v5.min.js"></script>
5-
<script src="https://unpkg.com/@hpcc-js/wasm@0.3.11/dist/index.min.js"></script>
6-
<script src="https://unpkg.com/d3-graphviz@3.0.5/build/d3-graphviz.js"></script>
4+
<script src="https://d3js.org/d3.v7.min.js"></script>
5+
<script src="https://unpkg.com/@hpcc-js/wasm@2.20.0/dist/graphviz.umd.js"></script>
6+
<script src="https://unpkg.com/d3-graphviz@5.6.0/build/d3-graphviz.js"></script>
77
<div id="graph" style="text-align: center;"></div>
88
<script>
99
var dotSrc = `

0 commit comments

Comments
 (0)