SuccessChanges

Changes from Git (git http://labmaster3.local/git/llvm-project.git)

Summary

  1. [LoopLoadElim] Add test showing that LoopLoadElim doesn't work correctly with new PM (details)
  2. [ARM][MVE] Optimise offset addresses of gathers/scatters (details)
  3. [IfConversion] Disallow TrueBB == FalseBB for valid diamonds (details)
  4. [X86][MC] Support enhanced relaxation for branch align (details)
Commit 7adb9e06fd0dd49891e491cba9705e9dd119440e by mkazantsev
[LoopLoadElim] Add test showing that LoopLoadElim doesn't work correctly with new PM
The file was modifiedllvm/lib/Transforms/Scalar/LoopLoadElimination.cpp
The file was addedllvm/test/Transforms/LoopLoadElim/new-pm-preheader-problem.ll
Commit 89e1248d7b76886912f499391719e68b27e42ec3 by anna.welker
[ARM][MVE] Optimise offset addresses of gathers/scatters

This patch adds an analysis of the offset addresses used by gathers
and scatters to the MVEGatherScatterLowering pass to find
multiplications and additions that are loop invariant and thus can
be moved into the loop preheader, avoiding to execute them each time.

Differential Revision: https://reviews.llvm.org/D76681
The file was addedllvm/test/CodeGen/Thumb2/mve-gather-optimisation-deep.ll
The file was modifiedllvm/lib/Target/ARM/MVEGatherScatterLowering.cpp
The file was modifiedllvm/test/CodeGen/ARM/O3-pipeline.ll
The file was addedllvm/test/CodeGen/Thumb2/mve-gather-scatter-optimisation.ll
Commit 893df2032d480bf791a69fe965c3ca4ef500145b by mikael.holmen
[IfConversion] Disallow TrueBB == FalseBB for valid diamonds

Summary:
This fixes PR45302.

Previously the case

     BB1
     / \
    |   |
   TBB FBB
    |   |
     \ /
     BB2

was treated as a valid diamond also when TBB and FBB was the same basic
block. This then lead to a failed assertion in IfConvertDiamond.

Since TBB == FBB is quite a degenerated case of a diamond, we now
don't treat it as a valid diamond anymore, and thus we will avoid the
trouble of making IfConvertDiamond handle it correctly.

Reviewers: efriedma, kparzysz

Reviewed By: efriedma

Subscribers: hiraditya, llvm-commits

Differential Revision: https://reviews.llvm.org/D77651
The file was modifiedllvm/lib/CodeGen/IfConversion.cpp
The file was addedllvm/test/CodeGen/ARM/ifcvt_diamondSameTrueFalse.mir
Commit 916044d819c8e383fe1cd99190e3ff572d80f48f by shengchen.kan
[X86][MC] Support enhanced relaxation for branch align

Summary:
Since D75300 has been landed, I want to support enhanced relaxation when we need to align branches and allow prefix padding. "Enhanced Relaxtion" means we allow an instruction that could not be traditionally relaxed to be emitted into RelaxableFragment so that we increase its length by adding prefixes for optimization.

The motivation is straightforward, RelaxFragment is mostly for relative jumps and we can not increase the length of jumps when we need to align them, so if we need to achieve D75300's purpose (reducing the bytes of nops) when need to align jumps, we have to make more instructions "relaxable".

Reviewers: reames, MaskRay, craig.topper, LuoYuanke, jyknight

Reviewed By: reames

Subscribers: hiraditya, llvm-commits, annita.zhang

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D76286
The file was modifiedllvm/lib/MC/MCObjectStreamer.cpp
The file was modifiedllvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp
The file was addedllvm/test/MC/X86/align-branch-enhanced-relaxation.s
The file was modifiedllvm/include/llvm/MC/MCAsmBackend.h