Forráskód Böngészése

Merge pull request #1415 from disarray2077/llvm1301

Fixes to upgrade LLVM version to 13.0.1
Brian Fiete 3 éve
szülő
commit
2ab072ee20

+ 2 - 2
BeefBoot/BeefBoot.vcxproj

@@ -106,7 +106,7 @@
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>../;../IDEHelper;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_11_0_0\llvm\include;..\extern\llvm_win64_11_0_0\include;..\extern\llvm-project_11_0_0\llvm\lib\Target;..\extern\llvm_win64_11_0_0\lib\Target\X86;..\extern\llvm-project_11_0_0\llvm\tools\clang\include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>../;../IDEHelper;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_13_0_1\llvm\include;..\extern\llvm_win64_13_0_1\include;..\extern\llvm-project_13_0_1\llvm\lib\Target;..\extern\llvm_win64_13_0_1\lib\Target\X86;..\extern\llvm-project_13_0_1\llvm\tools\clang\include</AdditionalIncludeDirectories>
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
       <SupportJustMyCode>false</SupportJustMyCode>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -146,7 +146,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <AdditionalIncludeDirectories>../;../IDEHelper;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_11_0_0\llvm\include;..\extern\llvm_win64_11_0_0\include;..\extern\llvm-project_11_0_0\llvm\lib\Target;..\extern\llvm_win64_11_0_0\lib\Target\X86;..\extern\llvm\tools\clang\include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>../;../IDEHelper;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_13_0_1\llvm\include;..\extern\llvm_win64_13_0_1\include;..\extern\llvm-project_13_0_1\llvm\lib\Target;..\extern\llvm_win64_13_0_1\lib\Target\X86;..\extern\llvm\tools\clang\include</AdditionalIncludeDirectories>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
     </ClCompile>

+ 11 - 11
BeefBoot/CMakeLists.txt

@@ -44,8 +44,8 @@ if (${APPLE})
     ../BeefySysLib/    
     ../BeefySysLib/third_party
     ../BeefySysLib/third_party/freetype/include    
-    ../extern/llvm-project_11_0_0/llvm/include  
-    ../extern/llvm-project_11_0_0/llvm/lib/Target
+    ../extern/llvm-project_13_0_1/llvm/include  
+    ../extern/llvm-project_13_0_1/llvm/lib/Target
     ../IDEHelper
 
     ../BeefySysLib/platform/osx
@@ -57,8 +57,8 @@ else()
     ../BeefySysLib/    
     ../BeefySysLib/third_party
     ../BeefySysLib/third_party/freetype/include    
-    ../extern/llvm-project_11_0_0/llvm/include  
-    ../extern/llvm-project_11_0_0/llvm/lib/Target
+    ../extern/llvm-project_13_0_1/llvm/include  
+    ../extern/llvm-project_13_0_1/llvm/lib/Target
     ../IDEHelper
 
     ../BeefySysLib/platform/linux    
@@ -74,18 +74,18 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
     -D_DEBUG
   )
   include_directories(
-    ../extern/llvm_linux_11_0_0/include
-    ../extern/llvm_linux_11_0_0/lib/Target/X86
+    ../extern/llvm_linux_13_0_1/include
+    ../extern/llvm_linux_13_0_1/lib/Target/X86
   )
   set(EXECUTABLE_OUTPUT_PATH  "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
-  set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_11_0_0/lib")
+  set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_13_0_1/lib")
 else()
   include_directories(
-    ../extern/llvm_linux_rel_11_0_0/include
-    ../extern/llvm_linux_rel_11_0_0/lib/Target/X86
+    ../extern/llvm_linux_rel_13_0_1/include
+    ../extern/llvm_linux_rel_13_0_1/lib/Target/X86
   )
   set(EXECUTABLE_OUTPUT_PATH  "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
-  set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_rel_11_0_0/lib")    
+  set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_rel_13_0_1/lib")    
 endif()
 
 ################### Dependencies ##################
@@ -134,7 +134,7 @@ add_executable(${PROJECT_NAME}
 )
 
 execute_process(
-  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_11_0_0/bin/llvm-config --system-libs --link-static
+  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_13_0_1/bin/llvm-config --system-libs --link-static
   OUTPUT_VARIABLE LLVM_SYSTEM_LIBS
   OUTPUT_STRIP_TRAILING_WHITESPACE
 )

+ 2 - 2
Debugger32/Debugger32.vcxproj

@@ -145,7 +145,7 @@
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <PreprocessorDefinitions>BF_DBG_32;WIN32;_DEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>../;../IDEHelper;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_11_0_0\llvm\include;..\extern\llvm_win64_11_0_0\include;..\extern\llvm-project_11_0_0\llvm\lib\Target;..\extern\llvm_win64_11_0_0\lib\Target\X86;..\extern\llvm-project_11_0_0\llvm\tools\clang\include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>../;../IDEHelper;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_13_0_1\llvm\include;..\extern\llvm_win64_13_0_1\include;..\extern\llvm-project_13_0_1\llvm\lib\Target;..\extern\llvm_win64_13_0_1\lib\Target\X86;..\extern\llvm-project_13_0_1\llvm\tools\clang\include</AdditionalIncludeDirectories>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AdditionalOptions>-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
       <SupportJustMyCode>false</SupportJustMyCode>
@@ -183,7 +183,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <PreprocessorDefinitions>BF_DBG_32;WIN32;NDEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>../;../IDEHelper;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_11_0_0\llvm\include;..\extern\llvm_win64_11_0_0\include;..\extern\llvm-project_11_0_0\llvm\lib\Target;..\extern\llvm_win64_11_0_0\lib\Target\X86;..\extern\llvm-project_11_0_0\llvm\tools\clang\include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>../;../IDEHelper;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_13_0_1\llvm\include;..\extern\llvm_win64_13_0_1\include;..\extern\llvm-project_13_0_1\llvm\lib\Target;..\extern\llvm_win64_13_0_1\lib\Target\X86;..\extern\llvm-project_13_0_1\llvm\tools\clang\include</AdditionalIncludeDirectories>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
     </ClCompile>

+ 2 - 2
Debugger64/Debugger64.vcxproj

@@ -145,7 +145,7 @@
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <PreprocessorDefinitions>BF_DBG_64;WIN32;_DEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>../;../IDEHelper;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_11_0_0\llvm\include;..\extern\llvm_win64_11_0_0\include;..\extern\llvm-project_11_0_0\llvm\lib\Target;..\extern\llvm_win64_11_0_0\lib\Target\X86;..\extern\llvm-project_11_0_0\llvm\tools\clang\include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>../;../IDEHelper;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_13_0_1\llvm\include;..\extern\llvm_win64_13_0_1\include;..\extern\llvm-project_13_0_1\llvm\lib\Target;..\extern\llvm_win64_13_0_1\lib\Target\X86;..\extern\llvm-project_13_0_1\llvm\tools\clang\include</AdditionalIncludeDirectories>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AdditionalOptions>-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
       <SupportJustMyCode>false</SupportJustMyCode>
@@ -183,7 +183,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <PreprocessorDefinitions>BF_DBG_64;WIN32;NDEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>../;../IDEHelper;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_11_0_0\llvm\include;..\extern\llvm_win64_11_0_0\include;..\extern\llvm-project_11_0_0\llvm\lib\Target;..\extern\llvm_win64_11_0_0\lib\Target\X86;..\extern\llvm-project_11_0_0\llvm\tools\clang\include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>../;../IDEHelper;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_13_0_1\llvm\include;..\extern\llvm_win64_13_0_1\include;..\extern\llvm-project_13_0_1\llvm\lib\Target;..\extern\llvm_win64_13_0_1\lib\Target\X86;..\extern\llvm-project_13_0_1\llvm\tools\clang\include</AdditionalIncludeDirectories>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
     </ClCompile>

+ 3 - 1
IDE/src/BuildContext.bf

@@ -630,7 +630,7 @@ namespace IDE
 					compilerExePath.Append(@"/upstream/emscripten/emcc.bat");
 					//linkLine.Append(" c:\\Beef\\wasm\\BeefRT.a -s STRICT=1 -s USE_PTHREADS=1 -s ALIASING_FUNCTION_POINTERS=1 -s ASSERTIONS=0 -s DISABLE_EXCEPTION_CATCHING=0 -s DEMANGLE_SUPPORT=0 -s EVAL_CTORS=1 -s WASM=1 -s \"EXPORTED_FUNCTIONS=['_BeefMain','_BeefDone','_pthread_mutexattr_init','_pthread_mutex_init','_emscripten_futex_wake','_calloc','_sbrk']\"");
 					linkLine.Append(" ", gApp.mInstallDir);
-					linkLine.Append("..\\..\\wasm\\BeefRT.a -s STRICT=1 -s USE_PTHREADS=1 -s ALIASING_FUNCTION_POINTERS=1 -s ASSERTIONS=0 -s DISABLE_EXCEPTION_CATCHING=0 -s DEMANGLE_SUPPORT=0 -s EVAL_CTORS=1 -s WASM=1");
+					linkLine.Append("..\\..\\wasm\\BeefRT.a -s STRICT=1 -s USE_PTHREADS=1 -s ASSERTIONS=0 -s DISABLE_EXCEPTION_CATCHING=0 -s DEMANGLE_SUPPORT=0 -s WASM=1");
 
 					String workingDir = scope String();
 					if (!llvmDir.IsEmpty)
@@ -642,6 +642,8 @@ namespace IDE
 						workingDir.Append(gApp.mInstallDir);
 					}
 
+					linkLine.Replace('\\', '/');
+
 					//linkLine.Append(" --no-entry --export-all");
 
 			        var runCmd = gApp.QueueRun(compilerExePath, linkLine, workingDir, .UTF8);

+ 4 - 4
IDE/src/IDEApp.bf

@@ -8004,7 +8004,7 @@ namespace IDE
 			}
 		}*/
 
-		const int cArgFileThreshold = 0x7800;
+		const int cArgFileThreshold = 0x2000 - 1;
 
         public ExecutionQueueCmd QueueRun(String fileName, String args, String workingDir, ArgsFileKind argsFileKind = .None)
         {            
@@ -8012,7 +8012,7 @@ namespace IDE
             executionQueueCmd.mFileName = new String(fileName);
             executionQueueCmd.mArgs = new String(args);
             executionQueueCmd.mWorkingDir = new String(workingDir);
-			if (args.Length > cArgFileThreshold)
+			if (fileName.Length + args.Length + 1 > cArgFileThreshold)
 			{
 				// Only use UTF16 if we absolutely need to
 				if ((argsFileKind == .UTF16WithBom) && (!args.HasMultibyteChars()))
@@ -9662,10 +9662,10 @@ namespace IDE
 									case .Linux:
 										newString.AppendF("./{} -lpthread -ldl -Wl,-rpath -Wl,$ORIGIN", rtName);
 									case .Wasm:
-										newString.Append(mInstallDir);
+										/*newString.Append(mInstallDir);
 										newString.Append("Beef", IDEApp.sRTVersionStr, "RT");
 										newString.Append((Workspace.PlatformType.GetPtrSizeByName(gApp.mPlatformName) == 4) ? "32" : "64");
-										newString.Append("_wasm.lib");
+										newString.Append("_wasm.lib");*/
 									default:
 									}	
 

+ 2 - 1
IDEHelper/Backend/BeIRCodeGen.cpp

@@ -2669,7 +2669,8 @@ void BeIRCodeGen::HandleNextCmd()
 			CMD_PARAM(int, line);
 			CMD_PARAM(int, column);
 			CMD_PARAM(BeMDNode*, diScope);
-			CMD_PARAM(BeMDNode*, diInlinedAt);			
+			CMD_PARAM(BeMDNode*, diInlinedAt);
+			BF_ASSERT(diScope != NULL);
 			mBeModule->SetCurrentDebugLocation(line - 1, column - 1, diScope, (BeDbgLoc*)diInlinedAt);
 		}
 		break;

+ 19 - 16
IDEHelper/CMakeLists.txt

@@ -49,8 +49,8 @@ if (${APPLE})
     ../BeefySysLib/    
     ../BeefySysLib/third_party
     ../BeefySysLib/third_party/freetype/include    
-    ../extern/llvm-project_11_0_0/llvm/include  
-    ../extern/llvm-project_11_0_0/llvm/lib/Target
+    ../extern/llvm-project_13_0_1/llvm/include  
+    ../extern/llvm-project_13_0_1/llvm/lib/Target
 
     ../BeefySysLib/platform/osx
   )
@@ -61,8 +61,8 @@ else()
     ../BeefySysLib/    
     ../BeefySysLib/third_party
     ../BeefySysLib/third_party/freetype/include    
-    ../extern/llvm-project_11_0_0/llvm/include  
-    ../extern/llvm-project_11_0_0/llvm/lib/Target
+    ../extern/llvm-project_13_0_1/llvm/include  
+    ../extern/llvm-project_13_0_1/llvm/lib/Target
 
     ../BeefySysLib/platform/linux    
   )
@@ -77,24 +77,24 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
     -D_DEBUG
   )
   include_directories(
-    ../extern/llvm_linux_11_0_0/include
-    ../extern/llvm_linux_11_0_0/lib/Target/X86
-    ../extern/llvm_linux_11_0_0/lib/Target/AArch64
+    ../extern/llvm_linux_13_0_1/include
+    ../extern/llvm_linux_13_0_1/lib/Target/X86
+    ../extern/llvm_linux_13_0_1/lib/Target/AArch64
   )
   set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
   set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
   set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
-  set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_11_0_0/lib")
+  set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_13_0_1/lib")
 else()
   include_directories(
-    ../extern/llvm_linux_rel_11_0_0/include
-    ../extern/llvm_linux_rel_11_0_0/lib/Target/X86
-    ../extern/llvm_linux_rel_11_0_0/lib/Target/AArch64
+    ../extern/llvm_linux_rel_13_0_1/include
+    ../extern/llvm_linux_rel_13_0_1/lib/Target/X86
+    ../extern/llvm_linux_rel_13_0_1/lib/Target/AArch64
   )
   set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
   set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
   set(CMAKE_EXECUTABLE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
-  set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_rel_11_0_0/lib")
+  set(LLVM_LIB "${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_rel_13_0_1/lib")
 endif()
 
 ################### Dependencies ##################
@@ -192,15 +192,16 @@ add_library(${PROJECT_NAME} SHARED
 )
 
 execute_process(
-  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_11_0_0/bin/llvm-config --system-libs --link-static
+  COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../extern/llvm_linux_13_0_1/bin/llvm-config --system-libs --link-static
   OUTPUT_VARIABLE LLVM_SYSTEM_LIBS
-  OUTPUT_STRIP_TRAILING_WHITESPACE
+  OUTPUT_STRIP_TRAILING_WHITESPACE  
 )
 
 set(TARGET_LIBS_OS "${LLVM_SYSTEM_LIBS}")
 
 if (HAVE_BACKTRACE_HEADERS)
   string(APPEND TARGET_LIBS_OS " -lbacktrace")
+  string(STRIP ${TARGET_LIBS_OS} TARGET_LIBS_OS)
 endif()
 
 list(APPEND LLVM_LIBS
@@ -217,7 +218,7 @@ list(APPEND LLVM_LIBS
   ${LLVM_LIB}/libLLVMInstCombine.a
   ${LLVM_LIB}/libLLVMSelectionDAG.a
   ${LLVM_LIB}/libLLVMProfileData.a
-  ${LLVM_LIB}/libLLVMTransformUtils.a
+    
   ${LLVM_LIB}/libLLVMAnalysis.a    
   ${LLVM_LIB}/libLLVMAsmPrinter.a
   ${LLVM_LIB}/libLLVMBitWriter.a
@@ -226,8 +227,9 @@ list(APPEND LLVM_LIBS
   ${LLVM_LIB}/libLLVMInstrumentation.a
   ${LLVM_LIB}/libLLVMDebugInfoDWARF.a
   ${LLVM_LIB}/libLLVMDebugInfoPDB.a
-  ${LLVM_LIB}/libLLVMDebugInfoCodeView.a
+  ${LLVM_LIB}/libLLVMDebugInfoCodeView.a  
   ${LLVM_LIB}/libLLVMGlobalISel.a
+  ${LLVM_LIB}/libLLVMTransformUtils.a
   ${LLVM_LIB}/libLLVMBinaryFormat.a    
   ${LLVM_LIB}/libLLVMIRReader.a
   ${LLVM_LIB}/libLLVMLinker.a    
@@ -263,6 +265,7 @@ list(APPEND LLVM_LIBS
   ${LLVM_LIB}/libLLVMWebAssemblyCodeGen.a
   ${LLVM_LIB}/libLLVMWebAssemblyAsmParser.a
   ${LLVM_LIB}/libLLVMWebAssemblyDisassembler.a
+  ${LLVM_LIB}/libLLVMWebAssemblyUtils.a
 
   ${LLVM_LIB}/libLLVMSupport.a
   ${LLVM_LIB}/libLLVMDemangle.a)

+ 4 - 7
IDEHelper/Compiler/BfCompiler.cpp

@@ -1794,7 +1794,7 @@ void BfCompiler::CreateVData(BfVDataModule* bfModule)
 			auto res = bfModule->mBfIRBuilder->CreateCall(mainFunc, args);
 			args.clear();
 			bfModule->mBfIRBuilder->CreateCall(shutdownFunc, args);
-			if (mainHasArgs)
+			if (mainHasRet)
 				bfModule->mBfIRBuilder->CreateRet(res);
 			else
 				bfModule->mBfIRBuilder->CreateRetVoid();
@@ -1815,7 +1815,7 @@ void BfCompiler::CreateVData(BfVDataModule* bfModule)
 			}
 		}
 
-		if ((mOptions.mPlatformType != BfPlatformType_Windows) && 
+		if ((mOptions.mPlatformType != BfPlatformType_Windows) && (mainHasArgs) &&
 			((targetType == BfTargetType_BeefConsoleApplication) || (targetType == BfTargetType_BeefTest)))
         {
             SmallVector<BfIRType, 2> paramTypes;
@@ -1827,11 +1827,8 @@ void BfCompiler::CreateVData(BfVDataModule* bfModule)
 			bfModule->SetupIRMethod(NULL, setCmdLineFunc, false);
 
             SmallVector<BfIRValue, 2> args;
-			if (mainHasArgs)
-			{
-				args.push_back(bfModule->mBfIRBuilder->GetArgument(0));
-				args.push_back(bfModule->mBfIRBuilder->GetArgument(1));
-			}
+			args.push_back(bfModule->mBfIRBuilder->GetArgument(0));
+			args.push_back(bfModule->mBfIRBuilder->GetArgument(1));			
             bfModule->mBfIRBuilder->CreateCall(setCmdLineFunc, args);
         }
 		

+ 1 - 0
IDEHelper/Compiler/BfIRBuilder.cpp

@@ -5396,6 +5396,7 @@ void BfIRBuilder::UpdateDebugLocation(BfIRValue inst)
 
 void BfIRBuilder::SetCurrentDebugLocation(int line, int column, BfIRMDNode diScope, BfIRMDNode diInlinedAt)
 {
+	BF_ASSERT(diScope);
 	if (mDbgVerifyCodeGen && gDebugDbgLoc)
 	{
 		OutputDebugStrF("SetCurrentDebugLocation %d %d:%d\n", diScope.mId, line, column);

+ 64 - 38
IDEHelper/Compiler/BfIRCodeGen.cpp

@@ -486,6 +486,12 @@ void BfIRCodeGen::FixValues(llvm::StructType* structType, llvm::SmallVector<llvm
 	}
 }
 
+void BfIRCodeGen::FixIndexer(llvm::Value*& val)
+{
+	if ((int)val->getType()->getScalarSizeInBits() > mPtrSize * 8)
+		val = mIRBuilder->CreateIntCast(val, llvm::Type::getInt32Ty(*mLLVMContext), false);
+}
+
 BfTypeCode BfIRCodeGen::GetTypeCode(llvm::Type* type, bool isSigned)
 {
 	if (type->isIntegerTy())
@@ -674,7 +680,9 @@ void BfIRCodeGen::SetResult(int id, llvm::MDNode* md)
 
 void BfIRCodeGen::ProcessBfIRData(const BfSizedArray<uint8>& buffer)
 {
-	struct InlineAsmErrorHook
+    // Diagnostic handlers were unified in LLVM change 5de2d189e6ad, so starting
+    // with LLVM 13 this function is gone.
+	/*struct InlineAsmErrorHook
 	{		
 		static void StaticHandler(const llvm::SMDiagnostic& diag, void *context, unsigned locCookie)
 		{
@@ -688,7 +696,7 @@ void BfIRCodeGen::ProcessBfIRData(const BfSizedArray<uint8>& buffer)
 			}
 		}		
 	};	
-	mLLVMContext->setInlineAsmDiagnosticHandler(InlineAsmErrorHook::StaticHandler, this);
+	mLLVMContext->setInlineAsmDiagnosticHandler(InlineAsmErrorHook::StaticHandler, this);*/
 
 	BF_ASSERT(mStream == NULL);
 	mStream = new ChunkedDataBuffer();
@@ -924,7 +932,7 @@ void BfIRCodeGen::Read(llvm::Value*& llvmValue, BfIRCodeGenEntry** codeGenEntry,
 				llvm::ConstantInt::get(llvm::Type::getInt32Ty(*mLLVMContext), idx0),
 				llvm::ConstantInt::get(llvm::Type::getInt32Ty(*mLLVMContext), idx1)};
 
-			llvmValue = FixGEP(target, llvm::ConstantExpr::getInBoundsGetElementPtr(NULL, target, gepArgs));
+			llvmValue = FixGEP(target, llvm::ConstantExpr::getInBoundsGetElementPtr(target->getType()->getPointerElementType(), target, gepArgs));
 			return;
 		}
 		else if (constType == BfConstType_ExtractValue)
@@ -1273,7 +1281,7 @@ llvm::Value* BfIRCodeGen::TryToVector(llvm::Value* value, llvm::Type* elemType)
 			return mIRBuilder->CreateAlignedLoad(ptrVal0, llvm::MaybeAlign(1));
 		}
 
-		if (auto vecType = llvm::dyn_cast<llvm::VectorType>(ptrElemType))
+		if (auto vecType = llvm::dyn_cast<llvm::FixedVectorType>(ptrElemType))
 		{
 			if (vecType->getElementType() == elemType)
 				return mIRBuilder->CreateAlignedLoad(value, llvm::MaybeAlign(1));
@@ -1567,7 +1575,7 @@ void BfIRCodeGen::CreateMemSet(llvm::Value* addr, llvm::Value* val, llvm::Value*
 						headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo());
 					llvm::Value* ptrVal = headVal;
 					if (curOffset != 0)
-						ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, headVal, curOffset / 8);
+						ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(intTy, headVal, curOffset / 8);
 					mIRBuilder->CreateStore(constVal, ptrVal, isVolatile);
 
 					curOffset += 8;
@@ -1586,7 +1594,7 @@ void BfIRCodeGen::CreateMemSet(llvm::Value* addr, llvm::Value* val, llvm::Value*
 						headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo());
 					llvm::Value* ptrVal = headVal;
 					if (curOffset != 0)
-						ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, headVal, curOffset / 4);
+						ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(intTy, headVal, curOffset / 4);
 					mIRBuilder->CreateStore(constVal, ptrVal, isVolatile);
 
 					curOffset += 4;
@@ -1605,7 +1613,7 @@ void BfIRCodeGen::CreateMemSet(llvm::Value* addr, llvm::Value* val, llvm::Value*
 						headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo());
 					llvm::Value* ptrVal = headVal;
 					if (curOffset != 0)
-						ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, headVal, curOffset / 2);
+						ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(intTy, headVal, curOffset / 2);
 					mIRBuilder->CreateStore(constVal, ptrVal, isVolatile);
 
 					curOffset += 2;
@@ -1624,7 +1632,7 @@ void BfIRCodeGen::CreateMemSet(llvm::Value* addr, llvm::Value* val, llvm::Value*
 						headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo());
 					llvm::Value* ptrVal = headVal;
 					if (curOffset != 0)
-						ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, headVal, curOffset / 1);
+						ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(intTy, headVal, curOffset / 1);
 					mIRBuilder->CreateStore(constVal, ptrVal, isVolatile);
 
 					curOffset += 1;
@@ -1670,7 +1678,9 @@ void BfIRCodeGen::InitTarget()
 	else if (mCodeGenOptions.mOptLevel == BfOptLevel_O3)
 		optLvl = llvm::CodeGenOpt::Aggressive;
 
-	if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_SSE)
+	if (theTriple.isWasm())
+		featuresStr = "+atomics,+bulk-memory,+mutable-globals,+sign-ext";
+	else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_SSE)
 		featuresStr = "+sse";
 	else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_SSE2)
 		featuresStr = "+sse2";
@@ -1683,7 +1693,7 @@ void BfIRCodeGen::InitTarget()
 	else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_AVX)
 		featuresStr = "+avx";
 	else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_AVX2)
-		featuresStr = "+avx2";
+		featuresStr = "+avx2";	
 
 	llvm::Optional<llvm::Reloc::Model> relocModel;
 	llvm::CodeModel::Model cmModel = llvm::CodeModel::Small;
@@ -1787,7 +1797,7 @@ void BfIRCodeGen::HandleNextCmd()
 		{
 			CMD_PARAM(String, fileName);
 			std::error_code ec;
-			llvm::raw_fd_ostream outStream(fileName.c_str(), ec, llvm::sys::fs::OpenFlags::F_Text);
+			llvm::raw_fd_ostream outStream(fileName.c_str(), ec, llvm::sys::fs::OpenFlags::OF_Text);
 			if (ec)
 			{
 				Fail("Failed writing IR '" + fileName + "': " + ec.message());
@@ -2311,12 +2321,12 @@ void BfIRCodeGen::HandleNextCmd()
 
 			if (auto alignedPtr = GetAlignedPtr(val))
 			{
-				auto gepResult = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, alignedPtr, idx0);
+				auto gepResult = mIRBuilder->CreateConstInBoundsGEP1_32(alignedPtr->getType()->getPointerElementType(), alignedPtr, idx0);
 				SetResult(curId, mIRBuilder->CreateBitCast(gepResult, val->getType()));
 				break;
 			}
 
-			SetResult(curId, mIRBuilder->CreateConstInBoundsGEP1_32(NULL, val, idx0));
+			SetResult(curId, mIRBuilder->CreateConstInBoundsGEP1_32(val->getType()->getPointerElementType(), val, idx0));
 		}
 		break;
 	case BfIRCmd_InboundsGEP2_32:
@@ -2324,7 +2334,7 @@ void BfIRCodeGen::HandleNextCmd()
 			CMD_PARAM(llvm::Value*, val);
 			CMD_PARAM(int, idx0);
 			CMD_PARAM(int, idx1);
-			SetResult(curId, FixGEP(val, mIRBuilder->CreateConstInBoundsGEP2_32(NULL, val, idx0, idx1)));
+			SetResult(curId, FixGEP(val, mIRBuilder->CreateConstInBoundsGEP2_32(val->getType()->getPointerElementType(), val, idx0, idx1)));
 		}
 		break;
 	case BfIRCmd_InBoundsGEP1:
@@ -2338,7 +2348,7 @@ void BfIRCodeGen::HandleNextCmd()
 				SetResult(curId, mIRBuilder->CreateBitCast(gepResult, val->getType()));
 				break;
 			}
-
+			FixIndexer(idx0);
 			SetResult(curId, mIRBuilder->CreateInBoundsGEP(val, idx0));
 		}
 		break;
@@ -2347,6 +2357,8 @@ void BfIRCodeGen::HandleNextCmd()
 			CMD_PARAM(llvm::Value*, val);
 			CMD_PARAM(llvm::Value*, idx0);
 			CMD_PARAM(llvm::Value*, idx1);
+			FixIndexer(idx0);
+			FixIndexer(idx1);
 			llvm::Value* indices[2] = { idx0, idx1 };			
 			SetResult(curId, FixGEP(val, mIRBuilder->CreateInBoundsGEP(val, llvm::makeArrayRef(indices))));
 		}
@@ -3112,7 +3124,7 @@ void BfIRCodeGen::HandleNextCmd()
 
 								if (result != NULL)
 								{
-									if (auto vecType = llvm::dyn_cast<llvm::VectorType>(result->getType()))
+									if (auto vecType = llvm::dyn_cast<llvm::FixedVectorType>(result->getType()))
 									{
 										if (auto intType = llvm::dyn_cast<llvm::IntegerType>(vecType->getElementType()))
 										{
@@ -3180,7 +3192,7 @@ void BfIRCodeGen::HandleNextCmd()
 
 								if (result != NULL)
 								{
-									if (auto vecType = llvm::dyn_cast<llvm::VectorType>(result->getType()))
+									if (auto vecType = llvm::dyn_cast<llvm::FixedVectorType>(result->getType()))
 									{
 										if (auto intType = llvm::dyn_cast<llvm::IntegerType>(vecType->getElementType()))
 										{
@@ -3336,7 +3348,7 @@ void BfIRCodeGen::HandleNextCmd()
 							}
 						}
 
-						auto inst = mIRBuilder->CreateAtomicCmpXchg(args[0], args[1], args[2], successOrdering, failOrdering);
+						auto inst = mIRBuilder->CreateAtomicCmpXchg(args[0], args[1], args[2], llvm::MaybeAlign(), successOrdering, failOrdering);
 						if (intrinsicData->mIntrinsic == BfIRIntrinsic_AtomicCmpStore_Weak)
 							inst->setWeak(true);
 						if ((memoryKind & BfIRAtomicOrdering_Volatile) != 0)
@@ -3547,7 +3559,7 @@ void BfIRCodeGen::HandleNextCmd()
 							break;
 						}
 												
-						auto atomicRMW = mIRBuilder->CreateAtomicRMW(op, args[0], args[1], ordering);
+						auto atomicRMW = mIRBuilder->CreateAtomicRMW(op, args[0], args[1], llvm::MaybeAlign(), ordering);
 						if ((memoryKind & BfIRAtomicOrdering_Volatile) != 0)
 							atomicRMW->setVolatile(true);
 						llvm::Value* result = atomicRMW;
@@ -3776,7 +3788,17 @@ void BfIRCodeGen::HandleNextCmd()
 			CMD_PARAM(int, argIdx);
 			BfIRAttribute attribute = (BfIRAttribute)mStream->Read();
 			BF_ASSERT(llvm::isa<llvm::CallInst>(callInst));
-			((llvm::CallInst*)callInst)->addAttribute(argIdx, LLVMMapAttribute(attribute));
+			auto attr = LLVMMapAttribute(attribute);
+			if (attr == llvm::Attribute::StructRet)
+			{
+				auto funcType = ((llvm::CallInst*)callInst)->getFunctionType();
+				llvm::Attribute sret = llvm::Attribute::getWithStructRetType(*mLLVMContext, funcType->getFunctionParamType(argIdx - 1)->getPointerElementType());
+				((llvm::CallInst*)callInst)->addAttribute(argIdx, sret);
+			}
+			else
+			{
+				((llvm::CallInst*)callInst)->addAttribute(argIdx, attr);
+			}
 		}
 		break;
 	case BfIRCmd_Call_AddAttribute1:
@@ -3794,12 +3816,11 @@ void BfIRCodeGen::HandleNextCmd()
 				}
 				else if (attribute == BfIRAttribute_ByVal)
 				{
-					llvm::AttrBuilder B;
-					B.addAttribute(llvm::Attribute::ByVal);
-					B.addAlignmentAttr(arg);
-					auto attrList = ((llvm::CallInst*)callInst)->getAttributes();
-					attrList = attrList.addAttributes(*mLLVMContext, argIdx, B);
-					((llvm::CallInst*)callInst)->setAttributes(attrList);
+					auto funcType = ((llvm::CallInst*)callInst)->getFunctionType();
+					llvm::Attribute byValAttr = llvm::Attribute::getWithByValType(*mLLVMContext, funcType->getFunctionParamType(argIdx - 1)->getPointerElementType());
+					llvm::Attribute alignAttr = llvm::Attribute::getWithAlignment(*mLLVMContext, llvm::Align(arg));
+					((llvm::CallInst*)callInst)->addAttribute(argIdx, byValAttr);
+					((llvm::CallInst*)callInst)->addAttribute(argIdx, alignAttr);
 				}
 			}
 		}
@@ -3854,7 +3875,13 @@ void BfIRCodeGen::HandleNextCmd()
 			else
 			{
 				auto attr = LLVMMapAttribute(attribute);
-				if (attr != llvm::Attribute::None)
+				if (attr == llvm::Attribute::StructRet)
+				{
+					auto funcType = func->getFunctionType();
+					llvm::Attribute sret = llvm::Attribute::getWithStructRetType(*mLLVMContext, funcType->getFunctionParamType(argIdx - 1)->getPointerElementType());
+					func->addAttribute(argIdx, sret);
+				}
+				else if (attr != llvm::Attribute::None)
 					func->addAttribute(argIdx, attr);
 			}
 		}
@@ -3871,12 +3898,11 @@ void BfIRCodeGen::HandleNextCmd()
 			}
 			else if (attribute == BfIRAttribute_ByVal)
 			{
-				llvm::AttrBuilder B;
-				B.addAttribute(llvm::Attribute::ByVal);
-				B.addAlignmentAttr(arg);
-				auto attrList = ((llvm::Function*)func)->getAttributes();
-				attrList = attrList.addAttributes(*mLLVMContext, argIdx, B);
-				((llvm::Function*)func)->setAttributes(attrList);				
+				auto funcType = func->getFunctionType();
+				llvm::Attribute byValAttr = llvm::Attribute::getWithByValType(*mLLVMContext, funcType->getFunctionParamType(argIdx - 1)->getPointerElementType());				
+				llvm::Attribute alignAttr = llvm::Attribute::getWithAlignment(*mLLVMContext, llvm::Align(arg));
+				func->addAttribute(argIdx, byValAttr);
+				func->addAttribute(argIdx, alignAttr);
 			}
 		}
 		break;
@@ -3966,7 +3992,7 @@ void BfIRCodeGen::HandleNextCmd()
 			CMD_PARAM(int, column);
 			CMD_PARAM(llvm::MDNode*, diScope);
 			CMD_PARAM(llvm::MDNode*, diInlinedAt);
-			mDebugLoc = llvm::DebugLoc::get(line, column, diScope, diInlinedAt);			
+			mDebugLoc = llvm::DILocation::get(*mLLVMContext, line, column, diScope, diInlinedAt);
 		}
 		break;
 	case BfIRCmd_Nop:
@@ -5179,7 +5205,7 @@ static void PopulateModulePassManager(llvm::legacy::PassManagerBase &MPM, const
 	// convert to more optimized IR using more aggressive simplify CFG options.
 	// The extra sinking transform can create larger basic blocks, so do this
 	// before SLP vectorization.
-	MPM.add(llvm::createCFGSimplificationPass(1, true, true, false, true));
+	MPM.add(llvm::createCFGSimplificationPass({ 1, true, true, false, false, true }));
 
 	if (options.mRunSLPAfterLoopVectorization && options.mSLPVectorize) {
 		MPM.add(llvm::createSLPVectorizerPass()); // Vectorize parallel scalar chains.
@@ -5343,7 +5369,7 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName)
 	}
 		
 	std::error_code EC;
-	llvm::sys::fs::OpenFlags OpenFlags = llvm::sys::fs::F_None;
+	llvm::sys::fs::OpenFlags OpenFlags = llvm::sys::fs::OF_None;
 
 	llvm::raw_fd_ostream out(outFileName.c_str(), EC, OpenFlags);
 
@@ -5368,7 +5394,7 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName)
 	if ((enableLTO) || (mCodeGenOptions.mWriteBitcode))
 	{
 		std::error_code ec;
-		outStream = new llvm::raw_fd_ostream(outFileName.c_str(), ec, llvm::sys::fs::F_None);
+		outStream = new llvm::raw_fd_ostream(outFileName.c_str(), ec, llvm::sys::fs::OF_None);
 		if (outStream->has_error())
 		{
 			return false;
@@ -5438,7 +5464,7 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName)
 bool BfIRCodeGen::WriteIR(const StringImpl& outFileName, StringImpl& error)
 {
 	std::error_code ec;	
-	llvm::raw_fd_ostream outStream(outFileName.c_str(), ec, llvm::sys::fs::OpenFlags::F_Text);
+	llvm::raw_fd_ostream outStream(outFileName.c_str(), ec, llvm::sys::fs::OpenFlags::OF_Text);
 	if (ec)
 	{
 	 	error = ec.message();

+ 1 - 0
IDEHelper/Compiler/BfIRCodeGen.h

@@ -125,6 +125,7 @@ public:
 public:		
 	void InitTarget();
 	void FixValues(llvm::StructType* structType, llvm::SmallVector<llvm::Value*, 8>& values);
+	void FixIndexer(llvm::Value*& val);
 	BfTypeCode GetTypeCode(llvm::Type* type, bool isSigned);
 	llvm::Type* GetLLVMType(BfTypeCode typeCode, bool& isSigned);
 	BfIRTypeEntry& GetTypeEntry(int typeId);

+ 18 - 10
IDEHelper/Compiler/BfModule.cpp

@@ -2614,9 +2614,13 @@ void BfModule::UpdateSrcPos(BfAstNode* astNode, BfSrcPosFlags flags, int debugLo
 		if (mCurMethodState->mCrossingMixin)
 			inlineAt = BfIRMDNode();
 
-		if ((!useDIScope) && (mIsComptimeModule))
+		if ((!useDIScope) && (mIsComptimeModule))		
 			useDIScope = wantDIFile;
-		mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, column, useDIScope, inlineAt);
+
+		if (!useDIScope)
+			mBfIRBuilder->ClearDebugLocation();
+		else
+			mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, column, useDIScope, inlineAt);
 		if ((flags & BfSrcPosFlag_Expression) == 0)
 			mBfIRBuilder->CreateStatementStart();
 	}
@@ -2639,15 +2643,19 @@ void BfModule::SetIllegalSrcPos(BfSrcPosFlags flags)
 {
 	if ((mBfIRBuilder->DbgHasInfo()) && (mCurMethodState != NULL))
 	{
-		if ((mCurMethodState->mCurScope->mDIInlinedAt) && (mCompiler->mOptions.IsCodeView()))
-		{
-			// Currently, CodeView does not record column positions so we can't use an illegal column position as an "invalid" marker
-			mBfIRBuilder->SetCurrentDebugLocation(0, 0, mCurMethodState->mCurScope->mDIScope, mCurMethodState->mCurScope->mDIInlinedAt);
-		}
-		else
+		auto curScope = mCurMethodState->mCurScope->mDIScope;		
+		if (curScope)
 		{
-			// Set to whatever it previously was but at column zero, which we will know to be illegal		
-			mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, mCurMethodState->mCurScope->mDIScope, mCurMethodState->mCurScope->mDIInlinedAt);
+			if ((mCurMethodState->mCurScope->mDIInlinedAt) && (mCompiler->mOptions.IsCodeView()))
+			{
+				// Currently, CodeView does not record column positions so we can't use an illegal column position as an "invalid" marker
+				mBfIRBuilder->SetCurrentDebugLocation(0, 0, curScope, mCurMethodState->mCurScope->mDIInlinedAt);
+			}
+			else
+			{
+				// Set to whatever it previously was but at column zero, which we will know to be illegal		
+				mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, curScope, mCurMethodState->mCurScope->mDIInlinedAt);
+			}
 		}
 
 		if ((flags & BfSrcPosFlag_Expression) == 0)

+ 4 - 2
IDEHelper/Compiler/BfStmtEvaluator.cpp

@@ -148,7 +148,8 @@ bool BfModule::AddDeferredCallEntry(BfDeferredCallEntry* deferredCallEntry, BfSc
 			mBfIRBuilder->SetInsertPointAtStart(mCurMethodState->mIRInitBlock);
 
 			auto scopeHead = &mCurMethodState->mHeadScope;
-			mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, scopeHead->mDIScope, BfIRMDNode());
+			if (scopeHead->mDIScope)
+				mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, scopeHead->mDIScope, BfIRMDNode());
 
 			if (WantsLifetimes())
 				mBfIRBuilder->CreateLifetimeStart(listEntry->mDynCallTail);
@@ -164,7 +165,8 @@ bool BfModule::AddDeferredCallEntry(BfDeferredCallEntry* deferredCallEntry, BfSc
 
 				mBfIRBuilder->SetInsertPoint(mCurMethodState->mIRInitBlock);
 
-				mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, scopeHead->mDIScope, BfIRMDNode());
+				if (scopeHead->mDIScope)
+					mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, scopeHead->mDIScope, BfIRMDNode());
 				mBfIRBuilder->CreateStatementStart();
 
 				//TODO: Make this work for LLVM - we need a proper debug location

+ 6 - 6
IDEHelper/IDEHelper.vcxproj

@@ -160,7 +160,7 @@
       <WarningLevel>Level3</WarningLevel>
       <Optimization>Disabled</Optimization>
       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>../;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_11_0_0\llvm\include;..\extern\llvm_win64_11_0_0\include;..\extern\llvm-project_11_0_0\llvm\lib\Target;..\extern\llvm_win64_11_0_0\lib\Target\AArch64;..\extern\llvm_win64_11_0_0\lib\Target\X86;..\extern\llvm-project_11_0_0\llvm\tools\clang\include;..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>../;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_13_0_1\llvm\include;..\extern\llvm_win64_13_0_1\include;..\extern\llvm-project_13_0_1\llvm\lib\Target;..\extern\llvm_win64_13_0_1\lib\Target\AArch64;..\extern\llvm_win64_13_0_1\lib\Target\X86;..\extern\llvm-project_13_0_1\llvm\tools\clang\include;..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\include</AdditionalIncludeDirectories>
       <BufferSecurityCheck>false</BufferSecurityCheck>
       <AdditionalOptions>-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
       <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
@@ -171,8 +171,8 @@
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>DebugFull</GenerateDebugInformation>
       <OutputFile>$(SolutionDir)\IDE\dist\$(TargetName).dll</OutputFile>
-      <AdditionalDependencies>rpcrt4.lib;cabinet.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;libcurl_a.lib;wininet.lib;LLVMMCDisassembler.lib;LLVMSupport.lib;LLVMMC.lib;LLVMObject.lib;LLVMCore.lib;LLVMBitReader.lib;LLVMAsmParser.lib;LLVMMCParser.lib;LLVMCodeGen.lib;LLVMTarget.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMSelectionDAG.lib;LLVMProfileData.lib;LLVMAnalysis.lib;LLVMAsmPrinter.lib;LLVMBitWriter.lib;LLVMVectorize.lib;LLVMipo.lib;LLVMInstrumentation.lib;LLVMDebugInfoDWARF.lib;LLVMDebugInfoPDB.lib;LLVMDebugInfoCodeView.lib;LLVMGlobalISel.lib;LLVMBinaryFormat.lib;LLVMBitstreamReader.lib;LLVMLTO.lib;LLVMPasses.lib;LLVMLinker.lib;LLVMIRReader.lib;LLVMDemangle.lib;LLVMTransformUtils.lib;LLVMAggressiveInstCombine.lib;LLVMCFGuard.lib;LLVMTextAPI.lib;LLVMRemarks.lib;LLVMX86Info.lib;LLVMX86Desc.lib;LLVMX86CodeGen.lib;LLVMX86AsmParser.lib;LLVMX86Disassembler.lib;LLVMAArch64Info.lib;LLVMAArch64Utils.lib;LLVMAArch64Desc.lib;LLVMAArch64CodeGen.lib;LLVMAArch64AsmParser.lib;LLVMAArch64Disassembler.lib;LLVMARMInfo.lib;LLVMARMUtils.lib;LLVMARMDesc.lib;LLVMARMCodeGen.lib;LLVMARMAsmParser.lib;LLVMARMDisassembler.lib;LLVMWebAssemblyInfo.lib;LLVMWebAssemblyDesc.lib;LLVMWebAssemblyCodeGen.lib;LLVMWebAssemblyAsmParser.lib;LLVMWebAssemblyDisassembler.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>..\extern\llvm_win64_11_0_0\Debug\lib; ..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\lib;..\extern\curl\deps\lib;..\extern\jemalloc_win\x64\debug</AdditionalLibraryDirectories>
+      <AdditionalDependencies>rpcrt4.lib;cabinet.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;libcurl_a.lib;wininet.lib;LLVMMCDisassembler.lib;LLVMSupport.lib;LLVMMC.lib;LLVMObject.lib;LLVMCore.lib;LLVMBitReader.lib;LLVMAsmParser.lib;LLVMMCParser.lib;LLVMCodeGen.lib;LLVMTarget.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMSelectionDAG.lib;LLVMProfileData.lib;LLVMAnalysis.lib;LLVMAsmPrinter.lib;LLVMBitWriter.lib;LLVMVectorize.lib;LLVMipo.lib;LLVMInstrumentation.lib;LLVMDebugInfoDWARF.lib;LLVMDebugInfoPDB.lib;LLVMDebugInfoCodeView.lib;LLVMGlobalISel.lib;LLVMBinaryFormat.lib;LLVMBitstreamReader.lib;LLVMLTO.lib;LLVMPasses.lib;LLVMLinker.lib;LLVMIRReader.lib;LLVMDemangle.lib;LLVMTransformUtils.lib;LLVMAggressiveInstCombine.lib;LLVMCFGuard.lib;LLVMTextAPI.lib;LLVMRemarks.lib;LLVMX86Info.lib;LLVMX86Desc.lib;LLVMX86CodeGen.lib;LLVMX86AsmParser.lib;LLVMX86Disassembler.lib;LLVMAArch64Info.lib;LLVMAArch64Utils.lib;LLVMAArch64Desc.lib;LLVMAArch64CodeGen.lib;LLVMAArch64AsmParser.lib;LLVMAArch64Disassembler.lib;LLVMARMInfo.lib;LLVMARMUtils.lib;LLVMARMDesc.lib;LLVMARMCodeGen.lib;LLVMARMAsmParser.lib;LLVMARMDisassembler.lib;LLVMWebAssemblyInfo.lib;LLVMWebAssemblyDesc.lib;LLVMWebAssemblyCodeGen.lib;LLVMWebAssemblyAsmParser.lib;LLVMWebAssemblyDisassembler.lib;LLVMWebAssemblyUtils.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\extern\llvm_win64_13_0_1\Debug\lib; ..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\lib;..\extern\curl\deps\lib;..\extern\jemalloc_win\x64\debug</AdditionalLibraryDirectories>
       <RandomizedBaseAddress>false</RandomizedBaseAddress>
       <ImportLibrary>$(SolutionDir)\IDE\dist\$(TargetName).lib</ImportLibrary>
       <IgnoreSpecificDefaultLibraries>MSVCRT</IgnoreSpecificDefaultLibraries>
@@ -219,7 +219,7 @@
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <PreprocessorDefinitions>zBP_DISABLED;WIN32;NDEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>../;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_11_0_0\llvm\include;..\extern\llvm_win64_11_0_0\include;..\extern\llvm-project_11_0_0\llvm\lib\Target;..\extern\llvm_win64_11_0_0\lib\Target\X86;..\extern\llvm-project_11_0_0\llvm\tools\clang\include;..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\include</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>../;../BeefySysLib/platform/win;../BeefySysLib/third_party;..\extern\llvm-project_13_0_1\llvm\include;..\extern\llvm_win64_13_0_1\include;..\extern\llvm-project_13_0_1\llvm\lib\Target;..\extern\llvm_win64_13_0_1\lib\Target\X86;..\extern\llvm-project_13_0_1\llvm\tools\clang\include;..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\include</AdditionalIncludeDirectories>
       <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
       <BufferSecurityCheck>false</BufferSecurityCheck>
     </ClCompile>
@@ -229,8 +229,8 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OutputFile>$(SolutionDir)\IDE\dist\$(TargetName).dll</OutputFile>
-      <AdditionalLibraryDirectories>..\extern\llvm_win64_11_0_0\Release\lib; ..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\lib;..\extern\curl\deps\lib;..\extern\jemalloc_win\x64\release</AdditionalLibraryDirectories>
-      <AdditionalDependencies>rpcrt4.lib;cabinet.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;libcurl_a.lib;wininet.lib;LLVMMCDisassembler.lib;LLVMSupport.lib;LLVMMC.lib;LLVMObject.lib;LLVMCore.lib;LLVMBitReader.lib;LLVMAsmParser.lib;LLVMMCParser.lib;LLVMCodeGen.lib;LLVMTarget.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMSelectionDAG.lib;LLVMProfileData.lib;LLVMAnalysis.lib;LLVMAsmPrinter.lib;LLVMBitWriter.lib;LLVMVectorize.lib;LLVMipo.lib;LLVMInstrumentation.lib;LLVMDebugInfoDWARF.lib;LLVMDebugInfoPDB.lib;LLVMDebugInfoCodeView.lib;LLVMGlobalISel.lib;LLVMBinaryFormat.lib;LLVMBitstreamReader.lib;LLVMLTO.lib;LLVMPasses.lib;LLVMLinker.lib;LLVMIRReader.lib;LLVMDemangle.lib;LLVMTransformUtils.lib;LLVMAggressiveInstCombine.lib;LLVMCFGuard.lib;LLVMTextAPI.lib;LLVMRemarks.lib;LLVMX86Info.lib;LLVMX86Desc.lib;LLVMX86CodeGen.lib;LLVMX86AsmParser.lib;LLVMX86Disassembler.lib;LLVMAArch64Info.lib;LLVMAArch64Utils.lib;LLVMAArch64Desc.lib;LLVMAArch64CodeGen.lib;LLVMAArch64AsmParser.lib;LLVMAArch64Disassembler.lib;LLVMARMInfo.lib;LLVMARMUtils.lib;LLVMARMDesc.lib;LLVMARMCodeGen.lib;LLVMARMAsmParser.lib;LLVMARMDisassembler.lib;LLVMWebAssemblyInfo.lib;LLVMWebAssemblyDesc.lib;LLVMWebAssemblyCodeGen.lib;LLVMWebAssemblyAsmParser.lib;LLVMWebAssemblyDisassembler.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\extern\llvm_win64_13_0_1\Release\lib; ..\extern\curl\builds\libcurl-vc15-x64-release-static-zlib-static-ipv6-sspi-winssl\lib;..\extern\curl\deps\lib;..\extern\jemalloc_win\x64\release</AdditionalLibraryDirectories>
+      <AdditionalDependencies>rpcrt4.lib;cabinet.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;libcurl_a.lib;wininet.lib;LLVMMCDisassembler.lib;LLVMSupport.lib;LLVMMC.lib;LLVMObject.lib;LLVMCore.lib;LLVMBitReader.lib;LLVMAsmParser.lib;LLVMMCParser.lib;LLVMCodeGen.lib;LLVMTarget.lib;LLVMScalarOpts.lib;LLVMInstCombine.lib;LLVMSelectionDAG.lib;LLVMProfileData.lib;LLVMAnalysis.lib;LLVMAsmPrinter.lib;LLVMBitWriter.lib;LLVMVectorize.lib;LLVMipo.lib;LLVMInstrumentation.lib;LLVMDebugInfoDWARF.lib;LLVMDebugInfoPDB.lib;LLVMDebugInfoCodeView.lib;LLVMGlobalISel.lib;LLVMBinaryFormat.lib;LLVMBitstreamReader.lib;LLVMLTO.lib;LLVMPasses.lib;LLVMLinker.lib;LLVMIRReader.lib;LLVMDemangle.lib;LLVMTransformUtils.lib;LLVMAggressiveInstCombine.lib;LLVMCFGuard.lib;LLVMTextAPI.lib;LLVMRemarks.lib;LLVMX86Info.lib;LLVMX86Desc.lib;LLVMX86CodeGen.lib;LLVMX86AsmParser.lib;LLVMX86Disassembler.lib;LLVMAArch64Info.lib;LLVMAArch64Utils.lib;LLVMAArch64Desc.lib;LLVMAArch64CodeGen.lib;LLVMAArch64AsmParser.lib;LLVMAArch64Disassembler.lib;LLVMARMInfo.lib;LLVMARMUtils.lib;LLVMARMDesc.lib;LLVMARMCodeGen.lib;LLVMARMAsmParser.lib;LLVMARMDisassembler.lib;LLVMWebAssemblyInfo.lib;LLVMWebAssemblyDesc.lib;LLVMWebAssemblyCodeGen.lib;LLVMWebAssemblyAsmParser.lib;LLVMWebAssemblyDisassembler.lib;LLVMWebAssemblyUtils.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <RandomizedBaseAddress>false</RandomizedBaseAddress>
       <FullProgramDatabaseFile>true</FullProgramDatabaseFile>
       <ImportLibrary>$(SolutionDir)\IDE\dist\$(TargetName).lib</ImportLibrary>

+ 7 - 2
IDEHelper/X64.cpp

@@ -835,9 +835,14 @@ X64CPU::X64CPU() :
 		return;
 
 	mInstrInfo = TheX86_64Target.createMCInstrInfo();
+	
+	mMCContext = new MCContext(Triple(triple), mAsmInfo, mRegisterInfo, mSubtargetInfo);
+
+	mMCObjectFileInfo = TheX86_64Target.createMCObjectFileInfo(*mMCContext, false);
+	if (!mMCObjectFileInfo)
+		return;
 
-	mMCObjectFileInfo = new MCObjectFileInfo();
-	mMCContext = new MCContext(mAsmInfo, mRegisterInfo, mMCObjectFileInfo);
+	mMCContext->setObjectFileInfo(mMCObjectFileInfo);
 
 	MCDisassembler *disAsm = TheX86_64Target.createMCDisassembler(*mSubtargetInfo, *mMCContext);
 	mDisAsm = disAsm;

+ 7 - 2
IDEHelper/X86.cpp

@@ -443,8 +443,13 @@ X86CPU::X86CPU() :
 
 	mInstrInfo = TheX86_32Target.createMCInstrInfo();
 
-	mMCObjectFileInfo = new MCObjectFileInfo();
-	mMCContext = new MCContext(mAsmInfo, mRegisterInfo, mMCObjectFileInfo);
+	mMCContext = new MCContext(Triple(triple), mAsmInfo, mRegisterInfo, mSubtargetInfo);
+
+	mMCObjectFileInfo = TheX86_32Target.createMCObjectFileInfo(*mMCContext, false);
+	if (!mMCObjectFileInfo)
+		return;
+
+	mMCContext->setObjectFileInfo(mMCObjectFileInfo);
 
 	MCDisassembler *disAsm = TheX86_32Target.createMCDisassembler(*mSubtargetInfo, *mMCContext);
 	mDisAsm = disAsm;	

+ 1 - 1
bin/build.bat

@@ -14,7 +14,7 @@ PUSHD %~dp0..\
 mkdir stats
 :STATS_HAS
 
-@IF EXIST extern\llvm-project_11_0_0 GOTO LLVM_HAS
+@IF EXIST extern\llvm_win64_13_0_1\_Done.txt GOTO LLVM_HAS
 call extern\llvm_build.bat
 @IF %ERRORLEVEL% NEQ 0 GOTO HADERROR
 :LLVM_HAS

+ 1 - 1
bin/build.sh

@@ -20,7 +20,7 @@ if [ ! -f ../BeefySysLib/third_party/libffi/Makefile ]; then
 	cd $SCRIPTPATH
 fi
 
-if [ ! -d ../extern/llvm_linux_11_0_0/bin ]; then
+if [ ! -f ../extern/llvm_linux_13_0_1/_Done.txt ]; then
 	echo Building LLVM...
 	cd ../extern
 	./llvm_build.sh

+ 1 - 1
bin/build_wasm.bat

@@ -1,4 +1,4 @@
 mkdir ..\wasm
 cd ..\wasm
-call emcc ..\BeefRT\rt\Math.cpp ..\BeefRT\rt\Object.cpp ..\BeefRT\rt\Thread.cpp ..\BeefRT\rt\Internal.cpp ..\BeefySysLib\platform\wasm\WasmCommon.cpp ..\BeefySysLib\Common.cpp ..\BeefySysLib\util\String.cpp ..\BeefySysLib\util\UTF8.cpp ..\BeefySysLib\third_party\utf8proc\utf8proc.c -I..\ -I..\BeefySysLib -I..\BeefySysLib\platform\wasm -g -DBF_DISABLE_FFI -c -DBF_SMALL -s WASM=1 -s USE_PTHREADS=1
+call emcc ..\BeefRT\rt\Math.cpp ..\BeefRT\rt\Object.cpp ..\BeefRT\rt\Thread.cpp ..\BeefRT\rt\Internal.cpp ..\BeefySysLib\platform\wasm\WasmCommon.cpp ..\BeefySysLib\Common.cpp ..\BeefySysLib\util\String.cpp ..\BeefySysLib\util\UTF8.cpp ..\BeefySysLib\third_party\utf8proc\utf8proc.c -I..\ -I..\BeefySysLib -I..\BeefySysLib\platform\wasm -g -DBF_DISABLE_FFI -c -s WASM=1 -s USE_PTHREADS=1
 emar r BeefRT.a Common.o Internal.o Math.o Object.o String.o Thread.o UTF8.o utf8proc.o WasmCommon.o

+ 12 - 8
extern/llvm_build.bat

@@ -1,25 +1,29 @@
 PUSHD %~dp0
 
-@IF EXIST llvm-project_11_0_0 GOTO LLVM_HAS
-git clone --depth 1 --branch llvmorg-11.0.0 --config core.autocrlf=false https://github.com/llvm/llvm-project.git llvm-project_11_0_0
-@rem pushd llvm-project_11_0_0
+@IF EXIST llvm-project_13_0_1 GOTO LLVM_HAS
+git clone --depth 1 --branch llvmorg-13.0.1 --config core.autocrlf=false https://github.com/llvm/llvm-project.git llvm-project_13_0_1
+@IF %ERRORLEVEL% NEQ 0 GOTO HADERROR
 
 :LLVM_HAS
 
-@IF EXIST llvm_win64_11_0_0 GOTO HAS_CONFIG
-mkdir llvm_win64_11_0_0
-cd llvm_win64_11_0_0
-cmake ../llvm-project_11_0_0/llvm -G"Visual Studio 16 2019" -Ax64 -Thost=x64 -DLLVM_USE_CRT_DEBUG:STRING="MTd" -DLLVM_USE_CRT_RELEASE:STRING="MT" -DLLVM_TARGETS_TO_BUILD="AArch64;ARM;X86;WebAssembly"
+@IF EXIST llvm_win64_13_0_1 GOTO HAS_CONFIG
+mkdir llvm_win64_13_0_1
+cd llvm_win64_13_0_1
+cmake ../llvm-project_13_0_1/llvm -G"Visual Studio 16 2019" -Ax64 -Thost=x64 -DLLVM_USE_CRT_DEBUG:STRING="MTd" -DLLVM_USE_CRT_RELEASE:STRING="MT" -DLLVM_TARGETS_TO_BUILD="AArch64;ARM;X86;WebAssembly"
+@IF %ERRORLEVEL% NEQ 0 GOTO HADERROR
 @GOTO DOBUILD
 
 :HAS_CONFIG
-cd llvm_win64_11_0_0
+cd llvm_win64_13_0_1
 @GOTO DOBUILD
 
 :DOBUILD
 set /p LLVM_TARGETS=<../llvm_targets.txt
 cmake --build . -t %LLVM_TARGETS% --config Debug
+@IF %ERRORLEVEL% NEQ 0 GOTO HADERROR
 cmake --build . -t %LLVM_TARGETS% --config Release
+@IF %ERRORLEVEL% NEQ 0 GOTO HADERROR
+echo done > _Done.txt
 
 :SUCCESS
 @ECHO SUCCESS!

+ 20 - 19
extern/llvm_build.sh

@@ -1,34 +1,34 @@
 #!/bin/bash
 set -e
 
-if [ ! -d llvm-project_11_0_0 ]; then
-	if [ -f llvm-11.0.0.src.tar.xz ]; then # if user downloaded llvm-11.0.0.src.tar.xz then use it instead
-		tar -xf llvm-11.0.0.src.tar.xz
-		mkdir llvm-project_11_0_0
-		mv llvm-11.0.0.src llvm-project_11_0_0/llvm
-	else # shallow git clone llvm repo if llvm-11.0.0.src.tar.xz does not exists
-		git clone --depth 1 --branch llvmorg-11.0.0 https://github.com/llvm/llvm-project.git llvm-project_11_0_0
+if [ ! -d llvm-project_13_0_1 ]; then
+	if [ -f llvm-13.0.1.src.tar.xz ]; then # if user downloaded llvm-13.0.1.src.tar.xz then use it instead
+		tar -xf llvm-13.0.1.src.tar.xz
+		mkdir llvm-project_13_0_1
+		mv llvm-13.0.1.src llvm-project_13_0_1/llvm
+	else # shallow git clone llvm repo if llvm-13.0.1.src.tar.xz does not exists
+		git clone --depth 1 --branch llvmorg-13.0.1 https://github.com/llvm/llvm-project.git llvm-project_13_0_1
 	fi
-fi #end if llvm-project_11_0_0 exists
+fi #end if llvm-project_13_0_1 exists
 
-if [ ! -d llvm_linux_11_0_0 ]; then
-	mkdir llvm_linux_11_0_0
+if [ ! -d llvm_linux_13_0_1 ]; then
+	mkdir llvm_linux_13_0_1
 fi
 
-if [ ! -d llvm_linux_11_0_0/bin ]; then
-	cd llvm_linux_11_0_0
-	cmake ../llvm-project_11_0_0/llvm -DLLVM_TARGETS_TO_BUILD="AArch64;ARM;X86;WebAssembly" -DCMAKE_BUILD_TYPE:String="Debug"
+if [ ! -d llvm_linux_13_0_1/bin ]; then
+	cd llvm_linux_13_0_1
+	cmake ../llvm-project_13_0_1/llvm -DLLVM_TARGETS_TO_BUILD="AArch64;ARM;X86;WebAssembly" -DCMAKE_BUILD_TYPE:String="Debug"
 	cmake --build . -t $(cat ../llvm_targets.txt)
 	cd ..
 fi
 
-if [ ! -d llvm_linux_rel_11_0_0 ]; then
-	mkdir llvm_linux_rel_11_0_0
+if [ ! -d llvm_linux_rel_13_0_1 ]; then
+	mkdir llvm_linux_rel_13_0_1
 fi
 
-if [ ! -d llvm_linux_rel_11_0_0/bin ]; then
-	cd llvm_linux_rel_11_0_0
-	cmake ../llvm-project_11_0_0/llvm -DLLVM_TARGETS_TO_BUILD="AArch64;ARM;X86;WebAssembly" -DCMAKE_BUILD_TYPE:String="Release"
+if [ ! -d llvm_linux_rel_13_0_1/bin ]; then
+	cd llvm_linux_rel_13_0_1
+	cmake ../llvm-project_13_0_1/llvm -DLLVM_TARGETS_TO_BUILD="AArch64;ARM;X86;WebAssembly" -DCMAKE_BUILD_TYPE:String="Release"
 	cmake --build . -t $(cat ../llvm_targets.txt)
 	cd ..
 fi
@@ -37,5 +37,6 @@ if [ ! -d ../IDE/dist/llvm/bin ]; then
 	mkdir ../IDE/dist/llvm
 	mkdir ../IDE/dist/llvm/bin
 fi
-cp llvm_linux_rel_11_0_0/bin/llvm-ar ../IDE/dist/llvm/bin
+cp llvm_linux_rel_13_0_1/bin/llvm-ar ../IDE/dist/llvm/bin
 
+echo done > llvm_linux_13_0_1/_Done.txt

+ 1 - 1
extern/llvm_targets.txt

@@ -1 +1 @@
-llvm-ar llvm-config gtest_main LLVMX86Disassembler LLVMMCDisassembler LLVMSupport LLVMX86Info LLVMX86Desc LLVMMC LLVMObject LLVMCore LLVMBitReader LLVMAsmParser LLVMMCParser LLVMCodeGen LLVMTarget LLVMX86CodeGen LLVMScalarOpts LLVMInstCombine LLVMSelectionDAG LLVMProfileData LLVMTransformUtils LLVMAnalysis LLVMX86AsmParser LLVMAsmPrinter LLVMBitWriter LLVMVectorize LLVMipo LLVMInstrumentation LLVMDebugInfoDWARF LLVMDebugInfoPDB LLVMDebugInfoCodeView LLVMGlobalISel LLVMBinaryFormat LLVMCoverage LLVMDebugInfoGSYM LLVMDWARFLinker LLVMRuntimeDyld LLVMExecutionEngine LLVMMCJIT LLVMFuzzMutate LLVMInterpreter LLVMLineEditor LLVMExtensions LLVMObjCARCOpts LLVMCoroutines LLVMPasses LLVMLTO LLVMMCA LLVMMIRParser LLVMObjectYAML LLVMJITLink LLVMOrcError LLVMOrcJIT LLVMSymbolize LLVMTestingSupport LLVMWindowsManifest LLVMXRay LLVMARMCodeGen LLVMARMDisassembler LLVMAArch64CodeGen LLVMAArch64Disassembler LLVMWebAssemblyCodeGen LLVMWebAssemblyDisassembler
+llvm-ar llvm-config gtest_main LLVMX86Disassembler LLVMMCDisassembler LLVMSupport LLVMX86Info LLVMX86Desc LLVMMC LLVMObject LLVMCore LLVMBitReader LLVMAsmParser LLVMMCParser LLVMCodeGen LLVMTarget LLVMX86CodeGen LLVMScalarOpts LLVMInstCombine LLVMSelectionDAG LLVMProfileData LLVMTransformUtils LLVMAnalysis LLVMX86AsmParser LLVMAsmPrinter LLVMBitWriter LLVMVectorize LLVMipo LLVMInstrumentation LLVMDebugInfoDWARF LLVMDebugInfoPDB LLVMDebugInfoCodeView LLVMGlobalISel LLVMBinaryFormat LLVMCoverage LLVMDebugInfoGSYM LLVMDWARFLinker LLVMRuntimeDyld LLVMExecutionEngine LLVMMCJIT LLVMFuzzMutate LLVMInterpreter LLVMLineEditor LLVMExtensions LLVMObjCARCOpts LLVMCoroutines LLVMPasses LLVMLTO LLVMMCA LLVMMIRParser LLVMObjectYAML LLVMJITLink LLVMSymbolize LLVMTestingSupport LLVMWindowsManifest LLVMXRay LLVMARMCodeGen LLVMARMDisassembler LLVMAArch64CodeGen LLVMAArch64Disassembler LLVMWebAssemblyCodeGen LLVMWebAssemblyDisassembler LLVMWebAssemblyUtils LLVMFileCheck LLVMInterfaceStub LLVMFrontendOpenACC LLVMDWP LLVMOrcJIT