Skip to content

Commit 5037ce9

Browse files
committed
[DebugInfo] Add default true return for unexpected types in isUnsignedDIType
1 parent 2dc80fe commit 5037ce9

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -215,22 +215,26 @@ bool DebugHandlerBase::isUnsignedDIType(const DIType *Ty) {
215215
return isUnsignedDIType(DTy->getBaseType());
216216
}
217217

218-
auto *BTy = cast<DIBasicType>(Ty);
219-
unsigned Encoding = BTy->getEncoding();
220-
assert((Encoding == dwarf::DW_ATE_unsigned ||
221-
Encoding == dwarf::DW_ATE_unsigned_char ||
222-
Encoding == dwarf::DW_ATE_signed ||
223-
Encoding == dwarf::DW_ATE_signed_char ||
224-
Encoding == dwarf::DW_ATE_float || Encoding == dwarf::DW_ATE_UTF ||
225-
Encoding == dwarf::DW_ATE_boolean ||
226-
Encoding == dwarf::DW_ATE_complex_float ||
227-
(Ty->getTag() == dwarf::DW_TAG_unspecified_type &&
228-
Ty->getName() == "decltype(nullptr)")) &&
229-
"Unsupported encoding");
230-
return Encoding == dwarf::DW_ATE_unsigned ||
231-
Encoding == dwarf::DW_ATE_unsigned_char ||
232-
Encoding == dwarf::DW_ATE_UTF || Encoding == dwarf::DW_ATE_boolean ||
233-
Ty->getTag() == dwarf::DW_TAG_unspecified_type;
218+
if (auto *BTy = dyn_cast<DIBasicType>(Ty)) {
219+
unsigned Encoding = BTy->getEncoding();
220+
assert((Encoding == dwarf::DW_ATE_unsigned ||
221+
Encoding == dwarf::DW_ATE_unsigned_char ||
222+
Encoding == dwarf::DW_ATE_signed ||
223+
Encoding == dwarf::DW_ATE_signed_char ||
224+
Encoding == dwarf::DW_ATE_float || Encoding == dwarf::DW_ATE_UTF ||
225+
Encoding == dwarf::DW_ATE_boolean ||
226+
Encoding == dwarf::DW_ATE_complex_float ||
227+
(Ty->getTag() == dwarf::DW_TAG_unspecified_type &&
228+
Ty->getName() == "decltype(nullptr)")) &&
229+
"Unsupported encoding");
230+
return Encoding == dwarf::DW_ATE_unsigned ||
231+
Encoding == dwarf::DW_ATE_unsigned_char ||
232+
Encoding == dwarf::DW_ATE_UTF || Encoding == dwarf::DW_ATE_boolean ||
233+
Ty->getTag() == dwarf::DW_TAG_unspecified_type;
234+
}
235+
// FIXME: the signedness should come from the expression where the type is
236+
// used in, not the type itself.
237+
return true;
234238
}
235239

236240
static bool hasDebugInfo(const MachineModuleInfo *MMI,

0 commit comments

Comments
 (0)