forked from OSchip/llvm-project
4f9a5c2a14
No intended behavior change. EmitGCCInlineAsmStr() used to explicitly check for modifier 'l' after handling block address and machine basic block operands. This prevented passing a MachineOperand with 'l' modifier to PrintAsmMemoryOperand(). Conceptually that seems kind of nice, but in practice the overrides of PrintAsmMemoryOperand() in all (*) AsmPrinter subclasses already reject modifiers they don't know about, and none of them don't know about 'l'. So removing this doesn't have a behavior difference, is less code, and it makes EmitGCCInlineAsmStr() and EmitMSInlineAsmStr() more similar, to prepare for merging them later. (Why not _add_ the branch to EmitMSInlineAsmStr() instead? Because that always works with X86AsmPrinter I think, and X86AsmPrinter::PrintAsmMemoryOperand() very decisively rejects the 'l' modifier, so it's hard to motivate adding that branch.) *: The one exception was AVRAsmPrinter, which had an llvm_unreachable instead of returning true. So this commit changes that, so that the AVR target keeps emitting an error instead of crashing when passing a mem operand with a :l modifier to it. All the other targets already don't crash on this. Differential Revision: https://reviews.llvm.org/D114216 |
||
---|---|---|
.. | ||
atomics | ||
calling-conv/c | ||
features | ||
inline-asm | ||
integration | ||
intrinsics | ||
pseudo | ||
relax-mem | ||
PR31344.ll | ||
PR31345.ll | ||
PR37143.ll | ||
add.ll | ||
alloca.ll | ||
and.ll | ||
avr-rust-issue-123.ll | ||
block-address-is-in-progmem-space.ll | ||
branch-relaxation-long.ll | ||
branch-relaxation.ll | ||
brind.ll | ||
call.ll | ||
clear-bss.ll | ||
cmp.ll | ||
com.ll | ||
copy-data-to-ram.ll | ||
ctlz.ll | ||
ctors.ll | ||
ctpop.ll | ||
cttz.ll | ||
directmem.ll | ||
div.ll | ||
dynalloca.ll | ||
eor.ll | ||
expand-integer-failure.ll | ||
frame.ll | ||
frmidx-iterator-bug.ll | ||
hardware-mul.ll | ||
high-pressure-on-ptrregs.ll | ||
icall-func-pointer-correct-addr-space.ll | ||
impossible-reg-to-reg-copy.ll | ||
interrupts.ll | ||
io.ll | ||
issue-cannot-select-bswap.ll | ||
issue-regalloc-stackframe-folding-earlyclobber.ll | ||
jmp-long.ll | ||
large-return-size.ll | ||
lit.local.cfg | ||
load.ll | ||
lower-formal-args-struct-return.ll | ||
lower-formal-arguments-assertion.ll | ||
neg.ll | ||
no-print-operand-twice.ll | ||
or.ll | ||
pre-schedule.ll | ||
progmem-extended.ll | ||
progmem.ll | ||
rem.ll | ||
return.ll | ||
rot.ll | ||
runtime-trig.ll | ||
rust-avr-bug-37.ll | ||
rust-avr-bug-95.ll | ||
rust-avr-bug-99.ll | ||
rust-avr-bug-112.ll | ||
rust-trait-object.ll | ||
sections.ll | ||
select-must-add-unconditional-jump.ll | ||
sext.ll | ||
shift-expand.ll | ||
shift.ll | ||
sign-extension.ll | ||
smul-with-overflow.ll | ||
software-mul.ll | ||
std-ldd-immediate-overflow.ll | ||
store-undef.ll | ||
store.ll | ||
struct.ll | ||
sub.ll | ||
trunc.ll | ||
umul-with-overflow.ll | ||
umul.with.overflow.i16-bug.ll | ||
unaligned-atomic-loads.ll | ||
varargs.ll | ||
xor.ll | ||
zext.ll |