Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
fc1e911
[lldb] ensure comment conforms to LLVM guidelines (#170533)
charles-zablit Dec 3, 2025
c656bf3
[Github] Add user of issue-write for #170209
boomanaiden154 Dec 3, 2025
43b6916
Revert "[clangd] Enable lit internal shell by default (#170186)"
boomanaiden154 Dec 3, 2025
c5e6f4e
[AArch64] Add unrolling test with -mcpu=apple-a17.
fhahn Dec 3, 2025
6164b07
[Github] Add workflow to test the issue write workflow
boomanaiden154 Dec 3, 2025
8f6e95e
[Clang][X86] Add constexpr support for permute4x64_pd and permute4x64…
ahmednoursphinx Dec 3, 2025
562d911
[Github] Make unprivileged-download-artifact download multiple artifacts
boomanaiden154 Dec 3, 2025
7b3ec51
[VPlan] Consolidate logic for narrowToSingleScalars (NFCI) (#167360)
artagnon Dec 3, 2025
58dd3a4
[Github] Also run test issue write when touching issue-write.yml
boomanaiden154 Dec 3, 2025
3d598c3
[SPARC] Remove CCIfConsecutiveRegs for f128 returns (#170133)
koachan Dec 3, 2025
5cbd294
[Github] Fix issue-write workflow after #170216
boomanaiden154 Dec 3, 2025
04c81a9
CodeGen: Add LibcallLoweringInfo analysis pass (#168622)
arsenm Dec 3, 2025
b13b41a
Revert "[LLDB] Add SBFrameExtensions Tests (#169236)" (#170555)
dzhidzhoev Dec 3, 2025
d2accd3
[Github] Make issue-write workflow support reading from multiple files
boomanaiden154 Dec 3, 2025
2fb2d7e
[flang][cuda] Change how to handle static shared memory variables (#1…
clementval Dec 3, 2025
095f8e0
[LV] Add more tests for finding the first-iv of argmin.
fhahn Dec 3, 2025
1054a6e
[SCEV] Handle non-constant start values in AddRec UDiv canonicalizati…
fhahn Dec 3, 2025
7931e2f
[MLIR][Vector] Add unroll pattern for vector.create_mask (#169119)
nbpatel Dec 3, 2025
90606ae
DAG: Use poison for filler values on legalize error paths (#170556)
arsenm Dec 3, 2025
1f6d0d8
[CAS] Disable CASTests on Windows versions before windows 11 (#170420)
cachemeifyoucan Dec 3, 2025
e5675a4
[flang][NFC] Strip trailing whitespace from tests (9 of N)
tarunprabhu Dec 3, 2025
75af66e
[Github][CI] Make premerge upload results on Linux and Windows (#170414)
boomanaiden154 Dec 3, 2025
4da31b6
[Hexagon] Passes for widening vector operations and shuffle opt (#169…
fhossein-quic Dec 3, 2025
9f23877
[clang][deps] Simplify consuming of the build command (#169064)
jansvoboda11 Dec 3, 2025
848d865
[flang][cuda] Set alignment for tma bulk store (#170558)
clementval Dec 3, 2025
278d28f
[gn build] Port 4da31b6f5799
llvmgnsyncbot Dec 3, 2025
240a0d1
[llvm-profgen] Loading binary functions from .symtab when DWARF info …
HighW4y2H3ll Dec 3, 2025
e52aece
[flang][cuda] Do not use address cast for src and dst in TMA bulk loa…
clementval Dec 3, 2025
f650330
[PowerPC] Add initial support for AMO load builtins (#168746)
maryammo Dec 3, 2025
254b33f
[acc] Add firstprivate/private/reduction to `acc.kernels` (#170387)
SusanTan Dec 3, 2025
3b9a0db
[RISCV] Update SpacemiT-X60 vector load/stores (#169936)
mikhailramalho Dec 3, 2025
4bf7c59
[gn build] Port f6503306652f
llvmgnsyncbot Dec 3, 2025
6e47966
[CodeGen][KCFI] Allow setting type hash from xxHash64 to FNV-1a (#167…
kees Dec 3, 2025
31ec45a
[AMDGPU] Fix VGPR lowering for V_DUAL_FMAMK_F32 (#170567)
rampitec Dec 3, 2025
d33d7ce
[gn build] Port 6e479668ba74
llvmgnsyncbot Dec 3, 2025
21f98f9
[lldb-dap] Fix format string on Mac OS (#169933)
npmiller Dec 3, 2025
b70be3d
[clang][DependencyScanning] Separate clangDependencyScanning and Depe…
naveen-seth Dec 3, 2025
bb52fec
[Clang][AMDGPU] Fix a typo
a4lg Dec 4, 2025
b426723
[Clang][AMDGPU] Search TheRock-based device libraries
a4lg Dec 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .ci/premerge_advisor_explain.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,8 @@ def main(
# If the job succeeds and there is not an existing comment, we
# should not write one to reduce noise.
comments = []
with open("comments", "w") as comment_file_handle:
comments_file_name = f"comments-{platform.system()}-{platform.machine()}"
with open(comments_file_name, "w") as comment_file_handle:
json.dump(comments, comment_file_handle)


Expand Down
33 changes: 33 additions & 0 deletions .github/workflows/issue-write-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Test Issue Write

permissions:
contents: read

on:
pull_request:
paths:
- '.github/workflows/issue-write-test.yaml'
- '.github/workflows/issue-write.yml'

jobs:
test-issue-write:
name: "Test Issue Write"
runs-on: ubuntu-24.04
if: github.repository == 'llvm/llvm-project'
steps:
- name: Write Comment
run: |
echo '[{"body": "This is a comment for testing the issue write workflow"}]' > comments-foo
echo '[{"body": "This is another comment for testing the issue write workflow that was placed in a separate file"}]' > comments-bar
- name: Upload Comment
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: workflow-args-foo
path: |
comments-foo
- name: Upload Comment
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: workflow-args-bar
path: |
comments-bar
12 changes: 9 additions & 3 deletions .github/workflows/issue-write.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ on:
- "PR Request Release Note"
- "Code lint"
- "CI Checks"
- "Test Issue Write"
types:
- completed

Expand Down Expand Up @@ -40,13 +41,18 @@ jobs:
artifact-name: workflow-args

- name: 'Comment on PR'
if: steps.download-artifact.outputs.artifact-id != ''
if: steps.download-artifact.outputs.artifact-ids != ''
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
var fs = require('fs');
const comments = JSON.parse(fs.readFileSync('./comments'));
var comments = []
for (local_file of fs.readdirSync('.')) {
if (local_file.startsWith("comments")) {
comments.push(...JSON.parse(fs.readFileSync(local_file)))
}
}
if (!comments || comments.length == 0) {
return;
}
Expand Down Expand Up @@ -155,5 +161,5 @@ jobs:
- name: Dump comments file
if: >-
always() &&
steps.download-artifact.outputs.artifact-id != ''
steps.download-artifact.outputs.artifact-ids != ''
run: cat comments
12 changes: 10 additions & 2 deletions .github/workflows/premerge.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,9 @@ jobs:
if: ${{ always() && !startsWith(matrix.runs-on, 'depot-ubuntu-24.04-arm') }}
continue-on-error: true
with:
name: workflow-args
name: workflow-args-x86-linux
path: |
comments
comments-Linux-x86_64

premerge-checks-windows:
name: Build and Test Windows
Expand Down Expand Up @@ -185,6 +185,14 @@ jobs:
path: artifacts/
retention-days: 5
include-hidden-files: 'true'
- name: Upload Comment
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
if: always()
continue-on-error: true
with:
name: workflow-args-windows
path: |
comments-Windows-x86_64

premerge-check-macos:
name: MacOS Premerge Checks
Expand Down
26 changes: 18 additions & 8 deletions .github/workflows/test-unprivileged-download-artifact.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,23 @@ jobs:
if: github.repository_owner == 'llvm'
runs-on: ubuntu-24.04
steps:
- name: Create Test File
- name: Create Test Files
run: |
echo "test" > comment
- name: Upload Test File
echo "foo" > comment1
echo "bar" > comment2
- name: Upload Test File 1
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: workflow-args
name: artifact-name-1
path: |
comment
comment1
- name: Upload Test File 2
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
with:
name: artifact-name-2
path: |
comment2


test-download:
name: Test Unprivileged Download Artifact
Expand All @@ -47,8 +55,10 @@ jobs:
id: download-artifact
with:
run-id: ${{ github.run_id }}
artifact-name: workflow-args
artifact-name: artifact-name-
- name: Assert That Contents are the Same
run: |
cat comment
[[ "$(cat comment)" == "test" ]]
cat comment1
[[ "$(cat comment1)" == "foo" ]]
cat comment2
[[ "$(cat comment2)" == "bar" ]]
59 changes: 40 additions & 19 deletions .github/workflows/unprivileged-download-artifact/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ outputs:
The filename of the downloaded artifact or the empty string if the
artifact was not found.
value: ${{ steps.download-artifact.outputs.filename }}
artifact-id:
artifact-ids:
description: "The id of the artifact being downloaded."
value: ${{ steps.artifact-url.outputs.id }}
value: ${{ steps.artifact-url.outputs.ids }}


runs:
Expand All @@ -36,46 +36,67 @@ runs:
response = await github.rest.actions.listArtifactsForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
name: "${{ inputs.artifact-name }}"
})
} else {
response = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: "${{ inputs.run-id }}",
name: "${{ inputs.artifact-name }}"
})
}

console.log(response)

artifacts_to_download = []
for (artifact of response.data.artifacts) {
if (artifact.name.startsWith("${{ inputs.artifact-name }}")) {
artifacts_to_download.push(artifact)
}
}

for (artifact of artifacts_to_download) {
console.log(artifact);
}

if (response.data.artifacts.length == 0) {
console.log("Could not find artifact ${{ inputs.artifact-name }} for workflow run ${{ inputs.run-id }}")
if (artifacts_to_download.length == 0) {
console.log("Could not find artifacts starting with name ${{ inputs.artifact-name }} for workflow run ${{ inputs.run-id }}")
return;
}

const url_response = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: response.data.artifacts[0].id,
archive_format: "zip"
})
artifact_ids = []
artifact_urls = []
artifact_names = []
for (artifact_to_download of artifacts_to_download) {
const url_response = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: artifact_to_download.id,
archive_format: "zip"
})

artifact_ids.push(artifact_to_download.id)
artifact_urls.push('"' + url_response.url + '"')
artifact_names.push('"' + artifact_to_download.name + '"')
}

core.setOutput("url", url_response.url);
core.setOutput("id", response.data.artifacts[0].id);
core.setOutput("urls", artifact_urls.join(" "));
core.setOutput("ids", artifact_ids.join(" "));
core.setOutput("names", artifact_names.join(" "));

- shell: bash
if: steps.artifact-url.outputs.url != ''
if: steps.artifact-url.outputs.urls != ''
id: download-artifact
run: |
curl -L -o ${{ inputs.artifact-name }}.zip "${{ steps.artifact-url.outputs.url }}"
echo "filename=${{ inputs.artifact-name }}.zip" >> $GITHUB_OUTPUT
artifact_urls=(${{ steps.artifact-url.outputs.urls }})
artifact_names=(${{ steps.artifact-url.outputs.names }})
for i in "${!artifact_urls[@]}"; do
curl -L -o "${artifact_names[$i]}.zip" "${artifact_urls[$i]}"
done

- shell: bash
if: steps.download-artifact.outputs.filename != ''
if: steps.artifact-url.outputs.names != ''
run: |
unzip ${{ steps.download-artifact.outputs.filename }}
artifact_names=(${{ steps.artifact-url.outputs.names }})
for name in "${artifact_names[@]}"; do
unzip "${name}.zip"
done
10 changes: 5 additions & 5 deletions clang-tools-extra/clangd/ScanningProjectModules.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@

#include "ProjectModules.h"
#include "support/Logger.h"
#include "clang/Tooling/DependencyScanning/DependencyScanningService.h"
#include "clang/Tooling/DependencyScanning/DependencyScanningTool.h"
#include "clang/DependencyScanning/DependencyScanningService.h"
#include "clang/Tooling/DependencyScanningTool.h"

namespace clang::clangd {
namespace {
Expand All @@ -36,8 +36,8 @@ class ModuleDependencyScanner {
std::shared_ptr<const clang::tooling::CompilationDatabase> CDB,
const ThreadsafeFS &TFS)
: CDB(CDB), TFS(TFS),
Service(tooling::dependencies::ScanningMode::CanonicalPreprocessing,
tooling::dependencies::ScanningOutputFormat::P1689) {}
Service(dependencies::ScanningMode::CanonicalPreprocessing,
dependencies::ScanningOutputFormat::P1689) {}

/// The scanned modules dependency information for a specific source file.
struct ModuleDependencyInfo {
Expand Down Expand Up @@ -81,7 +81,7 @@ class ModuleDependencyScanner {
// Whether the scanner has scanned the project globally.
bool GlobalScanned = false;

clang::tooling::dependencies::DependencyScanningService Service;
clang::dependencies::DependencyScanningService Service;

// TODO: Add a scanning cache.

Expand Down
23 changes: 1 addition & 22 deletions clang-tools-extra/clangd/test/lit.cfg.py
Original file line number Diff line number Diff line change
@@ -1,28 +1,14 @@
import os
import shutil

import lit.llvm
import lit.util

lit.llvm.initialize(lit_config, config)
lit.llvm.llvm_config.clang_setup()
lit.llvm.llvm_config.use_default_substitutions()

# TODO: Consolidate the logic for turning on the internal shell by default for all LLVM test suites.
# See https://github.com/llvm/llvm-project/issues/106636 for more details.
#
# We prefer the lit internal shell which provides a better user experience on failures
# and is faster unless the user explicitly disables it with LIT_USE_INTERNAL_SHELL=0
# env var.
use_lit_shell = True
lit_shell_env = os.environ.get("LIT_USE_INTERNAL_SHELL")
if lit_shell_env:
use_lit_shell = lit.util.pythonize_bool(lit_shell_env)

config.name = "Clangd"
config.suffixes = [".test"]
config.excludes = ["Inputs"]
config.test_format = lit.formats.ShTest(not use_lit_shell)
config.test_format = lit.formats.ShTest(not lit.llvm.llvm_config.use_lit_shell)
config.test_source_root = config.clangd_source_dir + "/test"
config.test_exec_root = config.clangd_binary_dir + "/test"

Expand Down Expand Up @@ -55,13 +41,6 @@ def calculate_arch_features(arch_string):
if lit.util.pythonize_bool(config.have_benchmarks):
config.available_features.add("have-benchmarks")

# This is needed to avoid running a single test (system-include-extractor.test)
# on a single buildbot (clangd-ubuntu-tsan) and likely should not be needed. We
# are able to unconditionally assume a chmod binary exists for check-llvm.
# TODO(boomanaiden154): Fix this after investigating the bot setup.
if shutil.which("chmod"):
config.available_features.add("chmod")

# It is not realistically possible to account for all options that could
# possibly be present in system and user configuration files, so disable
# default configs for the test runs.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# RUN: rm -rf %t.dir && mkdir -p %t.dir

# The mock driver below is a shell script:
# REQUIRES: shell, chmod
# REQUIRES: shell

# Create a bin directory to store the mock-driver and add it to the path
# RUN: mkdir -p %t.dir/bin
Expand Down
4 changes: 4 additions & 0 deletions clang/include/clang/Basic/BuiltinsPPC.def
Original file line number Diff line number Diff line change
Expand Up @@ -1001,6 +1001,10 @@ TARGET_BUILTIN(__builtin_darn_32, "i", "", "isa-v30-instructions")
TARGET_BUILTIN(__builtin_unpack_vector_int128, "ULLiV1LLLii", "", "vsx")
TARGET_BUILTIN(__builtin_pack_vector_int128, "V1LLLiULLiULLi", "", "vsx")

// AMO builtins
TARGET_BUILTIN(__builtin_amo_lwat, "UiUi*UiIi", "", "isa-v30-instructions")
TARGET_BUILTIN(__builtin_amo_ldat, "ULiULi*ULiIi", "", "isa-v30-instructions")

// Set the floating point rounding mode
BUILTIN(__builtin_setrnd, "di", "")

Expand Down
7 changes: 4 additions & 3 deletions clang/include/clang/Basic/BuiltinsX86.td
Original file line number Diff line number Diff line change
Expand Up @@ -585,13 +585,14 @@ let Features = "avx2", Attributes = [NoThrow, Const, RequiredVectorWidth<256>] i
def psadbw256
: X86Builtin<
"_Vector<4, long long int>(_Vector<32, char>, _Vector<32, char>)">;
def permdf256 : X86Builtin<"_Vector<4, double>(_Vector<4, double>, _Constant int)">;
def permti256 : X86Builtin<"_Vector<4, long long int>(_Vector<4, long long int>, _Vector<4, long long int>, _Constant int)">;
def permdi256 : X86Builtin<"_Vector<4, long long int>(_Vector<4, long long int>, _Constant int)">;
}


let Features = "avx2", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<256>] in {
def permdf256
: X86Builtin<"_Vector<4, double>(_Vector<4, double>, _Constant int)">;
def permdi256 : X86Builtin<"_Vector<4, long long int>(_Vector<4, long long "
"int>, _Constant int)">;
def pmovmskb256 : X86Builtin<"int(_Vector<32, char>)">;
def pavgb256 : X86Builtin<"_Vector<32, unsigned char>(_Vector<32, unsigned char>, _Vector<32, unsigned char>)">;
def pavgw256 : X86Builtin<"_Vector<16, unsigned short>(_Vector<16, unsigned short>, _Vector<16, unsigned short>)">;
Expand Down
4 changes: 4 additions & 0 deletions clang/include/clang/Basic/CodeGenOptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
#include "llvm/Frontend/Debug/Options.h"
#include "llvm/Frontend/Driver/CodeGenOptions.h"
#include "llvm/Support/CodeGen.h"
#include "llvm/Support/Hash.h"
#include "llvm/Support/Regex.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/Transforms/Instrumentation/AddressSanitizerOptions.h"
Expand Down Expand Up @@ -514,6 +515,9 @@ class CodeGenOptions : public CodeGenOptionsBase {
/// binary metadata pass should not be instrumented.
std::vector<std::string> SanitizeMetadataIgnorelistFiles;

/// Hash algorithm to use for KCFI type IDs.
llvm::KCFIHashAlgorithm SanitizeKcfiHash;

/// Name of the stack usage file (i.e., .su file) if user passes
/// -fstack-usage. If empty, it can be implied that -fstack-usage is not
/// passed on the command line.
Expand Down
Loading