[all-commits] [llvm/llvm-project] 72cb90: [PhaseOrdering] Add test for DAE/GlobalDCE interac...

Tom Stellard via All-commits all-commits at lists.llvm.org
Thu Mar 23 07:35:01 PDT 2023

  Branch: refs/heads/release/16.x
  Home:   https://github.com/llvm/llvm-project
  Commit: 72cb90bd7b628022d822215dd4b38a36f2802fbd
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    A llvm/test/Transforms/PhaseOrdering/dae-dce.ll

  Log Message:
  [PhaseOrdering] Add test for DAE/GlobalDCE interaction (NFC)

(cherry picked from commit 8df140c860f16706ee34935f95cab391bbd19627)

  Commit: b3ea3484c063af2ec05c1d90cb21409884cb4fb6
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M llvm/lib/Passes/PassBuilderPipelines.cpp
    M llvm/test/Other/new-pm-lto-defaults.ll
    M llvm/test/Transforms/PhaseOrdering/dae-dce.ll

  Log Message:
  [Pipelines] Restore old DAE position in LTO pipeline

This is a partial revert of D128830, restoring the previous
position of DeadArgElim in the fat LTO pipeline. The motivation
for this is a major code size regression observed in Rust and
illustrated in the PhaseOrdering test.

This is a conservative fix restoring the previous pipeline order.
The real problem is that the LTO pipeline is conceptually broken:
It doesn't have a CGSCC function simplification pipeline. The
inliner is just being run by itself. This wouldn't be a problem
if fat LTO used a standard design where ArgPromotion and DAE are
only run after functions have already been simplified by the
CGSCC inliner pipeline.

Differential Revision: https://reviews.llvm.org/D146051

(cherry picked from commit fb5683449e97bd8c2d107128dcf08d6f93789315)

  Commit: 7049d58957009e98f424079ad6c593a82d2d2b30
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M llvm/test/Transforms/InstCombine/icmp-range.ll
    M llvm/test/Transforms/InstCombine/zext.ll

  Log Message:
  [InstCombine] Add additional test for icmp eq/ne with bool load (NFC)

(cherry picked from commit 9043cb752d3a8a68c0e713d27600c148e18ffb95)

  Commit: 526102b37e597379962525ba4563f24735ad05a8
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
    M llvm/test/Transforms/InstCombine/div.ll
    M llvm/test/Transforms/InstCombine/icmp-range.ll
    M llvm/test/Transforms/InstCombine/icmp-shl-nsw.ll
    M llvm/test/Transforms/InstCombine/icmp-shr-lt-gt.ll
    M llvm/test/Transforms/InstCombine/zext.ll

  Log Message:
  [InstCombine] Canonicalize icmp eq pow2 more thoroughly

We currently already canonicalize icmp eq (%x & Pow2), Pow2 to
icmp ne (%x & Pow2), 0. This patch generalizes the fold based on
known bits.

In particular, this allows us to handle comparisons against
!range !{i64 0, i64 2} loads, which addresses an optimization
regression in Rust caused by 8df376db7282b955e7990cb8887ee9dcd3565040.

Differential Revision: https://reviews.llvm.org/D146149

(cherry picked from commit 61d2f3a71e61929bf9b07c90e21d268090417bdb)

  Commit: ab86d147e852c42912a2f4819f442792c962b427
  Author: Xi Ruoyao <xry111 at xry111.site>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M libunwind/src/DwarfInstructions.hpp

  Log Message:
  [libunwind][AArch64] Unbreak building with GNU assembler

GNU assembler mandates armv8.5-a for memtag instructions. Maybe
we should remove this restriction in GNU assembler, but let's work
around it for current GNU Binutils releases.

Differential Revision: https://reviews.llvm.org/D146109

(cherry picked from commit 5d276380b0b45c3f02ef3c8614c3be95ce1bcb1e)

  Commit: a824efcd015895e7e975db96394ee86dc9efd870
  Author: Yonghong Song <yhs at fb.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M llvm/lib/Target/BPF/BTFDebug.cpp
    M llvm/lib/Target/BPF/BTFDebug.h
    A llvm/test/CodeGen/BPF/BTF/pruning-dup-ptr-struct.ll

  Log Message:
  [BPF] Improve pruning to avoid generate more types in BTF

Commit 3671bdbcd214("[BPF] Fix a BTF type pruning bug") fixed a
pruning bug to allow generate more types. But the commit has a bug
which permits to generate more types than necessary. The following
is an example to illustrate the problem.

   struct t1 {
     int a;
   struct t2 {
     struct t1 *p1;
     struct t1 *p2;
     int b;
   int foo(struct t2 *arg) {
     return arg->b;

The following is the part of BTF generation sequence:
  (1). 'struct t2 *arg' -> 'struct t1 *p1'
       In this step, the type 'struct t1' will be generated as
       a forward decl and the ptr type (to 'struct t1') will
       be stored in the internal type table.
  (2). now the second field 'struct t1 *p2' will be processed.
       Since the ptr type (to 'struct t1') already in the type
       table, the existing logic strips out ptr modifier and
       is able to generate BTF type for 'struct t1'.

In the above step (2), if CheckPointer is true (the type traversal
chain including a struct member), 'ptr' modifier should be checked
and the subsequent type generation should be skipped since
the same case has been processed in visitDerivedType().

The issue is exposed when I am trying to use llvm15 to compile
some internal bpf programs. The bpf skeleton put the whole
ELF section (after striping some sections like dwarf) as a string.
The large BTF section triggered the following error:

  error: string literal of length 140144 exceeds maximum length 65536 that C++ compilers
  are required to support [-Werror,-Woverlength-strings]
        return (const void *)"\
  1 error generated.

Although adding -Wno-overlength-strings could workaround the issue,
improving llvm BTF generation sounds better esp. for users using vmlinux.h.

Differential Revision: https://reviews.llvm.org/D145816

(cherry picked from commit db3d2adecb4a1f613c7950fa36d1cd7aa38c9f22)

  Commit: 6d3b7679ef212fce3291af97eea625f252b4829b
  Author: Weining Lu <luweining at loongson.cn>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
    A lldb/test/Shell/ObjectFile/ELF/loongarch64-relocations.yaml

  Log Message:
  [LLDB][ObjectFileELF] Support LoongArch64 in ApplyReloctions

Currently ApplyReloctions() deals with different archs' relocation types
together (in a single `switch() {..}`). I think it is incorrect because
different relocation types of different archs may have same enum values.

For example:
`R_LARCH_32` and `R_X86_64_64` are both `1`;
`R_LARCH_64` and `R_X86_64_PC32` are both `2`.

This patch handles each arch in seperate `switch()` to solve the enum
values conflict issue.

And a new test is added for LoongArch64.

Reviewed By: DavidSpickett

Differential Revision: https://reviews.llvm.org/D145462

(cherry picked from commit c2c93873d1912a62685818ec9f4e020ee7a1c616)

  Commit: 7d28293f17fab8a6307158ec36c27ee11b4b404e
  Author: Weining Lu <luweining at loongson.cn>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
    M lldb/test/Shell/ObjectFile/ELF/loongarch64-relocations.yaml

  Log Message:
  [LLDB][ObjectFileELF] Correct the return type of RelocOffset64 and RelocAddend64

According to `/usr/include/elf.h` and `lldb/source/Plugins/ObjectFile/ELF/ELFHeader.h`.
For ELF64 relocation, types of `offset` and `addend` should be `elf_addr` and `elf_sxword`.

Reviewed By: DavidSpickett

Differential Revision: https://reviews.llvm.org/D145550

(cherry picked from commit 174a38f9c3167573e060493b94135cf453d27879)

  Commit: 0e227de08e3285ab3115d2e8b3a1458dbcfef09e
  Author: Weining Lu <luweining at loongson.cn>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp

  Log Message:
  [LLDB][ObjectFileELF] Correct the return type of Reloc{Offset,Addend}32

This is a follow up of D145550.

I think Reloc{Type,Symbol}{32,64} can keep unchanged as they are not
directly returning a field of the ELFRel[a] struct.

Reviewed By: DavidSpickett

Differential Revision: https://reviews.llvm.org/D145571

(cherry picked from commit 27705f456a3a03e7c935f7f573c05f742df4f272)

  Commit: 2ecbe73ceedaef5c8cc8fc1f233286935aa4cb06
  Author: Jay Foad <jay.foad at amd.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M flang/lib/Optimizer/Builder/Character.cpp

  Log Message:
  [flang] Fix dereference of std::optional with no value

Differential Revision: https://reviews.llvm.org/D142648

(cherry picked from commit 6772966dcdf5175c517832c1b2352b4fcd1d6b16)

  Commit: fbf716ffe163eb03a81f66eaa3db839cc6d3975e
  Author: Slava Zakharin <szakharin at nvidia.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M flang/lib/Semantics/canonicalize-acc.cpp

  Log Message:
  [flang] Fixed restrictions checking for OpenACC loop-associated constructs.

CheckDoConcurrentClauseRestriction and CheckTileClauseRestriction expect
that the construct has associated DoConstruct, while it is not set
when the do-loop has no loop control. The change is to skip the clauses
checks, when the do-loop does not have the loop control.

An alternative fix would be to associate the DoConstruct even when
the do-loop has no loop control and let Check*ClauseRestriction run their
checks, but I am not sure if associating invalid DoConstruct is a good idea.

This fixes failure in Semantics/OpenACC/acc-canonicalization-validity.f90
reported in D142279.

Reviewed By: clementval

Differential Revision: https://reviews.llvm.org/D142652

(cherry picked from commit 02445263e2f533573a935c1bd502d848bbe6bb27)

  Commit: aef3508f89c4e9a075edb8fe3dda5e4901928538
  Author: Slava Zakharin <szakharin at nvidia.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M flang/lib/Frontend/FrontendActions.cpp

  Log Message:
  [flang] Fixed uninitialized std::unique_ptr dereference.

This fixes unittest failures reported in D142279:
  flang-Unit :: Frontend/./FlangFrontendTests/5/7
  flang-Unit :: Frontend/./FlangFrontendTests/6/7

(cherry picked from commit e054e0da9fd7055142188036ee713e8c0697324b)

  Commit: bb6a97c15aa2d07858feb43801c352c9bb578a42
  Author: Sebastian Pop <spop at amazon.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M bolt/lib/Core/Exceptions.cpp
    A bolt/test/AArch64/Inputs/dw_cfa_gnu_window_save.yaml
    A bolt/test/AArch64/dw_cfa_gnu_window_save.test

  Log Message:
  [AArch64] fix bug #55005 handle DW_CFA_GNU_NegateRAState

GCC on AArch64 uses DW_CFA_GNU_NegateRAState for return address signing.

Differential Revision: https://reviews.llvm.org/D142572

(cherry picked from commit 9921197920fc3e9ad9605bd8fe0e835ca2dd41a5)

  Commit: b5f9ea64b2072bba269441ae27b37584215daeee
  Author: Xiang1 Zhang <xiang1.zhang at intel.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M llvm/lib/Target/X86/X86InstrSSE.td
    A llvm/test/CodeGen/X86/avx512bf16-mov.ll

  Log Message:
  [X86] Support load/store for bf16 in avx

Reviewed By: LuoYuanke
Differential Revision: https://reviews.llvm.org/D144163

(cherry picked from commit 96df79af029b85616ab90e73143e0e8ae89c7b46)

  Commit: 830229ee918d64f1250be584e4b373a553108be5
  Author: Nikita Popov <npopov at redhat.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M llvm/lib/IR/AutoUpgrade.cpp
    A llvm/test/Assembler/autoupgrade-wasm-intrinsics.ll

  Log Message:
  [WebAssembly] Add auto-upgrade for renamed intrinsics

D138249 renamed a number of wasm intrinsics without implementing
auto-upgrade support.

Differential Revision: https://reviews.llvm.org/D146424

(cherry picked from commit 6fc670e5e370e90759b5adecd9980b63609dc2f8)

  Commit: 1172ed57d8234990b277281b3084969fcdb38602
  Author: Balazs Benics <benicsbalazs at gmail.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M clang/lib/StaticAnalyzer/Core/RegionStore.cpp
    M clang/test/Analysis/initialization.cpp

  Log Message:
  [analyzer] Fix crashing getSValFromInitListExpr for nested initlists

In the following example, we will end up hitting the `llvm_unreachable()`:
enum class E {};
const E glob[] = {{}};
void initlistWithinInitlist() {
  clang_analyzer_dump(glob[0]); // crashes at loading from `glob[0]`

We should just return `std::nullopt` instead for these cases.
It's better than crashing.

Reviewed By: xazax.hun

Differential Revision: https://reviews.llvm.org/D146538

(cherry picked from commit 558b46fde2db2215794336bbd08e411fee5240d7)

  Commit: 2861fa247395312baad6a4628a9066190b7d0e55
  Author: Brad Smith <brad at comstyle.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M clang/lib/Basic/Targets/ARM.cpp
    M clang/lib/Driver/ToolChains/FreeBSD.cpp
    M clang/lib/Driver/ToolChains/FreeBSD.h
    M clang/test/Driver/arm-abi.c
    M clang/test/Driver/freebsd.c
    M llvm/lib/TargetParser/ARMTargetParser.cpp

  Log Message:
  [Driver][FreeBSD] Simplify ARM handling

Since FreeBSD 8 / 9 support was dropped from the Driver there is room to simplify
things with the ARM handling.

The exception model handling function can be removed.

EABI is now the default.

Reviewed By: dim

Differential Revision: https://reviews.llvm.org/D144823

(cherry picked from commit 13a10e7ec90a71c3665491231d468772c19a4b59)

  Commit: ba22382d514b0d3f1e5ce8fdba3e6b6cb7e6b4c3
  Author: Nabeel Omer <me at nabeelomer.me>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    A llvm/test/CodeGen/X86/pr61384.ll

  Log Message:
  [X86] Add negative test for D145930

This patch adds a negative test for the issue discovered in D145930.

Differential Revision: https://reviews.llvm.org/D145933

(cherry picked from commit d8c2a10297f19b708ed0dae8d0fe8415a0f8e5e8)

  Commit: 3c0850337bd8c426c0a01599af00a843b294a4d8
  Author: Nabeel Omer <me at nabeelomer.me>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M llvm/lib/Target/X86/X86InstrCompiler.td
    M llvm/test/CodeGen/X86/pr61384.ll

  Log Message:
  [X86] Fix encoding for ATOMIC_LOGIC_OP

Fixes PR#61384.

Differential Revision: https://reviews.llvm.org/D145930

(cherry picked from commit 2ebbcfa07edd9f16bf28cbf1deaaa302503fd330)

  Commit: bec9a607690bdd14e24f4260c8baccb2db387175
  Author: Frederic Cambus <fred at statdns.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp

  Log Message:
  [compiler-rt] Add missing #else clause to fix the build on NetBSD.

An #elif SANITIZER_SOLARIS clause was removed in D120048, but it also
removed the #else clause for the error fallback, causing the build to
fail on NetBSD.

Differential Revision: https://reviews.llvm.org/D146316

(cherry picked from commit 8510cf9fc1a431b70737b2b046007d318c62b7a8)

  Commit: 56edf062bdb64f0ce89860ed3e643f29a2f90e45
  Author: Alexey Lapshin <a.v.lapshin at mail.ru>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M llvm/include/llvm/ADT/AddressRanges.h
    M llvm/include/llvm/DWARFLinker/DWARFLinkerCompileUnit.h
    M llvm/lib/DWARFLinker/DWARFLinker.cpp
    M llvm/lib/DWARFLinker/DWARFStreamer.cpp
    R llvm/lib/Support/AddressRanges.cpp
    M llvm/lib/Support/CMakeLists.txt
    M llvm/unittests/Support/AddressRangeTest.cpp

  Log Message:
  [dsymutil] dsymutil produces broken lines info (probably) with LTO on mac

This patch fixes #60307 issue. The 8bb4451 introduces the possibility
to unite overlapped or adjacent address ranges to keep address ranges
in an unambiguous state. The AddressRangesMap is used to normalize
address ranges. The AddressRangesMap keeps address ranges and the value
of the relocated address. For intersected range, it creates a united
range that keeps the last inserted mapping value. The same for adjusted ranges.
While it is OK to use the last inserted mapping value for intersected ranges
(as there is no way how to resolve ambiguity) It is not OK to use the
last inserted value for adjacent address ranges. Currently, two following
address ranges are united into a single one:

{0,24,17e685c} {24,d8,55afe20} -> {0,d8,55afe20}

To avoid the problem, the AddressRangesMap should not unite adjacent address ranges
with different relocated addresses. Instead, it should leave adjacent address ranges
as separate ranges. So, the ranges should look like this:

{0,24,17e685c} {24,d8,55afe20}

Differential Revision: https://reviews.llvm.org/D142936

(cherry picked from commit 1e72920c8859771c03177623ad7519543d78eb7d)

  Commit: a70565f7de2e3b07a8fd07b54f76c95c82dd34b8
  Author: Ian Anderson <iana at apple.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M libunwind/include/libunwind.modulemap
    M libunwind/include/unwind.h

  Log Message:
  [libunwind][Modules] Add unwind_arm_ehabi.h and unwind_itanium.h to the unwind module)

Add unwind_arm_ehabi.h and unwind_itanium.h to the unwind module and use angle includes to include them.

Reviewed By: ldionne, #libunwind

Differential Revision: https://reviews.llvm.org/D144323

(cherry picked from commit 1187d8a62ba288e2221731f1795fa184571cd854)

  Commit: 37ea87b88d07107be5a5c34bea74bec385567bc4
  Author: Aaron Ballman <aaron at aaronballman.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M clang/docs/ReleaseNotes.rst
    M clang/include/clang/Basic/DiagnosticSemaKinds.td
    A clang/test/SemaCXX/cxx2b-overloaded-operator-pedantic.cpp

  Log Message:
  No longer issue pedantic warning about pre-c++2b compat

We were accidentally issuing "overloaded 'operator[]' with more than
one parameter is a C++2b extension" with -pedantic because it was an
ExtWarn diagnostic rather than a Warning. This corrects the diagnostic
category and adds some test coverage.

Fixes #61582

  Commit: 2352a1b1e9171470724a136ec80ac7ed62adf8f0
  Author: Markus M├╝tzel <markus.muetzel at gmx.de>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M lld/COFF/MinGW.cpp

  Log Message:
  Reapply [lld][flang] Add exceptions for Flang runtime libraries on MinGW.

When linking a shared library with Flang on MinGW, the functions from the
Flang runtime are exported from the shared library. When trying to link an
executable to that library using Flang, the linker errors out because the
functions from the runtime conflict with the functions exported from the
shared library.

Add the Flang runtime libraries to the list of libraries for which no
symbols are exported.

Reapplying the patch with the git author name corrected.

Reviewed By: mstorsjo

Differential Revision: https://reviews.llvm.org/D145389

(cherry picked from commit 0ea8229bf87857e70a38b31b18f6e7c6cd993b9b)

  Commit: c5b23ab2a31abad97e59cd1da5dc59ca37912a82
  Author: Tom Stellard <tstellar at redhat.com>
  Date:   2023-03-23 (Thu, 23 Mar 2023)

  Changed paths:
    M llvm/lib/ExecutionEngine/JITLink/ELF_aarch64.cpp

  Log Message:
  JITLink: Add missing EHFrame NULL terminator on aarch64/ELF

This fixes test failures on AArch64 with libgcc-13:

Clang :: Interpreter/global-dtor.cpp
Clang-Unit :: Interpreter/./ClangReplInterpreterTests/2/4

Reviewed By: lhames, v.g.vassilev

Differential Revision: https://reviews.llvm.org/D146067

(cherry picked from commit 68c14f582ce64ae6bd79e78b609fa3469af0ed83)

Compare: https://github.com/llvm/llvm-project/compare/08d094a0e457...c5b23ab2a31a

More information about the All-commits mailing list