[MIR] Fix printing INLINEASM dialects. (#186797)
diff --git a/llvm/include/llvm/IR/InlineAsm.h b/llvm/include/llvm/IR/InlineAsm.h
index fed0ccc..564f2e7 100644
--- a/llvm/include/llvm/IR/InlineAsm.h
+++ b/llvm/include/llvm/IR/InlineAsm.h
@@ -444,6 +444,10 @@
}
};
+ static AsmDialect getDialect(unsigned ExtraInfo) {
+ return ExtraInfo & Extra_AsmDialect ? AD_Intel : AD_ATT;
+ }
+
static std::vector<StringRef> getExtraInfoNames(unsigned ExtraInfo) {
std::vector<StringRef> Result;
if (ExtraInfo & InlineAsm::Extra_HasSideEffects)
@@ -459,9 +463,7 @@
if (ExtraInfo & InlineAsm::Extra_MayUnwind)
Result.push_back("unwind");
- AsmDialect Dialect =
- InlineAsm::AsmDialect((ExtraInfo & InlineAsm::Extra_AsmDialect));
-
+ AsmDialect Dialect = getDialect(ExtraInfo);
if (Dialect == InlineAsm::AD_ATT)
Result.push_back("attdialect");
if (Dialect == InlineAsm::AD_Intel)
diff --git a/llvm/lib/CodeGen/MachineInstr.cpp b/llvm/lib/CodeGen/MachineInstr.cpp
index b36d950..1042856 100644
--- a/llvm/lib/CodeGen/MachineInstr.cpp
+++ b/llvm/lib/CodeGen/MachineInstr.cpp
@@ -927,7 +927,7 @@
InlineAsm::AsmDialect MachineInstr::getInlineAsmDialect() const {
assert(isInlineAsm() && "getInlineAsmDialect() only works for inline asms!");
unsigned ExtraInfo = getOperand(InlineAsm::MIOp_ExtraInfo).getImm();
- return InlineAsm::AsmDialect((ExtraInfo & InlineAsm::Extra_AsmDialect) != 0);
+ return InlineAsm::getDialect(ExtraInfo);
}
int MachineInstr::findInlineAsmFlagIdx(unsigned OpIdx,
diff --git a/llvm/test/CodeGen/MIR/Generic/inline-asm-extra-info.mir b/llvm/test/CodeGen/MIR/Generic/inline-asm-extra-info.mir
index b4eddbb..6318a39 100644
--- a/llvm/test/CodeGen/MIR/Generic/inline-asm-extra-info.mir
+++ b/llvm/test/CodeGen/MIR/Generic/inline-asm-extra-info.mir
@@ -1,6 +1,4 @@
# RUN: llc -run-pass=none -o - %s | FileCheck --match-full-lines %s
-# FIXME: this currently fails on UBSan
-# XFAIL: ubsan
---
name: test_attdialect
@@ -33,9 +31,8 @@
name: test_inteldialect
body: |
bb.0:
- ; TODO: Fix printing inteldialect.
; CHECK-LABEL: name: test_inteldialect
- ; CHECK: INLINEASM &"", 4
+ ; CHECK: INLINEASM &"", 4 /* inteldialect */
INLINEASM &"", 4
...
@@ -80,6 +77,6 @@
body: |
bb.0:
; CHECK-LABEL: name: test_combined
- ; CHECK: INLINEASM &"", 13 /* sideeffect mayload */
+ ; CHECK: INLINEASM &"", 13 /* sideeffect mayload inteldialect */
INLINEASM &"", 13
...