forked from OSchip/llvm-project
[GlobalISel][InlineAsm] Add early return for memory inputs that need to be indirectified
Summary: D78319 introduced basic support for inline asm input operands in GlobalISel. However, that patch did not handle the case where a memory input operand still needs to be indirectified. Later code asserts that the memory operand is already indirect. This patch adds an early return false to trigger the SelectionDAG fallback for now. Reviewers: arsenm, paquette Reviewed By: arsenm Subscribers: thakis, wdng, rovka, hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D79955
This commit is contained in:
parent
1a3b801db5
commit
5425cdc3ad
|
@ -424,6 +424,13 @@ bool InlineAsmLowering::lowerInlineAsm(
|
|||
}
|
||||
|
||||
if (OpInfo.ConstraintType == TargetLowering::C_Memory) {
|
||||
|
||||
if (!OpInfo.isIndirect) {
|
||||
LLVM_DEBUG(dbgs()
|
||||
<< "Cannot indirectify memory input operands yet\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
assert(OpInfo.isIndirect && "Operand must be indirect to be a mem!");
|
||||
|
||||
unsigned ConstraintID =
|
||||
|
|
|
@ -210,3 +210,12 @@ define i64 @strict_align_feature(i64* %p) #0 {
|
|||
}
|
||||
|
||||
attributes #0 = { "target-features"="+strict-align" }
|
||||
|
||||
; FALLBACK-WITH-REPORT-ERR: remark: <unknown>:0:0: unable to translate instruction: call
|
||||
; FALLBACK-WITH-REPORT-ERR: warning: Instruction selection used fallback path for direct_mem
|
||||
; FALLBACK-WITH-REPORT-OUT-LABEL: direct_mem
|
||||
define void @direct_mem(i32 %x, i32 %y) {
|
||||
entry:
|
||||
tail call void asm sideeffect "", "imr,imr,~{memory}"(i32 %x, i32 %y)
|
||||
ret void
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue