mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-10 22:46:25 +00:00
MIRPrinter: Avoid assert() when printing empty INLINEASM strings.
CodeGen uses MO_ExternalSymbol to represent the inline assembly strings. Empty strings for symbol names appear to be invalid. For now just special case the output code to avoid hitting an `assert()` in `printLLVMNameWithoutPrefix()`. This fixes https://llvm.org/PR33317 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@304815 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5c0660f016
commit
ae5480dda7
@ -16,6 +16,7 @@
|
||||
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/ADT/SmallBitVector.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/CodeGen/GlobalISel/RegisterBank.h"
|
||||
#include "llvm/CodeGen/MIRYamlMapping.h"
|
||||
#include "llvm/CodeGen/MachineConstantPool.h"
|
||||
@ -924,11 +925,17 @@ void MIPrinter::print(const MachineOperand &Op, const TargetRegisterInfo *TRI,
|
||||
case MachineOperand::MO_JumpTableIndex:
|
||||
OS << "%jump-table." << Op.getIndex();
|
||||
break;
|
||||
case MachineOperand::MO_ExternalSymbol:
|
||||
case MachineOperand::MO_ExternalSymbol: {
|
||||
StringRef Name = Op.getSymbolName();
|
||||
OS << '$';
|
||||
printLLVMNameWithoutPrefix(OS, Op.getSymbolName());
|
||||
if (Name.empty()) {
|
||||
OS << "\"\"";
|
||||
} else {
|
||||
printLLVMNameWithoutPrefix(OS, Name);
|
||||
}
|
||||
printOffset(Op.getOffset());
|
||||
break;
|
||||
}
|
||||
case MachineOperand::MO_GlobalAddress:
|
||||
Op.getGlobal()->printAsOperand(OS, /*PrintType=*/false, MST);
|
||||
printOffset(Op.getOffset());
|
||||
|
12
test/CodeGen/MIR/X86/inline-asm.mir
Normal file
12
test/CodeGen/MIR/X86/inline-asm.mir
Normal file
@ -0,0 +1,12 @@
|
||||
# RUN: llc -o - %s -mtriple=x86_64-- -run-pass none | FileCheck %s
|
||||
---
|
||||
# Avoid crash/assert when using an emptystring in an INLINEASM.
|
||||
# CHECK-LABEL: name: emptystring
|
||||
# CHECK: bb.0:
|
||||
# CHECK: INLINEASM $"", 1
|
||||
# CHECK: RET 0
|
||||
name: emptystring
|
||||
body: |
|
||||
bb.0:
|
||||
INLINEASM $"", 1
|
||||
RET 0
|
Loading…
x
Reference in New Issue
Block a user