Commit 5a661d61 authored by Hans Wennborg's avatar Hans Wennborg
Browse files

Merging r370753:

------------------------------------------------------------------------
r370753 | jonpa | 2019-09-03 15:31:22 +0200 (Tue, 03 Sep 2019) | 6 lines

[SystemZ]  Recognize INLINEASM_BR in backend.

SystemZInstrInfo::analyzeBranch() needs to check for INLINEASM_BR
instructions, or it will crash.

Review: Ulrich Weigand
------------------------------------------------------------------------

llvm-svn: 371043
parent 1b8425cf
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -462,8 +462,8 @@ bool SystemZInstrInfo::analyzeBranch(MachineBasicBlock &MBB,
      break;

    // A terminator that isn't a branch can't easily be handled by this
    // analysis.
    if (!I->isBranch())
    // analysis.  Asm goto is not understood / optimized.
    if (!I->isBranch() || I->getOpcode() == SystemZ::INLINEASM_BR)
      return true;

    // Can't handle indirect branches.
+15 −0
Original line number Diff line number Diff line
; Test that asm goto can be compiled.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu

define i32 @c() {
entry:
  callbr void asm sideeffect "", "X"(i8* blockaddress(@c, %d))
          to label %asm.fallthrough [label %d]

asm.fallthrough:               ; preds = %entry
  br label %d

d:                             ; preds = %asm.fallthrough, %entry
  ret i32 undef
}