Skip to content

Commit 966029b

Browse files
committed
Merge branch 'main' of https://github.com/llvm/llvm-project into private_apocalypse_missed_a_spot
2 parents 819392b + 9f37cdc commit 966029b

File tree

5,065 files changed

+310152
-94285
lines changed

Some content is hidden

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

5,065 files changed

+310152
-94285
lines changed

.ci/metrics/metrics.py

Lines changed: 62 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import os
44
from dataclasses import dataclass
55
import sys
6+
import logging
67

78
import github
89
from github import Github
@@ -24,6 +25,7 @@ class JobMetrics:
2425
status: int
2526
created_at_ns: int
2627
workflow_id: int
28+
workflow_name: str
2729

2830

2931
@dataclass
@@ -43,40 +45,60 @@ def get_sampled_workflow_metrics(github_repo: github.Repository):
4345
Returns a list of GaugeMetric objects, containing the relevant metrics about
4446
the workflow
4547
"""
48+
queued_job_counts = {}
49+
running_job_counts = {}
4650

4751
# Other states are available (pending, waiting, etc), but the meaning
4852
# is not documented (See #70540).
4953
# "queued" seems to be the info we want.
50-
queued_workflow_count = len(
51-
[
52-
x
53-
for x in github_repo.get_workflow_runs(status="queued")
54-
if x.name in WORKFLOWS_TO_TRACK
55-
]
56-
)
57-
running_workflow_count = len(
58-
[
59-
x
60-
for x in github_repo.get_workflow_runs(status="in_progress")
61-
if x.name in WORKFLOWS_TO_TRACK
62-
]
63-
)
54+
for queued_workflow in github_repo.get_workflow_runs(status="queued"):
55+
if queued_workflow.name not in WORKFLOWS_TO_TRACK:
56+
continue
57+
for queued_workflow_job in queued_workflow.jobs():
58+
job_name = queued_workflow_job.name
59+
# Workflows marked as queued can potentially only have some jobs
60+
# queued, so make sure to also count jobs currently in progress.
61+
if queued_workflow_job.status == "queued":
62+
if job_name not in queued_job_counts:
63+
queued_job_counts[job_name] = 1
64+
else:
65+
queued_job_counts[job_name] += 1
66+
elif queued_workflow_job.status == "in_progress":
67+
if job_name not in running_job_counts:
68+
running_job_counts[job_name] = 1
69+
else:
70+
running_job_counts[job_name] += 1
71+
72+
for running_workflow in github_repo.get_workflow_runs(status="in_progress"):
73+
if running_workflow.name not in WORKFLOWS_TO_TRACK:
74+
continue
75+
for running_workflow_job in running_workflow.jobs():
76+
job_name = running_workflow_job.name
77+
if running_workflow_job.status != "in_progress":
78+
continue
79+
80+
if job_name not in running_job_counts:
81+
running_job_counts[job_name] = 1
82+
else:
83+
running_job_counts[job_name] += 1
6484

6585
workflow_metrics = []
66-
workflow_metrics.append(
67-
GaugeMetric(
68-
"workflow_queue_size",
69-
queued_workflow_count,
70-
time.time_ns(),
86+
for queued_job in queued_job_counts:
87+
workflow_metrics.append(
88+
GaugeMetric(
89+
f"workflow_queue_size_{queued_job}",
90+
queued_job_counts[queued_job],
91+
time.time_ns(),
92+
)
7193
)
72-
)
73-
workflow_metrics.append(
74-
GaugeMetric(
75-
"running_workflow_count",
76-
running_workflow_count,
77-
time.time_ns(),
94+
for running_job in running_job_counts:
95+
workflow_metrics.append(
96+
GaugeMetric(
97+
f"running_workflow_count_{running_job}",
98+
running_job_counts[running_job],
99+
time.time_ns(),
100+
)
78101
)
79-
)
80102
# Always send a hearbeat metric so we can monitor is this container is still able to log to Grafana.
81103
workflow_metrics.append(
82104
GaugeMetric("metrics_container_heartbeat", 1, time.time_ns())
@@ -157,7 +179,7 @@ def get_per_workflow_metrics(
157179
# longer in a testing state and we can directly assert the workflow
158180
# result.
159181
for step in workflow_job.steps:
160-
if step.conclusion != "success":
182+
if step.conclusion != "success" and step.conclusion != "skipped":
161183
job_result = 0
162184
break
163185

@@ -171,6 +193,10 @@ def get_per_workflow_metrics(
171193
# in nanoseconds.
172194
created_at_ns = int(created_at.timestamp()) * 10**9
173195

196+
logging.info(
197+
f"Adding a job metric for job {workflow_job.id} in workflow {workflow_run.id}"
198+
)
199+
174200
workflow_metrics.append(
175201
JobMetrics(
176202
workflow_run.name + "-" + workflow_job.name,
@@ -179,6 +205,7 @@ def get_per_workflow_metrics(
179205
job_result,
180206
created_at_ns,
181207
workflow_run.id,
208+
workflow_run.name,
182209
)
183210
)
184211

@@ -198,7 +225,7 @@ def upload_metrics(workflow_metrics, metrics_userid, api_key):
198225
"""
199226

200227
if len(workflow_metrics) == 0:
201-
print("No metrics found to upload.", file=sys.stderr)
228+
logging.info("No metrics found to upload.")
202229
return
203230

204231
metrics_batch = []
@@ -227,16 +254,12 @@ def upload_metrics(workflow_metrics, metrics_userid, api_key):
227254
)
228255

229256
if response.status_code < 200 or response.status_code >= 300:
230-
print(
231-
f"Failed to submit data to Grafana: {response.status_code}", file=sys.stderr
232-
)
257+
logging.info(f"Failed to submit data to Grafana: {response.status_code}")
233258

234259

235260
def main():
236261
# Authenticate with Github
237262
auth = Auth.Token(os.environ["GITHUB_TOKEN"])
238-
github_object = Github(auth=auth)
239-
github_repo = github_object.get_repo("llvm/llvm-project")
240263

241264
grafana_api_key = os.environ["GRAFANA_API_KEY"]
242265
grafana_metrics_userid = os.environ["GRAFANA_METRICS_USERID"]
@@ -248,24 +271,24 @@ def main():
248271
# Enter the main loop. Every five minutes we wake up and dump metrics for
249272
# the relevant jobs.
250273
while True:
274+
github_object = Github(auth=auth)
275+
github_repo = github_object.get_repo("llvm/llvm-project")
276+
251277
current_metrics = get_per_workflow_metrics(github_repo, workflows_to_track)
252278
current_metrics += get_sampled_workflow_metrics(github_repo)
253-
# Always send a hearbeat metric so we can monitor is this container is still able to log to Grafana.
254-
current_metrics.append(
255-
GaugeMetric("metrics_container_heartbeat", 1, time.time_ns())
256-
)
257279

258280
upload_metrics(current_metrics, grafana_metrics_userid, grafana_api_key)
259-
print(f"Uploaded {len(current_metrics)} metrics", file=sys.stderr)
281+
logging.info(f"Uploaded {len(current_metrics)} metrics")
260282

261283
for workflow_metric in reversed(current_metrics):
262284
if isinstance(workflow_metric, JobMetrics):
263285
workflows_to_track[
264-
workflow_metric.job_name
286+
workflow_metric.workflow_name
265287
] = workflow_metric.workflow_id
266288

267289
time.sleep(SCRAPE_INTERVAL_SECONDS)
268290

269291

270292
if __name__ == "__main__":
293+
logging.basicConfig(level=logging.INFO)
271294
main()

.github/new-prs-labeler.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,6 +499,7 @@ clang:static analyzer:
499499
- clang/tools/scan-build/**
500500
- clang/utils/analyzer/**
501501
- clang/docs/analyzer/**
502+
- clang/test/Analysis/**
502503

503504
pgo:
504505
- llvm/lib/Transforms/Instrumentation/CGProfile.cpp

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

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
stage1:
3838
if: github.repository_owner == 'llvm'
3939
runs-on: libcxx-self-hosted-linux
40-
container: ghcr.io/llvm/libcxx-linux-builder:d8a0709b1090350a7fe3604d8ab78c7d62f10698
40+
container: ghcr.io/llvm/libcxx-linux-builder:b319dfef21f6c7b0bc6a356d6b9f41a3b3b98ae9
4141
continue-on-error: false
4242
strategy:
4343
fail-fast: false
@@ -48,8 +48,8 @@ jobs:
4848
'generic-cxx26',
4949
'generic-modules'
5050
]
51-
cc: [ 'clang-20' ]
52-
cxx: [ 'clang++-20' ]
51+
cc: [ 'clang-21' ]
52+
cxx: [ 'clang++-21' ]
5353
include:
5454
- config: 'generic-gcc'
5555
cc: 'gcc-14'
@@ -75,7 +75,7 @@ jobs:
7575
stage2:
7676
if: github.repository_owner == 'llvm'
7777
runs-on: libcxx-self-hosted-linux
78-
container: ghcr.io/llvm/libcxx-linux-builder:d8a0709b1090350a7fe3604d8ab78c7d62f10698
78+
container: ghcr.io/llvm/libcxx-linux-builder:b319dfef21f6c7b0bc6a356d6b9f41a3b3b98ae9
7979
needs: [ stage1 ]
8080
continue-on-error: false
8181
strategy:
@@ -88,18 +88,22 @@ jobs:
8888
'generic-cxx20',
8989
'generic-cxx23'
9090
]
91-
cc: [ 'clang-20' ]
92-
cxx: [ 'clang++-20' ]
91+
cc: [ 'clang-21' ]
92+
cxx: [ 'clang++-21' ]
9393
include:
9494
- config: 'generic-gcc-cxx11'
9595
cc: 'gcc-14'
9696
cxx: 'g++-14'
97-
- config: 'generic-cxx23'
98-
cc: 'clang-18'
99-
cxx: 'clang++-18'
97+
- config: 'generic-cxx26'
98+
cc: 'clang-20'
99+
cxx: 'clang++-20'
100100
- config: 'generic-cxx26'
101101
cc: 'clang-19'
102102
cxx: 'clang++-19'
103+
# Release transition
104+
- config: 'generic-cxx23'
105+
cc: 'clang-18'
106+
cxx: 'clang++-18'
103107
steps:
104108
- uses: actions/checkout@v4
105109
- name: ${{ matrix.config }}
@@ -120,7 +124,7 @@ jobs:
120124
**/crash_diagnostics/*
121125
stage3:
122126
if: github.repository_owner == 'llvm'
123-
needs: [ stage1, stage2 ]
127+
needs: [ stage2 ]
124128
continue-on-error: false
125129
strategy:
126130
fail-fast: false
@@ -163,14 +167,14 @@ jobs:
163167
- config: 'generic-msan'
164168
machine: libcxx-self-hosted-linux
165169
runs-on: ${{ matrix.machine }}
166-
container: ghcr.io/llvm/libcxx-linux-builder:d8a0709b1090350a7fe3604d8ab78c7d62f10698
170+
container: ghcr.io/llvm/libcxx-linux-builder:b319dfef21f6c7b0bc6a356d6b9f41a3b3b98ae9
167171
steps:
168172
- uses: actions/checkout@v4
169173
- name: ${{ matrix.config }}
170174
run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
171175
env:
172-
CC: clang-20
173-
CXX: clang++-20
176+
CC: clang-21
177+
CXX: clang++-21
174178
- uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
175179
if: always()
176180
with:
@@ -184,7 +188,7 @@ jobs:
184188
**/crash_diagnostics/*
185189
186190
macos:
187-
needs: [ stage1 ]
191+
needs: [ stage3 ]
188192
strategy:
189193
fail-fast: false
190194
matrix:
@@ -228,7 +232,7 @@ jobs:
228232
229233
windows:
230234
runs-on: windows-2022
231-
needs: [ stage1 ]
235+
needs: [ stage2 ]
232236
strategy:
233237
fail-fast: false
234238
matrix:
@@ -251,11 +255,11 @@ jobs:
251255
- name: Install a current LLVM
252256
if: ${{ matrix.mingw != true }}
253257
run: |
254-
choco install -y llvm --version=18.1.6 --allow-downgrade
258+
choco install -y llvm --version=19.1.7 --allow-downgrade
255259
- name: Install llvm-mingw
256260
if: ${{ matrix.mingw == true }}
257261
run: |
258-
curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20240606/llvm-mingw-20240606-ucrt-x86_64.zip
262+
curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20250114/llvm-mingw-20250114-ucrt-x86_64.zip
259263
powershell Expand-Archive llvm-mingw*.zip -DestinationPath .
260264
del llvm-mingw*.zip
261265
mv llvm-mingw* c:\llvm-mingw

.github/workflows/premerge.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ on:
1414
# do this is that it allows us to take advantage of concurrency groups
1515
# to cancel in progress CI jobs whenever the PR is closed.
1616
- closed
17-
paths:
18-
- .github/workflows/premerge.yaml
1917
push:
2018
branches:
2119
- 'main'
@@ -27,6 +25,7 @@ concurrency:
2725

2826
jobs:
2927
premerge-checks-linux:
28+
name: Linux Premerge Checks (Test Only - Please Ignore Results)
3029
if: >-
3130
github.repository_owner == 'llvm' &&
3231
(github.event_name != 'pull_request' || github.event.action != 'closed')
@@ -85,6 +84,7 @@ jobs:
8584
./.ci/monolithic-linux.sh "$(echo ${linux_projects} | tr ' ' ';')" "$(echo ${linux_check_targets})" "$(echo ${linux_runtimes} | tr ' ' ';')" "$(echo ${linux_runtime_check_targets})"
8685
8786
premerge-checks-windows:
87+
name: Windows Premerge Checks (Test Only - Please Ignore Results)
8888
if: >-
8989
github.repository_owner == 'llvm' &&
9090
(github.event_name != 'pull_request' || github.event.action != 'closed')
@@ -144,7 +144,8 @@ jobs:
144144
call C:\\BuildTools\\Common7\\Tools\\VsDevCmd.bat -arch=amd64 -host_arch=amd64
145145
bash .ci/monolithic-windows.sh "${{ steps.vars.outputs.windows-projects }}" "${{ steps.vars.outputs.windows-check-targets }}"
146146
147-
permerge-check-macos:
147+
premerge-check-macos:
148+
name: MacOS Premerge Checks
148149
runs-on: macos-14
149150
if: >-
150151
github.repository_owner == 'llvm' &&

.github/workflows/release-binaries.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,13 +133,18 @@ jobs:
133133
# add extra CMake args to disable them.
134134
# See https://github.com/llvm/llvm-project/issues/99767
135135
if [ "$RUNNER_OS" = "macOS" ]; then
136-
target_cmake_flags="$target_cmake_flags -DBOOTSTRAP_COMPILER_RT_ENABLE_IOS=OFF"
136+
target_cmake_flags="$target_cmake_flags -DBOOTSTRAP_BOOTSTRAP_COMPILER_RT_ENABLE_IOS=OFF"
137137
if [ "$RUNNER_ARCH" = "ARM64" ]; then
138138
arches=arm64
139139
else
140140
arches=x86_64
141+
# Disable Flang builds on macOS x86_64. The FortranLower library takes
142+
# 2-3 hours to build on macOS, much slower than on Linux.
143+
# The long build time causes the release build to time out on x86_64,
144+
# so we need to disable flang there.
145+
target_cmake_flags="$target_cmake_flags -DLLVM_RELEASE_ENABLE_PROJECTS='clang;lld;lldb;clang-tools-extra;polly;mlir'"
141146
fi
142-
target_cmake_flags="$target_cmake_flags -DBOOTSTRAP_DARWIN_osx_ARCHS=$arches -DBOOTSTRAP_DARWIN_osx_BUILTIN_ARCHS=$arches"
147+
target_cmake_flags="$target_cmake_flags -DBOOTSTRAP_BOOTSTRAP_DARWIN_osx_ARCHS=$arches -DBOOTSTRAP_BOOTSTRAP_DARWIN_osx_BUILTIN_ARCHS=$arches"
143148
fi
144149
145150
build_flang="true"

bolt/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,3 +202,11 @@ endif()
202202

203203
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/bolt/RuntimeLibs/RuntimeLibraryVariables.inc.in
204204
${CMAKE_CURRENT_BINARY_DIR}/include/bolt/RuntimeLibs/RuntimeLibraryVariables.inc @ONLY)
205+
206+
set(BOLT_ENUM_TARGETS "")
207+
foreach(t ${BOLT_TARGETS_TO_BUILD})
208+
set(BOLT_ENUM_TARGETS "${BOLT_ENUM_TARGETS}BOLT_TARGET(${t})\n")
209+
endforeach(t)
210+
211+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/bolt/Core/TargetConfig.def.in
212+
${CMAKE_CURRENT_BINARY_DIR}/include/bolt/Core/TargetConfig.def @ONLY)

0 commit comments

Comments
 (0)