Changes

Summary

  1. [C++20] [Modules] [Concepts] Recognize same concepts more precisely in Serialization (details)
  2. [CMake] Specify byproducts for custom libcxx builds (details)
  3. Allow DataLayout to support arbitrary pointer sizes (details)
  4. Revert "[OpenMP][AMDGPU] Switch host-device memory copy to asynchronous version" (details)
  5. [NFC] Only attach a declaration to global module fragment if it appears in a module (details)
  6. [ARM][libunwind] add PACBTI-M support for libunwind (details)
  7. [SDAG] Refine MMO size when converting masked load/store to normal load/store (details)
  8. Add note about inlining dllimport functions to the attribute docs (details)
  9. [clang][deps] Reset some benign codegen options (details)
  10. [llvm] Remove out-of-date fixme from SmallVectorMemoryBuffer (details)
Commit e166755a691921612274fdad945d3a6b05d00439 by yedeng.yd
[C++20] [Modules] [Concepts] Recognize same concepts more precisely in Serialization

The compiler would judge two concepts is same by their addresses.
However, when we use modules, the addresses wouldn't be the same all the
time since one is parsed in their TU and another is imported in another
TU.
This patch fixes this by using isSameEntity to judge the two concepts.

Reviewed By: rsmith

Differential Revision: https://reviews.llvm.org/D114769
The file was modifiedclang/lib/Serialization/ASTReaderDecl.cpp
The file was addedclang/test/Modules/concept.cppm
The file was addedclang/test/Modules/Inputs/concept/A.cppm
The file was addedclang/test/Modules/Inputs/concept/foo.h
Commit 40028eaf703afdf5e50e05ac601b44501e285a42 by phosek
[CMake] Specify byproducts for custom libcxx builds

These were removed in bda3f2dd763b06427dd2713aa062e356c9d7bdc6 but
are needed as it turned out for the MSan tests.
The file was modifiedcompiler-rt/cmake/Modules/AddCompilerRT.cmake
Commit 0fcb16eeb2284ad9b865d5865ae1b3c3a71a84d9 by stephen.neuendorffer
Allow DataLayout to support arbitrary pointer sizes

Currently, it is impossible to specify a DataLayout with pointer
size and index size that is not a whole number of bytes.
This patch modifies
the DataLayout class to accept arbitrary pointer sizes and to
store the size as a number of bits, rather than as a number of bytes.
Generally speaking, the external interface of the class as used
by in-tree architectures remains the same and shouldn't affect the
behavior of architecures with pointer sizes equal to a whole number
of bytes.

Note the interface of setPointerAlignment has changed and takes
a pointer and index size that is a number of bits, rather than a number
of bytes.

Patch originally by Ajit Kumar Agarwal

Differential Revision: https://reviews.llvm.org/D114141
The file was modifiedllvm/lib/IR/DataLayout.cpp
The file was modifiedllvm/include/llvm/IR/DataLayout.h
The file was addedllvm/test/Assembler/datalayout-anypointersize.ll
The file was modifiedllvm/test/Assembler/invalid-datalayout7.ll
Commit 14ff611fe12f84324febbf94cb1d93de7a5eb95d by jonathanchesterfield
Revert "[OpenMP][AMDGPU] Switch host-device memory copy to asynchronous version"

This reverts commit 6de698bf10996b532632bb9dfa9fd420c5af62af.
It didn't build in the dynamic_hsa configuration
The file was modifiedopenmp/libomptarget/plugins/amdgpu/impl/impl.cpp
The file was modifiedopenmp/libomptarget/plugins/amdgpu/src/rtl.cpp
The file was modifiedopenmp/libomptarget/plugins/amdgpu/impl/impl_runtime.h
Commit 96b92d5b3ec43be18146a346b65cc82766cf8b3a by yedeng.yd
[NFC] Only attach a declaration to global module fragment if it appears in a module
The file was modifiedclang/lib/Sema/SemaDeclCXX.cpp
Commit e6d0b851f854849240bc1f02901b0dbb3be84388 by ties.stuij
[ARM][libunwind] add PACBTI-M support for libunwind

This patch implements the following:

- Emit PACBTI-M build attributes in libunwind asm files

- Authenticate LR in DWARF32 using PACBTI

Use Armv8.1-M.Main PACBTI extension to authenticate the return address
(stored in the LR register) before moving it to the PC (IP) register.

The AUTG instruction is used with the candidate return address, the CFA,
and the authentication code that is retrieved from the saved
pseudo-register RA_AUTH_CODE.

- Authenticate LR in EHABI using PACBTI

Authenticate the contents of the LR register using Armv8.1-M.Main PACBTI
extension.

A new frame unwinding instruction is introduced (0xb4). This
instruction pops out of the stack the return address authentication
code, which is then used in conjunction with the SP and the next-to-be
instruction pointer to perform authentication.

This authentication code is popped into a new register,
UNW_ARM_PSEUDO_PAC, which is a pseudo-register.

This patch is part of a series that adds support for the PACBTI-M extension of
the Armv8.1-M architecture, as detailed here:

https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/armv8-1-m-pointer-authentication-and-branch-target-identification-extension

The PACBTI-M specification can be found in the Armv8-M Architecture Reference
Manual:

https://developer.arm.com/documentation/ddi0553/latest

The following people contributed to this patch:

- Momchil Velikov
- Victor Campos
- Ties Stuij

Reviewed By: #libunwind, danielkiss, mstorsjo

Differential Revision: https://reviews.llvm.org/D112430
The file was modifiedlibunwind/src/Unwind-EHABI.cpp
The file was modifiedlibunwind/src/UnwindCursor.hpp
The file was modifiedlibunwind/src/UnwindRegistersRestore.S
The file was modifiedclang/lib/Headers/unwind.h
The file was modifiedlibunwind/include/unwind_arm_ehabi.h
The file was modifiedlibunwind/src/DwarfInstructions.hpp
The file was modifiedlibunwind/src/Registers.hpp
The file was modifiedlibunwind/include/libunwind.h
The file was modifiedlibunwind/src/assembly.h
Commit 5d7efd4758b3d764f08e07abe05b821242e75830 by david.green
[SDAG] Refine MMO size when converting masked load/store to normal load/store

After D113888 / 32b6c17b29079e7d the MMO size of a masked loads/store is
unknown. When we are converting back to a standard load/store because
the mask is known all ones, we can refine that to the correct size from
the size of the vector being loaded/stored.

Differential Revision: https://reviews.llvm.org/D114582
The file was modifiedllvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
The file was addedllvm/test/CodeGen/X86/masked_loadstore_split.ll
Commit 0a54c325beff37c57991e88799c213534c1fa6a9 by hans
Add note about inlining dllimport functions to the attribute docs

Differential revision: https://reviews.llvm.org/D115252
The file was modifiedclang/include/clang/Basic/AttrDocs.td
Commit 5b6c08379b437cb22fcd63707b94df1ede23d9db by Jan Svoboda
[clang][deps] Reset some benign codegen options

Some command-line codegen arguments are likely to differ between identical modules discovered from different translation units. This patch removes them to make builds deterministic and/or reduce the number of built modules.

Reviewed By: Bigcheese

Differential Revision: https://reviews.llvm.org/D112923
The file was modifiedclang/test/ClangScanDeps/Inputs/removed-args/cdb.json.template
The file was modifiedclang/lib/Tooling/DependencyScanning/ModuleDepCollector.cpp
The file was modifiedclang/test/ClangScanDeps/removed-args.c
Commit 9b914aacbd5414e48fa2a58e0082e7b69c783278 by Jan Svoboda
[llvm] Remove out-of-date fixme from SmallVectorMemoryBuffer

This fixme first appeared in the codebase with the introduction of `ObjectMemoryBuffer` in rG93de2a12a36feaf1e6d8ff28c76db9b6cda4e844, but the constructor appears to never have been templated.

Reviewed By: dexonsmith

Differential Revision: https://reviews.llvm.org/D115044
The file was modifiedllvm/include/llvm/Support/SmallVectorMemoryBuffer.h