diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index d58c7d51e0e44..17b2fbbae7bd5 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -15,17 +15,68 @@ on:
paths:
- 'llvm/docs/**'
- 'clang/docs/**'
+ - 'clang-tools-extra/docs/**'
+ - 'lldb/docs/**'
+ - 'libunwind/docs/**'
+ - 'libcxx/docs/**'
+ - 'libc/docs/**'
+ - 'lld/docs/**'
+ - 'openmp/docs/**'
+ - 'polly/docs/**'
pull_request:
paths:
- 'llvm/docs/**'
- 'clang/docs/**'
+ - 'clang-tools-extra/docs/**'
+ - 'lldb/docs/**'
+ - 'libunwind/docs/**'
+ - 'libcxx/docs/**'
+ - 'libc/docs/**'
+ - 'lld/docs/**'
+ - 'openmp/docs/**'
+ - 'polly/docs/**'
jobs:
check-docs-build:
name: "Test documentation build"
runs-on: ubuntu-latest
steps:
- - name: Fetch LLVM sources
+ # Don't fetch before checking for file changes to force the file changes
+ # action to use the Github API in pull requests. If it's a push to a
+ # branch we can't use the Github API to get the diff, so we need to have
+ # a local checkout beforehand.
+ - name: Fetch LLVM sources (Push)
+ if: ${{ github.event_name == 'push' }}
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 1
+ - name: Get subprojects that have doc changes
+ id: docs-changed-subprojects
+ uses: tj-actions/changed-files@v39
+ with:
+ files_yaml: |
+ llvm:
+ - 'llvm/docs/**'
+ clang:
+ - 'clang/docs/**'
+ clang-tools-extra:
+ - 'clang-tools-extra/docs/**'
+ lldb:
+ - 'lldb/docs/**'
+ libunwind:
+ - 'libunwind/docs/**'
+ libcxx:
+ - 'libcxx/docs/**'
+ libc:
+ - 'libc/docs/**'
+ lld:
+ - 'lld/docs/**'
+ openmp:
+ - 'openmp/docs/**'
+ polly:
+ - 'polly/docs/**'
+ - name: Fetch LLVM sources (PR)
+ if: ${{ github.event_name == 'pull_request' }}
uses: actions/checkout@v4
with:
fetch-depth: 1
@@ -40,24 +91,56 @@ jobs:
- name: Install system dependencies
run: |
sudo apt-get update
- sudo apt-get install -y cmake ninja-build
- - name: Get subprojects that have doc changes
- id: docs-changed-subprojects
- uses: tj-actions/changed-files@v39
- with:
- files_yaml: |
- llvm:
- - 'llvm/docs/**'
- clang:
- - 'clang/docs/**'
+ # swig and graphviz are lldb specific dependencies
+ sudo apt-get install -y cmake ninja-build swig graphviz
- name: Build LLVM docs
if: steps.docs-changed-subprojects.outputs.llvm_any_changed == 'true'
run: |
- cmake -B llvm-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_SPHINX=ON -DSPHINX_OUTPUT_HTML=ON -DSPHINX_OUTPUT_MAN=ON ./llvm
+ cmake -B llvm-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_SPHINX=ON ./llvm
TZ=UTC ninja -C llvm-build docs-llvm-html docs-llvm-man
- name: Build Clang docs
if: steps.docs-changed-subprojects.outputs.clang_any_changed == 'true'
run: |
- cmake -B clang-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_ENABLE_SPHINX=ON -DSPHINX_OUTPUT_HTML=ON -DSPHINX_OUTPUT_MAN=ON ./llvm
+ cmake -B clang-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_ENABLE_SPHINX=ON ./llvm
TZ=UTC ninja -C clang-build docs-clang-html docs-clang-man
+ - name: Build clang-tools-extra docs
+ if: steps.docs-changed-subprojects.outputs.clang-tools-extra_any_changed == 'true'
+ run: |
+ cmake -B clang-tools-extra-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" -DLLVM_ENABLE_SPHINX=ON ./llvm
+ TZ=UTC ninja -C clang-tools-extra-build docs-clang-tools-html docs-clang-tools-man
+ - name: Build LLDB docs
+ if: steps.docs-changed-subprojects.outputs.lldb_any_changed == 'true'
+ run: |
+ cmake -B lldb-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;lldb" -DLLVM_ENABLE_SPHINX=ON ./llvm
+ TZ=UTC ninja -C lldb-build docs-lldb-html docs-lldb-man
+ - name: Build libunwind docs
+ if: steps.docs-changed-subprojects.outputs.libunwind_any_changed == 'true'
+ run: |
+ cmake -B libunwind-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libunwind" -DLLVM_ENABLE_SPHINX=ON ./runtimes
+ TZ=UTC ninja -C libunwind-build docs-libunwind-html
+ - name: Build libcxx docs
+ if: steps.docs-changed-subprojects.outputs.libcxx_any_changed == 'true'
+ run: |
+ cmake -B libcxx-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libcxxabi;libcxx" -DLLVM_ENABLE_SPHINX=ON ./runtimes
+ TZ=UTC ninja -C libcxx-build docs-libcxx-html
+ - name: Build libc docs
+ if: steps.docs-changed-subprojects.outputs.libc_any_changed == 'true'
+ run: |
+ cmake -B libc-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_RUNTIMES="libc" -DLLVM_ENABLE_SPHINX=ON ./runtimes
+ TZ=UTC ninja -C libc-build docs-libc-html
+ - name: Build LLD docs
+ if: steps.docs-changed-subprojects.outputs.lld_any_changed == 'true'
+ run: |
+ cmake -B lld-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="lld" -DLLVM_ENABLE_SPHINX=ON ./llvm
+ TZ=UTC ninja -C lld-build docs-lld-html
+ - name: Build OpenMP docs
+ if: steps.docs-changed-subprojects.outputs.openmp_any_changed == 'true'
+ run: |
+ cmake -B openmp-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;openmp" -DLLVM_ENABLE_SPHINX=ON ./llvm
+ TZ=UTC ninja -C openmp-build docs-openmp-html
+ - name: Build Polly docs
+ if: steps.docs-changed-subprojects.outputs.polly_any_changed == 'true'
+ run: |
+ cmake -B polly-build -GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="polly" -DLLVM_ENABLE_SPHINX=ON ./llvm
+ TZ=UTC ninja -C polly-build docs-polly-html docs-polly-man
diff --git a/.github/workflows/libcxx-check-generated-files.yml b/.github/workflows/libcxx-check-generated-files.yml
index 6f2d01ee0a56f..570055624b2a8 100644
--- a/.github/workflows/libcxx-check-generated-files.yml
+++ b/.github/workflows/libcxx-check-generated-files.yml
@@ -4,6 +4,9 @@ on:
paths:
- 'libcxx/**'
+permissions:
+ contents: read
+
jobs:
check_generated_files:
runs-on: ubuntu-latest
diff --git a/README.md b/README.md
index eb8d624d75cec..692f2bb3916f5 100644
--- a/README.md
+++ b/README.md
@@ -32,8 +32,9 @@ the [Contributing to LLVM](https://llvm.org/docs/Contributing.html) guide.
## Getting in touch
Join the [LLVM Discourse forums](https://discourse.llvm.org/), [Discord
-chat](https://discord.gg/xS7Z362), or #llvm IRC channel on
-[OFTC](https://oftc.net/).
+chat](https://discord.gg/xS7Z362),
+[LLVM Office Hours](https://llvm.org/docs/GettingInvolved.html#office-hours) or
+[Regular sync-ups](https://llvm.org/docs/GettingInvolved.html#online-sync-ups).
The LLVM project has adopted a [code of conduct](https://llvm.org/docs/CodeOfConduct.html) for
participants to all modes of communication within the project.
diff --git a/bolt/include/bolt/Core/AddressMap.h b/bolt/include/bolt/Core/AddressMap.h
index 16c2727b6943f..85a9ab4473aaf 100644
--- a/bolt/include/bolt/Core/AddressMap.h
+++ b/bolt/include/bolt/Core/AddressMap.h
@@ -6,18 +6,16 @@
//
//===----------------------------------------------------------------------===//
//
-// Helper class to create a mapping from input to output addresses needed for
-// updating debugging symbols and BAT. We emit an MCSection containing
-// pairs to the object file and JITLink will
-// transform this in pairs. The linker output
-// can then be parsed and used to establish the mapping.
+// This file contains the declaration of the AddressMap class used for looking
+// up addresses in the output object.
//
//===----------------------------------------------------------------------===//
-//
+
#ifndef BOLT_CORE_ADDRESS_MAP_H
#define BOLT_CORE_ADDRESS_MAP_H
#include "llvm/ADT/StringRef.h"
+#include "llvm/MC/MCSymbol.h"
#include
#include
@@ -30,26 +28,48 @@ namespace bolt {
class BinaryContext;
+/// Helper class to create a mapping from input entities to output addresses
+/// needed for updating debugging symbols and BAT. We emit a section containing
+/// pairs to the object file and JITLink will
+/// transform this in pairs. The linker output
+/// can then be parsed and used to establish the mapping.
+///
+/// The entities that can be mapped to output address are input addresses and
+/// labels (MCSymbol). Input addresses support one-to-many mapping.
class AddressMap {
- using MapTy = std::unordered_multimap;
- MapTy Map;
+ static const char *const AddressSectionName;
+ static const char *const LabelSectionName;
-public:
- static const char *const SectionName;
+ /// Map multiple to