@@ -189,10 +189,10 @@ bool DebugHandlerBase::isUnsignedDIType(const DIType *Ty) {
189
189
// FIXME: Enums without a fixed underlying type have unknown signedness
190
190
// here, leading to incorrectly emitted constants.
191
191
return false ;
192
- }
193
- // (Pieces of) aggregate types that get hacked apart by SROA may be
194
- // represented by a constant. Encode them as unsigned bytes.
195
- return true ;
192
+ } else
193
+ // (Pieces of) aggregate types that get hacked apart by SROA may be
194
+ // represented by a constant. Encode them as unsigned bytes.
195
+ return true ;
196
196
}
197
197
198
198
if (auto *DTy = dyn_cast<DIDerivedType>(Ty)) {
@@ -215,22 +215,26 @@ bool DebugHandlerBase::isUnsignedDIType(const DIType *Ty) {
215
215
return isUnsignedDIType (DTy->getBaseType ());
216
216
}
217
217
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 ;
234
238
}
235
239
236
240
static bool hasDebugInfo (const MachineModuleInfo *MMI,
0 commit comments