[SystemZ] Recognize INLINEASM_BR in backend.

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

Review: Ulrich Weigand
llvm-svn: 370753
This commit is contained in:
Jonas Paulsson 2019-09-03 13:31:22 +00:00
parent 600f5c5727
commit a0a811739d
2 changed files with 17 additions and 2 deletions

View File

@ -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.

View File

@ -0,0 +1,15 @@
; 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
}