Bladeren bron

Change Beefy::defer to be simpler (no std::function), macOS changes

Brian Fiete 5 jaren geleden
bovenliggende
commit
c8ca66ec5c

+ 1 - 1
BeefBoot/BeefBoot.cpp

@@ -32,7 +32,7 @@ using namespace Beefy;
 BF_IMPORT void BF_CALLTYPE Debugger_ProgramDone();
 
 int main(int argc, char* argv[])
-{	
+{		
 #ifdef TEST_CRASH
 	CrashCatcher catcher;
 	catcher.SetCrashReportKind(BfpCrashReportKind_GUI);

+ 5 - 1
BeefBoot/BootApp.cpp

@@ -763,7 +763,11 @@ void BootApp::DoLinkGNU()
     linkLine.Append(" ");
     linkLine.Append("-g ");
 
-    linkLine.Append("-debug -no-pie ");
+    linkLine.Append("-debug ");
+#ifdef BF_PLATFORM_LINUX
+	linkLine.Append("-no-pie ");
+#endif
+
     linkLine.Append(mLinkParams);
 
     auto runCmd = QueueRun(linkerPath, linkLine, mWorkingDir, BfpSpawnFlag_UseArgsFile);

+ 1 - 1
BeefySysLib/util/BeefPerf.cpp

@@ -17,7 +17,7 @@ typedef fd_set FD_SET;
 #define closesocket close
 #endif
 
-#ifdef BF_PLATFORM_OSX
+#ifdef BF_PLATFORM_MACOS
 #include <sys/socket.h>
 #include <mach/error.h>
 #include <mach/mach.h>

+ 24 - 28
IDE/src/BuildContext.bf

@@ -38,6 +38,18 @@ namespace IDE
 			Failed
 		}
 
+		Workspace.PlatformType mPlatformType;
+		Workspace.ToolsetType mToolset;
+		int mPtrSize;
+
+		public this()
+		{
+			Workspace.Options workspaceOptions = gApp.GetCurWorkspaceOptions();
+			mToolset = workspaceOptions.mToolsetType;
+			mPlatformType = Workspace.PlatformType.GetFromName(gApp.mPlatformName);
+			mPtrSize = Workspace.PlatformType.GetPtrSizeByName(gApp.mPlatformName);
+		}
+
 		public CustomBuildCommandResult QueueProjectCustomBuildCommands(Project project, String targetPath, Project.BuildCommandTrigger trigger, List<String> cmdList)
 		{
 			if (cmdList.IsEmpty)
@@ -186,7 +198,8 @@ namespace IDE
 			        linkLine.Append("-mwindows ");
 			    }
 
-				linkLine.Append("-no-pie ");
+				if (mPlatformType == .Linux)
+					linkLine.Append("-no-pie ");
 
 			    linkLine.Append(objectsArg);
 
@@ -204,7 +217,7 @@ namespace IDE
 			        String[] mingwFiles;
 			        String fromDir;
 
-			        if (Workspace.PlatformType.GetPtrSizeByName(gApp.mPlatformName) == 4)
+			        if (mPtrSize == 4)
 			        {
 			            fromDir = scope:: String(llvmDir, "i686-w64-mingw32/bin/");
 			            mingwFiles = scope:: String[] { "libgcc_s_dw2-1.dll", "libstdc++-6.dll" };
@@ -298,7 +311,7 @@ namespace IDE
 
 					if (workspaceOptions.mToolsetType == .GNU)
 					{
-			            if (Workspace.PlatformType.GetPtrSizeByName(gApp.mPlatformName) == 4)
+			            if (mPtrSize == 4)
 			            {
 			            }
 			            else
@@ -311,7 +324,7 @@ namespace IDE
 					}
 					else // Microsoft
 					{
-						if (Workspace.PlatformType.GetPtrSizeByName(gApp.mPlatformName) == 4)
+						if (mPtrSize == 4)
 						{
 							//linkLine.Append("-L\"C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.10586.0\\ucrt\\x86\" ");
 							for (var libPath in gApp.mSettings.mVSSettings.mLib32Paths)
@@ -411,33 +424,11 @@ namespace IDE
 					outDbg.Append("_d");
 				outDbg.Append(dynName ? ".dll" : ".lib");
 			}
-
-			/*if ((workspaceOptions.mEnableObjectDebugFlags) &&
-				((!dynName) || (options.mBuildOptions.mBeefLibType != .Static)))
-			{
-				outDbg.Append("Beef", IDEApp.sRTVersionStr, "Dbg");
-				outDbg.Append((workspaceOptions.mMachineType == .x86) ? "32" : "64");
-				switch (options.mBuildOptions.mBeefLibType)
-				{
-				case .Dynamic:
-				case .DynamicDebug: outDbg.Append("_d");
-				case .Static:
-					switch (options.mBuildOptions.mCLibType)
-					{
-					case .None:
-					case .Dynamic, .SystemMSVCRT: outDbg.Append("_s");
-					case .DynamicDebug: outDbg.Append("_sd");
-					case .Static: outDbg.Append("_ss");
-					case .StaticDebug: outDbg.Append("_ssd");
-					}
-				}
-				outDbg.Append(dynName ? ".dll" : ".lib");
-			}*/
 		}
 
 		bool QueueProjectMSLink(Project project, String targetPath, String configName, Workspace.Options workspaceOptions, Project.Options options, String objectsArg)
 		{
-			bool is64Bit = Workspace.PlatformType.GetPtrSizeByName(gApp.mPlatformName) == 8;
+			bool is64Bit = mPtrSize == 8;
 
 			String llvmDir = scope String(IDEApp.sApp.mInstallDir);
 			IDEUtils.FixFilePath(llvmDir);
@@ -1060,7 +1051,12 @@ namespace IDE
 			}
 			else // MS
 			{
-				if (!QueueProjectMSLink(project, targetPath, configSelection.mConfig, workspaceOptions, options, objectsArg))
+				if (mPlatformType != .Windows)
+				{
+					gApp.OutputErrorLine("Project '{}' cannot be linked with the Windows Toolset for platform '{}'", project.mProjectName, mPlatformType);
+					return false;
+				}
+				else if (!QueueProjectMSLink(project, targetPath, configSelection.mConfig, workspaceOptions, options, objectsArg))
 					return false;
 			}
 

+ 47 - 28
IDE/src/IDEApp.bf

@@ -107,7 +107,7 @@ namespace IDE
 #elif BF_PLATFORM_LINUX
 		public static readonly String sPlatform64Name = "Linux64";
 		public static readonly String sPlatform32Name = "Linux32";
-#elif BF_PLATFORM_OSX
+#elif BF_PLATFORM_MACOS
 		public static readonly String sPlatform64Name = "macOS";
 		public static readonly String sPlatform32Name = null;
 #else
@@ -8358,17 +8358,24 @@ namespace IDE
 									
 									if (!DoResolveConfigString(platformName, workspaceOptions, project, options, options.mBuildOptions.mTargetName, error, newString))
 										return false;
-#if BF_PLATFORM_WINDOWS
-		                            if (project.mGeneralOptions.mTargetType == .BeefLib)
-		                                newString.Append(".lib");
-									else if (project.mGeneralOptions.mTargetType == .BeefDynLib)
-		                                newString.Append(".dll");
-		                            else if (project.mGeneralOptions.mTargetType != .CustomBuild)
-		                                newString.Append(".exe");
-#else
-		                            if (project.mGeneralOptions.mTargetType == Project.TargetType.BeefLib)
-		                                newString.Append(".so");
-#endif
+
+									let platformType = Workspace.PlatformType.GetFromName(platformName);
+									switch (platformType)
+									{
+									case .Windows:
+										if (project.mGeneralOptions.mTargetType == .BeefLib)
+										    newString.Append(".lib");
+										else if (project.mGeneralOptions.mTargetType == .BeefDynLib)
+										    newString.Append(".dll");
+										else if (project.mGeneralOptions.mTargetType != .CustomBuild)
+										    newString.Append(".exe");
+									case .macOS:
+										if (project.mGeneralOptions.mTargetType == Project.TargetType.BeefLib)
+											newString.Append(".dylib");
+									default:
+										if (project.mGeneralOptions.mTargetType == Project.TargetType.BeefLib)
+											newString.Append(".so");
+									}
 		                        }
 		                    case "ProjectDir":
 								if (project.IsDebugSession)
@@ -8390,24 +8397,33 @@ namespace IDE
 									(project.mGeneralOptions.mTargetType == .BeefDynLib) ||
 									((options.mBuildOptions.mBuildKind == .Test) && (project == mWorkspace.mStartupProject)))
 								{
-#if BF_PLATFORM_WINDOWS
-									String rtName = scope String();
-									String dbgName = scope String();
-									BuildContext.GetRtLibNames(workspaceOptions, options, false, rtName, dbgName);
-									newString.Append(rtName);
-									if (!dbgName.IsEmpty)
-										newString.Append(" ", dbgName);
-									switch (workspaceOptions.mAllocType)
+
+									let platformType = Workspace.PlatformType.GetFromName(platformName);
+									switch (platformType)
 									{
-									case .JEMalloc:
-										newString.Append(" jemalloc.lib");
-									case .TCMalloc:
-										newString.Append(" tcmalloc.lib");
+									case .Windows:
+										String rtName = scope String();
+										String dbgName = scope String();
+										BuildContext.GetRtLibNames(workspaceOptions, options, false, rtName, dbgName);
+										newString.Append(rtName);
+										if (!dbgName.IsEmpty)
+											newString.Append(" ", dbgName);
+										switch (workspaceOptions.mAllocType)
+										{
+										case .JEMalloc:
+											newString.Append(" jemalloc.lib");
+										case .TCMalloc:
+											newString.Append(" tcmalloc.lib");
+										default:
+										}
+									case .macOS:
+										newString.Append("./libBeefRT_d.dylib -Wl,-rpath -Wl,.");
+									case .iOS:
+									case .Linux:
+										newString.Append("./libBeefRT_d.so -Wl,-rpath -Wl,$ORIGIN");
 									default:
-									}
-#else
-								newString.Append("./libBeefRT_d.so -Wl,-rpath -Wl,.");
-#endif
+									}	
+
 								}
 							case "VSToolPath":
 								if (Workspace.PlatformType.GetPtrSizeByName(platformName) == 4)
@@ -9255,6 +9271,9 @@ namespace IDE
 			{
 				canCompile = false;
 			}
+
+			//TODO:
+			canCompile = true;
 			
 			if (!canCompile)
 			{

+ 1 - 1
IDE/src/SpellChecker.bf

@@ -99,7 +99,7 @@ namespace IDE
         {
 			String fileName = scope String();
 			GetUserDirectFileName(fileName);
-            File.WriteAllLines(fileName, mCustomDictionaryWordList.GetEnumerator());
+            File.WriteAllLines(fileName, mCustomDictionaryWordList.GetEnumerator()).IgnoreError();
         }
 
 

+ 42 - 44
IDE/src/Workspace.bf

@@ -20,31 +20,13 @@ namespace IDE
             ObjectAndIRCode
         }
 
-        public enum MachineType
-        {
-            case x86;
-            case x64;
-
-			public int32 PtrSize
-			{
-				get
-				{
-					switch (this)
-					{
-					case .x86:
-						return 4;
-					case .x64:
-						return 8;
-					}
-				}
-			}
-        }
-
 		public enum PlatformType
 		{
 			case Unknown;
 			case Windows;
 			case Linux;
+			case macOS;
+			case iOS;
 
 			public static PlatformType GetFromName(String name)
 			{
@@ -52,6 +34,8 @@ namespace IDE
 				{
 				case "Win32", "Win64": return .Windows;
 				case "Linux32", "Linux64": return .Linux;
+				case "macOS": return .macOS;
+				case "iOS": return .iOS;
 				default: return .Unknown;
 				}
 			}
@@ -66,6 +50,10 @@ namespace IDE
 				return .Linux;
 #endif
 
+#if BF_PLATFORM_MACOS
+				return .Linux;
+#endif
+
 #unwarn
 				return .Unknown;
 			}
@@ -585,6 +573,9 @@ namespace IDE
                         {
                             var options = platformKeyValue.value;
 							var platformName = platformKeyValue.key;
+
+							let platformType = PlatformType.GetFromName(platformName);
+
                             using (data.CreateObject(platformName))
                             {
 								using (data.CreateArray("PreprocessorMacros"))
@@ -597,11 +588,10 @@ namespace IDE
 								data.ConditionalAdd("Toolset", options.mToolsetType, ToolsetType.Default);
 								data.ConditionalAdd("BuildKind", options.mBuildKind, isTest ? .Test : .Normal);
                                 data.ConditionalAdd("BfSIMDSetting", options.mBfSIMDSetting, .SSE2);
-#if BF_PLATFORM_WINDOWS
-                                data.ConditionalAdd("BfOptimizationLevel", options.mBfOptimizationLevel, isRelease ? .O2 : (platformName == "Win64") ? .OgPlus : .O0);
-#else
-								data.ConditionalAdd("BfOptimizationLevel", options.mBfOptimizationLevel, isRelease ? .O2 : .O0);
-#endif
+								if (platformType == .Windows)
+                                	data.ConditionalAdd("BfOptimizationLevel", options.mBfOptimizationLevel, isRelease ? .O2 : (platformName == "Win64") ? .OgPlus : .O0);
+								else
+									data.ConditionalAdd("BfOptimizationLevel", options.mBfOptimizationLevel, isRelease ? .O2 : .O0);
 								data.ConditionalAdd("LTOType", options.mLTOType, .None);
 								data.ConditionalAdd("AllocType", options.mAllocType, isRelease ? .CRT : .Debug);
 								data.ConditionalAdd("AllocMalloc", options.mAllocMalloc, "");
@@ -705,15 +695,19 @@ namespace IDE
 #unwarn
 			bool isParanoid = configName.Contains("Paranoid");
 			bool isTest = configName.Contains("Test");
+			let platformType = PlatformType.GetFromName(platformName);
 
 			options.mBfSIMDSetting = .SSE2;
-#if BF_PLATFORM_WINDOWS
-			options.mBfOptimizationLevel = isRelease ? .O2 : (platformName == "Win64") ? .OgPlus : .O0;
-			options.mToolsetType = .Microsoft;
-#else
-			options.mBfOptimizationLevel = isRelease ? .O2 : .O0;
-			options.mToolsetType = .GNU;
-#endif
+			if (platformType == .Windows)
+			{
+				options.mBfOptimizationLevel = isRelease ? .O2 : (platformName == "Win64") ? .OgPlus : .O0;
+				options.mToolsetType = .Microsoft;
+			}
+			else
+			{
+				options.mBfOptimizationLevel = isRelease ? .O2 : .O0;
+				options.mToolsetType = .GNU;
+			}
 
 			options.mAllocType = isRelease ? .CRT : .Debug;
 			options.mEmitDebugInfo = .Yes;
@@ -726,13 +720,16 @@ namespace IDE
 			options.mEnableObjectDebugFlags = !isRelease;
 			options.mEmitObjectAccessCheck = !isRelease;
 
-#if BF_PLATFORM_WINDOWS
-			options.mEnableRealtimeLeakCheck = !isRelease;
-			options.mEnableSideStack = isParanoid;
-#else
-            options.mEnableRealtimeLeakCheck = false;
-            options.mEnableSideStack = false;
-#endif
+			if (platformType == .Windows)
+			{
+				options.mEnableRealtimeLeakCheck = !isRelease;
+				options.mEnableSideStack = isParanoid;
+			}
+			else
+			{
+	            options.mEnableRealtimeLeakCheck = false;
+	            options.mEnableSideStack = false;
+			}
 			options.mAllowHotSwapping = !isRelease;
 			options.mIncrementalBuild = !isRelease;
 
@@ -784,6 +781,7 @@ namespace IDE
                 {
                     Options options = new Options();
 					let platformName = new String(platformNameKey);
+					let platformType = PlatformType.GetFromName(platformName);
                     config.mPlatforms[platformName] = options;
                     
 					SetupDefault(options, configName, platformName);
@@ -798,11 +796,11 @@ namespace IDE
 					options.mToolsetType = data.GetEnum<ToolsetType>("Toolset", ToolsetType.Default);
 					options.mBuildKind = data.GetEnum<BuildKind>("BuildKind", isTest ? .Test : .Normal);
 					options.mBfSIMDSetting = data.GetEnum<BuildOptions.SIMDSetting>("BfSIMDSetting", .SSE2);
-#if BF_PLATFORM_WINDOWS
-                    options.mBfOptimizationLevel = data.GetEnum<BuildOptions.BfOptimizationLevel>("BfOptimizationLevel", isRelease ? .O2 : (platformName == "Win64") ? .OgPlus : .O0);
-#else
-					options.mBfOptimizationLevel = data.GetEnum<BuildOptions.BfOptimizationLevel>("BfOptimizationLevel", isRelease ? .O2 : .O0);
-#endif
+					if (platformType == .Windows)
+                    	options.mBfOptimizationLevel = data.GetEnum<BuildOptions.BfOptimizationLevel>("BfOptimizationLevel", isRelease ? .O2 : (platformName == "Win64") ? .OgPlus : .O0);
+					else
+						options.mBfOptimizationLevel = data.GetEnum<BuildOptions.BfOptimizationLevel>("BfOptimizationLevel", isRelease ? .O2 : .O0);
+
 					options.mLTOType = data.GetEnum<BuildOptions.LTOType>("LTOType", .None);
 					options.mAllocType = data.GetEnum<AllocType>("AllocType", isRelease ? .CRT : .Debug);
 					data.GetString("AllocMalloc", options.mAllocMalloc);

+ 0 - 1
IDE/src/ui/WorkspaceProperties.bf

@@ -494,7 +494,6 @@ namespace IDE.ui
             var (category, propEntry) = AddPropertiesItem(root, "General");
             category.mIsBold = true;
             category.mTextColor = cHeaderColor;
-            AddPropertiesItem(category, "Machine Type", "mMachineType");
 			AddPropertiesItem(category, "Toolset", "mToolsetType");
 			AddPropertiesItem(category, "Build Type", "mBuildKind");
 

+ 6 - 51
IDEHelper/COFF.cpp

@@ -4717,9 +4717,9 @@ bool COFF::CvParseDBI(int wantAge)
 	uint8* data = CvReadStream(3);	
 	uint8* sectionData = data;
 	defer
-	{
+	(
 		delete sectionData;
-	};
+	);
 
 	// Header
 	GET_INTO(int32, signature);
@@ -5578,22 +5578,7 @@ bool COFF::ParseCv(DataStream& pdbFS, uint8* rootDirData, int pageSize, uint8 wa
 	if (mParseKind == ParseKind_Header)
 		return true;
 
-	//ParseSymbolData();
-
-	//TODO: Remove
-	/*for (int streamIdx = 0; streamIdx < numStreams; streamIdx++)
-	{
-		int outSize;
-		uint8* data = CvReadStream(streamIdx, &outSize);
-		if (outSize > 0)
-		{
-			FILE* fp = fopen(StrFormat("c:/temp/test4/pdb_stream_%d.bin", streamIdx).c_str(), "wb");
-			fwrite(data, 1, outSize, fp);
-			fclose(fp);
-			delete [] data;
-		}
-	}*/
-		
+	///
 	{
 		BP_ZONE("COFF::ParseCv_ReadStrTable");
 		if (mStringTable.mStream != -1)
@@ -5604,28 +5589,12 @@ bool COFF::ParseCv(DataStream& pdbFS, uint8* rootDirData, int pageSize, uint8 wa
 	}
 
 	for (int compileUnitId = 0; compileUnitId < (int)mCvModuleInfo.size(); compileUnitId++)
-	{
-		//ParseCompileUnit(compileUnitId);
+	{		
 		ScanCompileUnit(compileUnitId);
 	}
 
-	/*for (int streamIdx = 0; streamIdx < (int)mDeferredModuleInfo.size(); streamIdx++)
-	{	
-		if (mDeferredModuleInfo[streamIdx].empty())
-			continue;
-
-		uint8* data = CvReadStream(streamIdx);
-		uint8* sectionData = data;
-
-		for (auto& moduleInfo : mDeferredModuleInfo[streamIdx])
-		{
-			CvParseModuleInfo(*moduleInfo, data, sectionData, mCvTypeSectionData, mStringTable);
-		}
-	}*/
-
 	//////////////////////////////////////////////////////////////////////////
-
-	
+		
 	return true;
 }
 
@@ -5764,9 +5733,6 @@ bool COFF::TryLoadPDB(const String& pdbPath, uint8 wantGuid[16], int32 wantAge)
 		return false;	
 	}
 	
-	//FixTypes(startingTypeIdx);
-	//MapTypes(startingTypeIdx);
-
 	if (mCvDataStream->mFailed)
 		return false;
 		
@@ -5928,24 +5894,13 @@ void COFF::ProcessDebugInfo()
 			GET_INTO(uint32, infoType);
 			BF_ASSERT(infoType == CV_SIGNATURE_C13);
 
-			CvInitStreamRaw(mCvTypeSectionReader, entry.mData + 4, entry.mSize - 4);
-			//ParseTypeData(data, mCvTypeSectionDataSize - sizeof(uint32));
+			CvInitStreamRaw(mCvTypeSectionReader, entry.mData + 4, entry.mSize - 4);			
 			ParseTypeData(mCvTypeSectionReader, 0);
 		}
 
 		FixTypes(startingTypeIdx);
 		linkedModule->MapTypes(startingTypeIdx);
 
-		/*std::unordered_set<String, >
-		for (int typeIdx = startingTypeIdx; typeIdx < (int)mTypes.size(); typeIdx++)
-		{
-			DbgType* dbgType = linkedModule->mTypes[typeIdx];
-			if ((!dbgType->mIsDeclaration) && (dbgType->IsCompositeType()))
-			{
-
-			}
-		}*/
-
 		CvCompileUnit* compileUnit = NULL;
 		for (auto entry : mCvCompileUnitData)
 		{

+ 1 - 1
IDEHelper/Compiler/BfCodeGen.cpp

@@ -377,7 +377,7 @@ void BfCodeGenThread::RunLoop()
 		{
 #ifdef BF_PLATFORM_WINDOWS			
 			BeIRCodeGen* beIRCodeGen = new BeIRCodeGen();
-			defer { delete beIRCodeGen; };
+			defer ( delete beIRCodeGen; );
 
 			beIRCodeGen->SetConfigConst(BfIRConfigConst_VirtualMethodOfs, request->mOptions.mVirtualMethodOfs);
 			beIRCodeGen->SetConfigConst(BfIRConfigConst_DynSlotOfs, request->mOptions.mDynSlotOfs);

+ 27 - 19
IDEHelper/Compiler/BfExprEvaluator.cpp

@@ -5709,7 +5709,7 @@ BfTypedValue BfExprEvaluator::MatchMethod(BfAstNode* targetSrc, BfMethodBoundExp
 		}
 	}
 
-	OnScopeExit doRestoreAutocomplete([&]()
+	defer(
 		{
 			if ((restoreCapturingMethodMatchInfo != NULL) && (autoComplete->mMethodMatchInfo == restoreCapturingMethodMatchInfo))
 				autoComplete->mIsCapturingMethodMatchInfo = true;
@@ -9365,10 +9365,12 @@ BfLambdaInstance* BfExprEvaluator::GetLambdaInstance(BfLambdaBindExpression* lam
 	}
 
 	defer
-	{
-		if (autoComplete != NULL)
-			autoComplete->mIsCapturingMethodMatchInfo = (wasCapturingMethodInfo) && (!autoComplete->mIsCapturingMethodMatchInfo);
-	};
+	(
+		{
+			if (autoComplete != NULL)
+				autoComplete->mIsCapturingMethodMatchInfo = (wasCapturingMethodInfo) && (!autoComplete->mIsCapturingMethodMatchInfo);
+		}
+	);	
 
 	if (lambdaBindExpr->mBody == NULL)
 	{
@@ -11848,11 +11850,13 @@ void BfExprEvaluator::InjectMixin(BfAstNode* targetSrc, BfTypedValue target, boo
 	SizedArray<BfResolvedArg, 4> args;
 	SizedArray<BfExprEvaluator*, 8> argExprEvaluators;
 
-	OnScopeExit freeMem([&]()
-	{
-		for (auto exprEvaluator : argExprEvaluators)
-			delete exprEvaluator;
-	});
+	defer
+	(
+		{
+			for (auto exprEvaluator : argExprEvaluators)
+				delete exprEvaluator;
+		}
+	);
 
 	auto _AddArg = [&](BfExpression* argExpr)
 	{
@@ -12155,11 +12159,14 @@ void BfExprEvaluator::InjectMixin(BfAstNode* targetSrc, BfTypedValue target, boo
 		prevSymbolRefKind = mModule->mCompiler->mResolvePassData->mGetSymbolReferenceKind;
 		mModule->mCompiler->mResolvePassData->mGetSymbolReferenceKind = BfGetSymbolReferenceKind_None;
 	}
+
 	defer
-	{
-		if (mModule->mCompiler->mResolvePassData != NULL)
-			mModule->mCompiler->mResolvePassData->mGetSymbolReferenceKind = prevSymbolRefKind;
-	};
+	(
+		{
+			if (mModule->mCompiler->mResolvePassData != NULL)
+				mModule->mCompiler->mResolvePassData->mGetSymbolReferenceKind = prevSymbolRefKind;
+		}
+	);	
 
 	auto methodDef = methodInstance->mMethodDef;
 	auto methodDeclaration = methodDef->GetMethodDeclaration();
@@ -15142,14 +15149,14 @@ void BfExprEvaluator::DoMemberReference(BfMemberReferenceExpression* memberRefEx
 		findName = memberRefExpr->mMemberName->ToString();
 
 	defer
-	{
+	(	
 		if (attributeState.mCustomAttributes != NULL)
 		{
 			if (mPropDef != NULL)
 				attributeState.mTarget = BfAttributeTargets_Invocation;
 			mModule->ValidateCustomAttributes(attributeState.mCustomAttributes, attributeState.mTarget);
-		}
-	};
+		}		
+	);
 
 	SetAndRestoreValue<BfAttributeState*> prevAttributeState(mModule->mAttributeState, &attributeState);
 
@@ -15451,11 +15458,12 @@ void BfExprEvaluator::Visit(BfIndexerExpression* indexerExpr)
 							wasCapturingMethodMatchInfo = autoComplete->mIsCapturingMethodMatchInfo;
 							autoComplete->mIsCapturingMethodMatchInfo = false;
 						}
+						
 						defer
-						{
+						(
 							if (autoComplete != NULL)
 								autoComplete->mIsCapturingMethodMatchInfo = wasCapturingMethodMatchInfo;
-						};
+						);
 
 						if ((!isFailurePass) && (!methodMatcher.WantsCheckMethod(protectionCheckFlags, startCheckTypeInst, curCheckType, checkMethod)))
 							continue;

+ 1 - 1
IDEHelper/Compiler/BfIRCodeGen.cpp

@@ -4013,7 +4013,7 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName, const BfCodeGen
 	PopulateModulePassManager(PM, codeGenOptions);
 
 	llvm::raw_fd_ostream* outStream = NULL;
-	defer{ delete outStream; };
+	defer ( delete outStream; );
 
 	if (enableLTO)
 	{

+ 0 - 34
IDEHelper/Compiler/BfModule.cpp

@@ -956,31 +956,6 @@ void BfModule::FinishInit()
 
 	mBfIRBuilder->Module_SetTargetTriple(mCompiler->mOptions.mTargetTriple);
 
-// #ifdef BF_PLATFORM_WINDOWS
-// 	if (mCompiler->mOptions.mToolsetType == BfToolsetType_GNU)
-// 	{
-// 		if (mCompiler->mOptions.mMachineType == BfMachineType_x86)
-// 			mBfIRBuilder->Module_SetTargetTriple("i686-pc-windows-gnu");
-// 		else
-// 			mBfIRBuilder->Module_SetTargetTriple("x86_64-pc-windows-gnu");
-// 	}
-// 	else //if (mCompiler->mOptions.mToolsetType == BfToolsetType_Microsoft)
-// 	{
-// 		if (mCompiler->mOptions.mMachineType == BfMachineType_x86)
-// 			mBfIRBuilder->Module_SetTargetTriple("i686-pc-windows-msvc");
-// 		else
-// 			mBfIRBuilder->Module_SetTargetTriple("x86_64-pc-windows-msvc");
-// 	}
-// #elif defined BF_PLATFORM_LINUX
-// 	if (mCompiler->mOptions.mMachineType == BfMachineType_x86)
-// 		mBfIRBuilder->Module_SetTargetTriple("i686-unknown-linux-gnu");
-// 	else
-// 		mBfIRBuilder->Module_SetTargetTriple("x86_64-unknown-linux-gnu");
-// #else
-// 	// Leave it default
-// 	mBfIRBuilder->Module_SetTargetTriple("");
-// #endif
-
 	mBfIRBuilder->SetBackend(IsTargetingBeefBackend());	
 
 	if (moduleOptions.mOptLevel == BfOptLevel_OgPlus)
@@ -991,15 +966,6 @@ void BfModule::FinishInit()
 
 	mHasFullDebugInfo = moduleOptions.mEmitDebugInfo == 1;
 	
-	// We need to create DIBuilder for mIsSpecialModule so we have it around when we need it
-// 	if ((!mCompiler->mIsResolveOnly) && ((mIsScratchModule) || (moduleOptions.mEmitDebugInfo != 0)))
-// 	{
-// 		BF_ASSERT((!mBfIRBuilder->mIgnoreWrites) || (mIsScratchModule) || (!mIsReified));
-// 		mBfIRBuilder->DbgInit();
-// 	}
-// 	else
-// 		mHasFullDebugInfo = false;
-
 	if ((!mCompiler->mIsResolveOnly) && (!mIsScratchModule) && (moduleOptions.mEmitDebugInfo != 0) && (mIsReified))
 	{
 		mBfIRBuilder->DbgInit();

+ 2 - 2
IDEHelper/Compiler/BfStmtEvaluator.cpp

@@ -2505,10 +2505,10 @@ BfTypedValue BfModule::TryCaseEnumMatch(BfTypedValue enumVal, BfTypedValue tagVa
 			}
 
 			defer
-			{
+			(
 				if (autoComplete != NULL)
 					autoComplete->mIsCapturingMethodMatchInfo = (wasCapturingMethodInfo) && (!autoComplete->mIsCapturingMethodMatchInfo);
-			};
+			);
 
 			///
 

+ 2 - 2
IDEHelper/DbgModule.cpp

@@ -5319,10 +5319,10 @@ bool DbgModule::ReadCOFF(DataStream* stream, bool isHotObjectFile)
 		mMemReporter->Add(mImageSize);
 	}
 	defer
-	{
+	(
 		if (mMemReporter != NULL)
 			mMemReporter->EndSection();
-	};
+	);
 	
 	DbgModule* mainModule = mDebugTarget->mTargetBinary;	
 	

+ 2 - 0
IDEHelper/VSSupport.cpp

@@ -123,6 +123,8 @@ void free_resources(Find_Result *result) {
 
 // Defer macro/thing.
 
+#undef defer
+
 #define CONCAT_INTERNAL(x,y) x##y
 #define CONCAT(x,y) CONCAT_INTERNAL(x,y)
 

+ 2 - 2
IDEHelper/WinDebugger.cpp

@@ -11092,10 +11092,10 @@ String WinDebugger::DisassembleAtRaw(intptr inAddress)
 		DbgModule* dbgModule = mDebugTarget->FindDbgModuleForAddress(address);
 		DbgModuleMemoryCache* memCache = NULL;
 		defer
-		{
+		(
 			if (dbgModule == NULL)
 				delete memCache;
-		};
+		);
 
 		if ((dbgModule != NULL) && (dbgModule->mOrigImageData == NULL))
 			dbgModule = NULL;

File diff suppressed because it is too large
+ 3 - 3
bin/build.sh


Some files were not shown because too many files changed in this diff