[llvm] r327834 - [SystemZ] Bugfix of CC liveness in emitMemMemWrapper (CLC).

Galina Kistanova via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 19 13:46:28 PDT 2018


Hello Jonas,

This commit broke at least two of our builders:

http://lab.llvm.org:8011/builders/clang-with-thin-lto-ubuntu/builds/9219
http://lab.llvm.org:8011/builders/clang-with-lto-ubuntu

. . .
Failing Tests (1):
    LLVM :: CodeGen/SystemZ/memcmp-02.ll

Please have a look?

It is not good idea to keep the bot red for too long. This hides new
problem which later hard to track down.

Thanks

Galina

On Mon, Mar 19, 2018 at 6:05 AM, Jonas Paulsson via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: jonpa
> Date: Mon Mar 19 06:05:22 2018
> New Revision: 327834
>
> URL: http://llvm.org/viewvc/llvm-project?rev=327834&view=rev
> Log:
> [SystemZ]  Bugfix of CC liveness in emitMemMemWrapper (CLC).
>
> If DoneMBB becomes empty it must have CC added to its live-in list, since
> it
> will fall-through into EndMBB. This happens when the CLC loop does the
> complete range.
>
> Review: Ulrich Weigand
>
> Added:
>     llvm/trunk/test/CodeGen/SystemZ/memcmp-02.ll
> Modified:
>     llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp
>
> Modified: llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/
> SystemZ/SystemZISelLowering.cpp?rev=327834&r1=327833&r2=327834&view=diff
> ============================================================
> ==================
> --- llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/SystemZ/SystemZISelLowering.cpp Mon Mar 19
> 06:05:22 2018
> @@ -6626,6 +6626,10 @@ MachineBasicBlock *SystemZTargetLowering
>      DestBase = MachineOperand::CreateReg(NextDestReg, false);
>      SrcBase = MachineOperand::CreateReg(NextSrcReg, false);
>      Length &= 255;
> +    if (EndMBB && !Length)
> +      // If the loop handled the whole CLC range, DoneMBB will be empty
> with
> +      // CC live-through into EndMBB, so add it as live-in.
> +      DoneMBB->addLiveIn(SystemZ::CC);
>      MBB = DoneMBB;
>    }
>    // Handle any remaining bytes with straight-line code.
>
> Added: llvm/trunk/test/CodeGen/SystemZ/memcmp-02.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/
> CodeGen/SystemZ/memcmp-02.ll?rev=327834&view=auto
> ============================================================
> ==================
> --- llvm/trunk/test/CodeGen/SystemZ/memcmp-02.ll (added)
> +++ llvm/trunk/test/CodeGen/SystemZ/memcmp-02.ll Mon Mar 19 06:05:22 2018
> @@ -0,0 +1,20 @@
> +; Test memcmp using CLC.  In this test case the CLC loop will do all the
> work
> +; and the DoneMBB becomes empty. It will not pass the mischeduling
> verifiers
> +; if DoneMBB does not have CC in its live-in list.
> +
> +; RUN: llc < %s -mtriple=s390x-linux-gnu -misched=shuffle | FileCheck %s
> +
> +declare i32 @memcmp(i8* nocapture, i8* nocapture, i64)
> +
> +define i32 @fun() {
> +; CHECK-LABEL: fun
> +  %call = call signext i32 @memcmp(i8* nonnull undef, i8* nonnull undef,
> i64 2048)
> +  %cmp = icmp eq i32 %call, 0
> +  br i1 %cmp, label %labT, label %labF
> +
> +labT:
> +  ret i32 0
> +
> +labF:
> +  ret i32 1
> +}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180319/8032bd9e/attachment.html>


More information about the llvm-commits mailing list