Selaa lähdekoodia

Splat fixes, added debugging info for 'using' fields

Brian Fiete 3 vuotta sitten
vanhempi
commit
8eda627e2f

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 158 - 153
IDEHelper/COFF.cpp


+ 22 - 0
IDEHelper/Compiler/BfIRBuilder.cpp

@@ -3334,6 +3334,13 @@ void BfIRBuilder::CreateDbgTypeDefinition(BfType* type)
 								constDIType, flags, useIntConstant ? intConstant : BfIRValue());
 							diFieldTypes.push_back(memberType);
 
+							if (fieldDef->mUsingProtection != BfProtection_Hidden)
+							{
+								auto memberType = DbgCreateStaticMemberType(diForwardDecl, "$using$" + fieldName, fileDIScope, 0,
+									constDIType, flags, useIntConstant ? intConstant : BfIRValue());
+								diFieldTypes.push_back(memberType);
+							}
+
 							if (staticValue)
 							{
 								String qualifiedName = DbgGetStaticFieldName(fieldInstance);
@@ -3384,6 +3391,13 @@ void BfIRBuilder::CreateDbgTypeDefinition(BfType* type)
 						resolvedFieldDIType, flags, BfIRValue());
 					diFieldTypes.push_back(memberType);
 
+					if (fieldDef->mUsingProtection != BfProtection_Hidden)
+					{
+						auto memberType = DbgCreateStaticMemberType(diForwardDecl, "$using$" + fieldDef->mName, fileDIScope, 0,
+							resolvedFieldDIType, flags, BfIRValue());
+						diFieldTypes.push_back(memberType);
+					}
+
 					StringT<128> staticVarName;
 					BfMangler::Mangle(staticVarName, mModule->mCompiler->GetMangleKind(), fieldInstance);
 					if (!staticVarName.StartsWith('#'))
@@ -3416,6 +3430,14 @@ void BfIRBuilder::CreateDbgTypeDefinition(BfType* type)
 						fieldInstance->mDataSize * 8, resolvedFieldType->mAlign * 8, fieldInstance->mDataOffset * 8,
 						flags, resolvedFieldDIType);
 					diFieldTypes.push_back(memberType);
+
+					if (fieldDef->mUsingProtection != BfProtection_Hidden)
+					{
+						auto memberType = DbgCreateMemberType(diForwardDecl, "$using$" + fieldName, fileDIScope, lineNum,
+							fieldInstance->mDataSize * 8, resolvedFieldType->mAlign * 8, fieldInstance->mDataOffset * 8,
+							flags, resolvedFieldDIType);
+						diFieldTypes.push_back(memberType);
+					}
 				}
 			}
 		}

+ 5 - 1
IDEHelper/Compiler/BfIRCodeGen.cpp

@@ -4488,7 +4488,11 @@ void BfIRCodeGen::HandleNextCmd()
             os << "\n";
             os.flush();*/
 
-            auto member = mDIBuilder->createMemberType((llvm::DIScope*)scope, name.c_str(), (llvm::DIFile*)file, lineNumber, sizeInBits, (uint32)alignInBits, offsetInBits, diFlags, (llvm::DIType*)type);
+			const char* namePtr = name.c_str();
+			if (name.IsEmpty())
+				namePtr = NULL;
+
+            auto member = mDIBuilder->createMemberType((llvm::DIScope*)scope, namePtr, (llvm::DIFile*)file, lineNumber, sizeInBits, (uint32)alignInBits, offsetInBits, diFlags, (llvm::DIType*)type);
             SetResult(curId, member);
             //OutputDebugStrF("BfIRCmd_DbgCreateMemberType = %p\n", member);
 		}

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 141 - 141
IDEHelper/DbgExprEvaluator.cpp


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 143 - 143
IDEHelper/DbgModule.cpp


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä