Changes

Summary

  1. [compiler-rt] assert max virtual address is <= mmap range size (details)
  2. [ThinLTO] Copy UnnamedAddr when spliting module. (details)
  3. Revert "[SLP]Add detection of shuffled/perfect matching of tree entries." (details)
  4. [M68k] Change printing of absolute memory references (details)
  5. [M68k] Implement Disassembler (details)
  6. [PhaseOrdering] add test to show unintended code sinking; NFC (details)
  7. Revert "[clang-scan-deps] Add support for clang-cl" (details)
  8. [libc++][gardening] Replace instances of `\x{AD}`. (details)
  9. Reset NextFnNum in MachineModuleInfo::initialize (details)
  10. [M68k] Put M68kDesc as the direct library dependency for disassembler (details)
  11. Add a cache of checked AttributeLists. (details)
  12. [libc++] [C++20] [P0586] Implement safe integral comparisons (details)
  13. [lldb] Fix demangler leaks in the DWARF AST parser (details)
  14. [InstCombine] Enhance deduction of alignment for aligned_alloc (details)
Commit cc2b62a06e616c6406b0f1387625b50d3d0639ad by code
[compiler-rt] assert max virtual address is <= mmap range size

If these sizes do not match, asan will not work as expected.

If possible, assert at compile time that the vm size is less than or equal to mmap range.
If a compile time assert is not possible, check at run time (for iOS)

rdar://76477969

Reviewed By: delcypher, yln

Differential Revision: https://reviews.llvm.org/D100239
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_mac.cpp
Commit e28435caf63b1d2437538c2b581bf005d3c57fb2 by zequanwu
[ThinLTO] Copy UnnamedAddr when spliting module.

The unnamedaddr property of a function is lost when using
`-fwhole-program-vtables` and thinlto which causes size increase under linker's
safe icf mode.

The size increase of chrome on Linux when switching from all icf to safe icf
drops from 5 MB to 3 MB after this change, and from 6 MB to 4 MB on Windows.

There is a repro:
```
# a.h
struct A {
  virtual int f();
  virtual int g();
};

# a.cpp
#include "a.h"
int A::f() { return 10; }
int A::g() { return 10; }

# main.cpp
#include "a.h"

int g(A* a) {
  return a->f();
}

int main(int argv, char** args) {
  A a;
  return g(&a);
}

$ clang++ -O2 -ffunction-sections -flto=thin -fwhole-program-vtables -fsplit-lto-unit -c main.cpp -o main.o  && clang++ -Wl,--icf=safe -fuse-ld=lld  -flto=thin main.o -o a.out && llvm-readobj -t a.out | grep -A 1 -e _ZN1A1fEv -e _ZN1A1gEv
    Name: _ZN1A1fEv (480)
    Value: 0x201830
--
    Name: _ZN1A1gEv (490)
    Value: 0x201840
```

Differential Revision: https://reviews.llvm.org/D100498
The file was modifiedllvm/test/Transforms/ThinLTOBitcodeWriter/split-vfunc.ll
The file was modifiedllvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
Commit 8030481065334eafaae2791998ab1c69fda0eac1 by a.bataev
Revert "[SLP]Add detection of shuffled/perfect matching of tree entries."

This reverts commit d6fde913790db898e72e27b51defbc7442f3418a to fix
compiler crashes.
The file was modifiedllvm/test/Transforms/SLPVectorizer/AArch64/gather-cost.ll
The file was modifiedllvm/test/Transforms/SLPVectorizer/X86/matched-shuffled-entries.ll
The file was modifiedllvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
Commit 6de262827c292c510dc5c27c6b6ce15276295236 by rickytaylor26
[M68k] Change printing of absolute memory references

This also includes PC-relative addresses since they are still
referenced as absolute addresses in assembly and converted to
relative addresses by the assembler.

This changes, for example:
- `bra #-2` -> `bra $100`
- `jsr #16` -> `jsr $10`

Differential Revision: https://reviews.llvm.org/D100697
The file was modifiedllvm/lib/Target/M68k/MCTargetDesc/M68kInstPrinter.h
The file was modifiedllvm/lib/Target/M68k/MCTargetDesc/M68kInstPrinter.cpp
Commit 2221185776c39aab7b49a141993fa9a0d752a8d5 by rickytaylor26
[M68k] Implement Disassembler

This is an implementation of a disassembler for M68k.

Differential Revision: https://reviews.llvm.org/D98540
The file was modifiedllvm/lib/Target/M68k/CMakeLists.txt
The file was addedllvm/test/MC/Disassembler/M68k/instructions.txt
The file was addedllvm/lib/Target/M68k/Disassembler/M68kDisassembler.cpp
The file was addedllvm/lib/Target/M68k/Disassembler/CMakeLists.txt
The file was addedllvm/test/MC/Disassembler/M68k/lit.local.cfg
Commit 152efbc19a88a85030cb98e6a83a2a17a4eb6ee9 by spatel
[PhaseOrdering] add test to show unintended code sinking; NFC

See D87479 for discussion.
The file was addedllvm/test/Transforms/PhaseOrdering/lto-licm.ll
Commit 199c39748292cbc89cd148a0d8364ebb1014ec38 by alexandre.ganea
Revert "[clang-scan-deps] Add support for clang-cl"

This reverts commit bb26fa8c286bf524ed9235c3e293ad22ecf3e984.
The file was modifiedclang/test/ClangScanDeps/regular_cdb.cpp
The file was modifiedclang/test/ClangScanDeps/Inputs/headerwithdirname.json
The file was removedclang/test/ClangScanDeps/Inputs/modules_cdb_clangcl.json
The file was modifiedclang/test/ClangScanDeps/header_stat_before_open.m
The file was modifiedclang/test/ClangScanDeps/Inputs/vfsoverlay_cdb.json
The file was modifiedclang/test/ClangScanDeps/has_include_if_elif.cpp
The file was modifiedclang/test/ClangScanDeps/target-filename.cpp
The file was modifiedclang/test/ClangScanDeps/no-werror.cpp
The file was modifiedclang/test/ClangScanDeps/headerwithdirname.cpp
The file was modifiedclang/test/ClangScanDeps/strip_diag_serialize.cpp
The file was modifiedclang/test/ClangScanDeps/Inputs/no-werror.json
The file was modifiedclang/test/ClangScanDeps/Inputs/static-analyzer-cdb.json
The file was modifiedclang/test/ClangScanDeps/headerwithdirnamefollowedbyinclude.cpp
The file was modifiedclang/test/ClangScanDeps/Inputs/target-filename-cdb.json
The file was modifiedclang/test/ClangScanDeps/error.cpp
The file was modifiedclang/test/ClangScanDeps/Inputs/headerwithdirnamefollowedbyinclude.json
The file was modifiedclang/test/ClangScanDeps/vfsoverlay.cpp
The file was modifiedclang/test/ClangScanDeps/Inputs/has_include_if_elif.json
The file was removedclang/test/ClangScanDeps/Inputs/regular_cdb_clangcl.json
The file was modifiedclang/test/ClangScanDeps/static-analyzer.c
The file was modifiedclang/test/ClangScanDeps/modules-full.cpp
The file was modifiedclang/test/ClangScanDeps/Inputs/strip_diag_serialize.json
The file was modifiedclang/test/ClangScanDeps/modules.cpp
The file was modifiedclang/test/ClangScanDeps/Inputs/header_stat_before_open_cdb.json
The file was modifiedclang/tools/clang-scan-deps/ClangScanDeps.cpp
Commit 2218f5998b5b274f4c50d1a5fa2728a87594377e by zoecarver
[libc++][gardening] Replace instances of `\x{AD}`.

This is a NFC.

Differential Revision: https://reviews.llvm.org/D100799
The file was modifiedlibcxx/docs/DesignDocs/FileTimeType.rst
The file was modifiedlibcxx/docs/OneRangesProposalStatus.csv
The file was modifiedlibcxx/test/std/utilities/time/time.cal/time.cal.ymwd/time.cal.ymwd.members/ok.pass.cpp
Commit 76b0ea7f2d5c935bc7975d6b77db20f947e13f9a by daniel_l_sanders
Reset NextFnNum in MachineModuleInfo::initialize

In an env that reuses compiler instances for multiple compilations, this
omission results in non-deterministic assembly output (names of the
auto-generated labels) if the order or full set of Modules compiled
varies.

Differential Revision: https://reviews.llvm.org/D100797
The file was modifiedllvm/lib/CodeGen/MachineModuleInfo.cpp
Commit 7ac461f6f7059c4e4ecbd99330a9a6bffef0133b by minyihh
[M68k] Put M68kDesc as the direct library dependency for disassembler

M68kDisassembler should put M68kDesc as its direct library dependency
since it uses logics releated to code beads Otherwise the build will
fail when building LLVM libraries as shared objects (building LLVM
libraries statically won't have this problem though)
The file was modifiedllvm/lib/Target/M68k/Disassembler/CMakeLists.txt
Commit cf899a31aebf60e91a8732c6c5900398797230be by nicholas
Add a cache of checked AttributeLists.

Differential Revision: https://reviews.llvm.org/D100738
The file was modifiedllvm/lib/IR/Verifier.cpp
Commit 36c3918ec55b49180933acceb36dbd9e8b5c97ed by kamleshbhalui
[libc++] [C++20] [P0586] Implement safe integral comparisons

* https://wg21.link/P0586

Reviewed By: #libc, curdeius, Quuxplusone

Differential Revision: https://reviews.llvm.org/D94511
The file was addedlibcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_greater_equal/cmp_greater_equal.pass.cpp
The file was addedlibcxx/test/std/utilities/utility/utility.intcmp/intcmp.in_range/in_range.pass.cpp
The file was addedlibcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_less_equal/cmp_less_equal.pass.cpp
The file was modifiedlibcxx/utils/generate_feature_test_macro_components.py
The file was modifiedlibcxx/include/utility
The file was modifiedlibcxx/test/std/language.support/support.limits/support.limits.general/utility.version.pass.cpp
The file was addedlibcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_greater/cmp_greater.pass.cpp
The file was modifiedlibcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
The file was addedlibcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_equal/cmp_equal.pass.cpp
The file was modifiedlibcxx/docs/FeatureTestMacroTable.rst
The file was addedlibcxx/test/std/utilities/utility/utility.intcmp/intcmp.fail.cpp
The file was addedlibcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_not_equal/cmp_not_equal.pass.cpp
The file was modifiedlibcxx/include/version
The file was addedlibcxx/test/std/utilities/utility/utility.intcmp/intcmp.cmp_less/cmp_less.pass.cpp
The file was modifiedlibcxx/docs/Cxx2aStatusPaperStatus.csv
Commit a2cd6d07691a645bfb8fb5eeeba2eb5970312c7f by i
[lldb] Fix demangler leaks in the DWARF AST parser

This fixes 6 check-lldb-shell failures in a `-DLLVM_USE_SANITIZER=Leaks` build.

Differential Revision: https://reviews.llvm.org/D100800
The file was modifiedlldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
Commit 324d641b75b54a8772c3c9a881eedad62dc5518c by Dávid Bolvanský
[InstCombine] Enhance deduction of alignment for aligned_alloc

This patch improves https://reviews.llvm.org/D76971 (Deduce attributes for aligned_alloc in InstCombine) and implements "TODO" item mentioned in the review of that patch.

> The function aligned_alloc() is the same as memalign(), except for the added restriction that size should be a multiple of alignment.

Currently, we simply bail out if we see a non-constant size - change that.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D100785
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineCalls.cpp
The file was modifiedllvm/lib/Transforms/InstCombine/InstCombineInternal.h
The file was modifiedllvm/test/Transforms/InstCombine/deref-alloc-fns.ll