Fix some edge cases on DXIL function disassembly

This commit is contained in:
baldurk
2023-02-16 11:21:58 +00:00
parent cc1709d16c
commit 5efe9bc0b2
@@ -562,9 +562,12 @@ void Program::MakeDisassemblyString()
if(func.attrs && func.attrs->functionSlot)
{
m_Disassembly += StringFormat::Fmt("; Function Attrs: %s\n",
func.attrs->functionSlot->toString(false).c_str());
instructionLine++;
rdcstr funcAttrs = func.attrs->functionSlot->toString(false).c_str();
if(!funcAttrs.empty())
{
m_Disassembly += StringFormat::Fmt("; Function Attrs: %s\n", funcAttrs.c_str());
instructionLine++;
}
}
m_Disassembly += (func.external ? "declare " : "define ");
@@ -577,6 +580,9 @@ void Program::MakeDisassemblyString()
m_Disassembly += StringFormat::Fmt(
" comdat($%s)", escapeStringIfNeeded(m_Comdats[func.comdatIdx].second).c_str());
if(func.align)
m_Disassembly += StringFormat::Fmt(" align %u", (1U << func.align) >> 1);
if(func.attrs && func.attrs->functionSlot)
m_Disassembly += StringFormat::Fmt(" #%u", funcAttrGroups.indexOf(func.attrs->functionSlot));