@@ -1212,11 +1212,18 @@ uint64_t IRGenDebugInfo::getSizeOfBasicType(DebugTypeInfo DbgTy) {
1212
1212
llvm::DIType *IRGenDebugInfo::createPointerSizedStruct (
1213
1213
llvm::DIScope *Scope, StringRef Name, llvm::DIFile *File, unsigned Line,
1214
1214
unsigned Flags, StringRef MangledName) {
1215
- auto FwdDecl = DBuilder.createForwardDecl (llvm::dwarf::DW_TAG_structure_type,
1216
- Name, Scope, File, Line,
1217
- llvm::dwarf::DW_LANG_Swift, 0 , 0 );
1218
- return createPointerSizedStruct (Scope, Name, FwdDecl, File, Line, Flags,
1219
- MangledName);
1215
+ if (Opts.DebugInfoKind > IRGenDebugInfoKind::ASTTypes) {
1216
+ auto FwdDecl = DBuilder.createForwardDecl (
1217
+ llvm::dwarf::DW_TAG_structure_type, Name, Scope, File, Line,
1218
+ llvm::dwarf::DW_LANG_Swift, 0 , 0 );
1219
+ return createPointerSizedStruct (Scope, Name, FwdDecl, File, Line, Flags,
1220
+ MangledName);
1221
+ } else {
1222
+ unsigned SizeInBits = CI.getTargetInfo ().getPointerWidth (0 );
1223
+ unsigned AlignInBits = CI.getTargetInfo ().getPointerAlign (0 );
1224
+ return createOpaqueStruct (Scope, Name, File, Line, SizeInBits, AlignInBits,
1225
+ Flags, MangledName);
1226
+ }
1220
1227
}
1221
1228
1222
1229
llvm::DIType *IRGenDebugInfo::createPointerSizedStruct (
@@ -1557,10 +1564,14 @@ llvm::DIType *IRGenDebugInfo::createType(DebugTypeInfo DbgTy,
1557
1564
// DW_TAG_reference_type types, but LLDB can deal better with pointer-sized
1558
1565
// struct that has the appropriate mangled name.
1559
1566
auto ObjectTy = BaseTy->castTo <InOutType>()->getObjectType ();
1560
- auto DT = getOrCreateDesugaredType (ObjectTy, DbgTy);
1561
- return createPointerSizedStruct (Scope, MangledName, DT, File, 0 , Flags,
1562
- BaseTy->isUnspecializedGeneric ()
1563
- ? StringRef () : MangledName);
1567
+ if (Opts.DebugInfoKind > IRGenDebugInfoKind::ASTTypes) {
1568
+ auto DT = getOrCreateDesugaredType (ObjectTy, DbgTy);
1569
+ return createPointerSizedStruct (
1570
+ Scope, MangledName, DT, File, 0 , Flags,
1571
+ BaseTy->isUnspecializedGeneric () ? StringRef () : MangledName);
1572
+ } else
1573
+ return createOpaqueStruct (Scope, MangledName, File, 0 , SizeInBits,
1574
+ AlignInBits, Flags, MangledName);
1564
1575
}
1565
1576
1566
1577
case TypeKind::Archetype: {
0 commit comments