mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 11:38:21 +02:00
Merge pull request #1415 from disarray2077/llvm1301
Fixes to upgrade LLVM version to 13.0.1
This commit is contained in:
commit
2ab072ee20
23 changed files with 193 additions and 137 deletions
|
@ -106,7 +106,7 @@
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<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>
|
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||||
<SupportJustMyCode>false</SupportJustMyCode>
|
<SupportJustMyCode>false</SupportJustMyCode>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
@ -146,7 +146,7 @@
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
<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>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
|
@ -44,8 +44,8 @@ if (${APPLE})
|
||||||
../BeefySysLib/
|
../BeefySysLib/
|
||||||
../BeefySysLib/third_party
|
../BeefySysLib/third_party
|
||||||
../BeefySysLib/third_party/freetype/include
|
../BeefySysLib/third_party/freetype/include
|
||||||
../extern/llvm-project_11_0_0/llvm/include
|
../extern/llvm-project_13_0_1/llvm/include
|
||||||
../extern/llvm-project_11_0_0/llvm/lib/Target
|
../extern/llvm-project_13_0_1/llvm/lib/Target
|
||||||
../IDEHelper
|
../IDEHelper
|
||||||
|
|
||||||
../BeefySysLib/platform/osx
|
../BeefySysLib/platform/osx
|
||||||
|
@ -57,8 +57,8 @@ else()
|
||||||
../BeefySysLib/
|
../BeefySysLib/
|
||||||
../BeefySysLib/third_party
|
../BeefySysLib/third_party
|
||||||
../BeefySysLib/third_party/freetype/include
|
../BeefySysLib/third_party/freetype/include
|
||||||
../extern/llvm-project_11_0_0/llvm/include
|
../extern/llvm-project_13_0_1/llvm/include
|
||||||
../extern/llvm-project_11_0_0/llvm/lib/Target
|
../extern/llvm-project_13_0_1/llvm/lib/Target
|
||||||
../IDEHelper
|
../IDEHelper
|
||||||
|
|
||||||
../BeefySysLib/platform/linux
|
../BeefySysLib/platform/linux
|
||||||
|
@ -74,18 +74,18 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
-D_DEBUG
|
-D_DEBUG
|
||||||
)
|
)
|
||||||
include_directories(
|
include_directories(
|
||||||
../extern/llvm_linux_11_0_0/include
|
../extern/llvm_linux_13_0_1/include
|
||||||
../extern/llvm_linux_11_0_0/lib/Target/X86
|
../extern/llvm_linux_13_0_1/lib/Target/X86
|
||||||
)
|
)
|
||||||
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
|
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()
|
else()
|
||||||
include_directories(
|
include_directories(
|
||||||
../extern/llvm_linux_rel_11_0_0/include
|
../extern/llvm_linux_rel_13_0_1/include
|
||||||
../extern/llvm_linux_rel_11_0_0/lib/Target/X86
|
../extern/llvm_linux_rel_13_0_1/lib/Target/X86
|
||||||
)
|
)
|
||||||
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
|
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()
|
endif()
|
||||||
|
|
||||||
################### Dependencies ##################
|
################### Dependencies ##################
|
||||||
|
@ -134,7 +134,7 @@ add_executable(${PROJECT_NAME}
|
||||||
)
|
)
|
||||||
|
|
||||||
execute_process(
|
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_VARIABLE LLVM_SYSTEM_LIBS
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
)
|
)
|
||||||
|
|
|
@ -145,7 +145,7 @@
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>BF_DBG_32;WIN32;_DEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<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>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<AdditionalOptions>-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||||
<SupportJustMyCode>false</SupportJustMyCode>
|
<SupportJustMyCode>false</SupportJustMyCode>
|
||||||
|
@ -183,7 +183,7 @@
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>BF_DBG_32;WIN32;NDEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<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>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
|
@ -145,7 +145,7 @@
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>BF_DBG_64;WIN32;_DEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<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>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<AdditionalOptions>-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||||
<SupportJustMyCode>false</SupportJustMyCode>
|
<SupportJustMyCode>false</SupportJustMyCode>
|
||||||
|
@ -183,7 +183,7 @@
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>BF_DBG_64;WIN32;NDEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<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>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
|
@ -630,7 +630,7 @@ namespace IDE
|
||||||
compilerExePath.Append(@"/upstream/emscripten/emcc.bat");
|
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(" 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(" ", 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();
|
String workingDir = scope String();
|
||||||
if (!llvmDir.IsEmpty)
|
if (!llvmDir.IsEmpty)
|
||||||
|
@ -642,6 +642,8 @@ namespace IDE
|
||||||
workingDir.Append(gApp.mInstallDir);
|
workingDir.Append(gApp.mInstallDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
linkLine.Replace('\\', '/');
|
||||||
|
|
||||||
//linkLine.Append(" --no-entry --export-all");
|
//linkLine.Append(" --no-entry --export-all");
|
||||||
|
|
||||||
var runCmd = gApp.QueueRun(compilerExePath, linkLine, workingDir, .UTF8);
|
var runCmd = gApp.QueueRun(compilerExePath, linkLine, workingDir, .UTF8);
|
||||||
|
|
|
@ -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)
|
public ExecutionQueueCmd QueueRun(String fileName, String args, String workingDir, ArgsFileKind argsFileKind = .None)
|
||||||
{
|
{
|
||||||
|
@ -8012,7 +8012,7 @@ namespace IDE
|
||||||
executionQueueCmd.mFileName = new String(fileName);
|
executionQueueCmd.mFileName = new String(fileName);
|
||||||
executionQueueCmd.mArgs = new String(args);
|
executionQueueCmd.mArgs = new String(args);
|
||||||
executionQueueCmd.mWorkingDir = new String(workingDir);
|
executionQueueCmd.mWorkingDir = new String(workingDir);
|
||||||
if (args.Length > cArgFileThreshold)
|
if (fileName.Length + args.Length + 1 > cArgFileThreshold)
|
||||||
{
|
{
|
||||||
// Only use UTF16 if we absolutely need to
|
// Only use UTF16 if we absolutely need to
|
||||||
if ((argsFileKind == .UTF16WithBom) && (!args.HasMultibyteChars()))
|
if ((argsFileKind == .UTF16WithBom) && (!args.HasMultibyteChars()))
|
||||||
|
@ -9662,10 +9662,10 @@ namespace IDE
|
||||||
case .Linux:
|
case .Linux:
|
||||||
newString.AppendF("./{} -lpthread -ldl -Wl,-rpath -Wl,$ORIGIN", rtName);
|
newString.AppendF("./{} -lpthread -ldl -Wl,-rpath -Wl,$ORIGIN", rtName);
|
||||||
case .Wasm:
|
case .Wasm:
|
||||||
newString.Append(mInstallDir);
|
/*newString.Append(mInstallDir);
|
||||||
newString.Append("Beef", IDEApp.sRTVersionStr, "RT");
|
newString.Append("Beef", IDEApp.sRTVersionStr, "RT");
|
||||||
newString.Append((Workspace.PlatformType.GetPtrSizeByName(gApp.mPlatformName) == 4) ? "32" : "64");
|
newString.Append((Workspace.PlatformType.GetPtrSizeByName(gApp.mPlatformName) == 4) ? "32" : "64");
|
||||||
newString.Append("_wasm.lib");
|
newString.Append("_wasm.lib");*/
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2669,7 +2669,8 @@ void BeIRCodeGen::HandleNextCmd()
|
||||||
CMD_PARAM(int, line);
|
CMD_PARAM(int, line);
|
||||||
CMD_PARAM(int, column);
|
CMD_PARAM(int, column);
|
||||||
CMD_PARAM(BeMDNode*, diScope);
|
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);
|
mBeModule->SetCurrentDebugLocation(line - 1, column - 1, diScope, (BeDbgLoc*)diInlinedAt);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -49,8 +49,8 @@ if (${APPLE})
|
||||||
../BeefySysLib/
|
../BeefySysLib/
|
||||||
../BeefySysLib/third_party
|
../BeefySysLib/third_party
|
||||||
../BeefySysLib/third_party/freetype/include
|
../BeefySysLib/third_party/freetype/include
|
||||||
../extern/llvm-project_11_0_0/llvm/include
|
../extern/llvm-project_13_0_1/llvm/include
|
||||||
../extern/llvm-project_11_0_0/llvm/lib/Target
|
../extern/llvm-project_13_0_1/llvm/lib/Target
|
||||||
|
|
||||||
../BeefySysLib/platform/osx
|
../BeefySysLib/platform/osx
|
||||||
)
|
)
|
||||||
|
@ -61,8 +61,8 @@ else()
|
||||||
../BeefySysLib/
|
../BeefySysLib/
|
||||||
../BeefySysLib/third_party
|
../BeefySysLib/third_party
|
||||||
../BeefySysLib/third_party/freetype/include
|
../BeefySysLib/third_party/freetype/include
|
||||||
../extern/llvm-project_11_0_0/llvm/include
|
../extern/llvm-project_13_0_1/llvm/include
|
||||||
../extern/llvm-project_11_0_0/llvm/lib/Target
|
../extern/llvm-project_13_0_1/llvm/lib/Target
|
||||||
|
|
||||||
../BeefySysLib/platform/linux
|
../BeefySysLib/platform/linux
|
||||||
)
|
)
|
||||||
|
@ -77,24 +77,24 @@ if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
-D_DEBUG
|
-D_DEBUG
|
||||||
)
|
)
|
||||||
include_directories(
|
include_directories(
|
||||||
../extern/llvm_linux_11_0_0/include
|
../extern/llvm_linux_13_0_1/include
|
||||||
../extern/llvm_linux_11_0_0/lib/Target/X86
|
../extern/llvm_linux_13_0_1/lib/Target/X86
|
||||||
../extern/llvm_linux_11_0_0/lib/Target/AArch64
|
../extern/llvm_linux_13_0_1/lib/Target/AArch64
|
||||||
)
|
)
|
||||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_DEBUG}")
|
||||||
set(CMAKE_ARCHIVE_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(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()
|
else()
|
||||||
include_directories(
|
include_directories(
|
||||||
../extern/llvm_linux_rel_11_0_0/include
|
../extern/llvm_linux_rel_13_0_1/include
|
||||||
../extern/llvm_linux_rel_11_0_0/lib/Target/X86
|
../extern/llvm_linux_rel_13_0_1/lib/Target/X86
|
||||||
../extern/llvm_linux_rel_11_0_0/lib/Target/AArch64
|
../extern/llvm_linux_rel_13_0_1/lib/Target/AArch64
|
||||||
)
|
)
|
||||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${OUTPUT_RELEASE}")
|
||||||
set(CMAKE_ARCHIVE_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(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()
|
endif()
|
||||||
|
|
||||||
################### Dependencies ##################
|
################### Dependencies ##################
|
||||||
|
@ -192,15 +192,16 @@ add_library(${PROJECT_NAME} SHARED
|
||||||
)
|
)
|
||||||
|
|
||||||
execute_process(
|
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_VARIABLE LLVM_SYSTEM_LIBS
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
)
|
)
|
||||||
|
|
||||||
set(TARGET_LIBS_OS "${LLVM_SYSTEM_LIBS}")
|
set(TARGET_LIBS_OS "${LLVM_SYSTEM_LIBS}")
|
||||||
|
|
||||||
if (HAVE_BACKTRACE_HEADERS)
|
if (HAVE_BACKTRACE_HEADERS)
|
||||||
string(APPEND TARGET_LIBS_OS " -lbacktrace")
|
string(APPEND TARGET_LIBS_OS " -lbacktrace")
|
||||||
|
string(STRIP ${TARGET_LIBS_OS} TARGET_LIBS_OS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
list(APPEND LLVM_LIBS
|
list(APPEND LLVM_LIBS
|
||||||
|
@ -217,7 +218,7 @@ list(APPEND LLVM_LIBS
|
||||||
${LLVM_LIB}/libLLVMInstCombine.a
|
${LLVM_LIB}/libLLVMInstCombine.a
|
||||||
${LLVM_LIB}/libLLVMSelectionDAG.a
|
${LLVM_LIB}/libLLVMSelectionDAG.a
|
||||||
${LLVM_LIB}/libLLVMProfileData.a
|
${LLVM_LIB}/libLLVMProfileData.a
|
||||||
${LLVM_LIB}/libLLVMTransformUtils.a
|
|
||||||
${LLVM_LIB}/libLLVMAnalysis.a
|
${LLVM_LIB}/libLLVMAnalysis.a
|
||||||
${LLVM_LIB}/libLLVMAsmPrinter.a
|
${LLVM_LIB}/libLLVMAsmPrinter.a
|
||||||
${LLVM_LIB}/libLLVMBitWriter.a
|
${LLVM_LIB}/libLLVMBitWriter.a
|
||||||
|
@ -226,8 +227,9 @@ list(APPEND LLVM_LIBS
|
||||||
${LLVM_LIB}/libLLVMInstrumentation.a
|
${LLVM_LIB}/libLLVMInstrumentation.a
|
||||||
${LLVM_LIB}/libLLVMDebugInfoDWARF.a
|
${LLVM_LIB}/libLLVMDebugInfoDWARF.a
|
||||||
${LLVM_LIB}/libLLVMDebugInfoPDB.a
|
${LLVM_LIB}/libLLVMDebugInfoPDB.a
|
||||||
${LLVM_LIB}/libLLVMDebugInfoCodeView.a
|
${LLVM_LIB}/libLLVMDebugInfoCodeView.a
|
||||||
${LLVM_LIB}/libLLVMGlobalISel.a
|
${LLVM_LIB}/libLLVMGlobalISel.a
|
||||||
|
${LLVM_LIB}/libLLVMTransformUtils.a
|
||||||
${LLVM_LIB}/libLLVMBinaryFormat.a
|
${LLVM_LIB}/libLLVMBinaryFormat.a
|
||||||
${LLVM_LIB}/libLLVMIRReader.a
|
${LLVM_LIB}/libLLVMIRReader.a
|
||||||
${LLVM_LIB}/libLLVMLinker.a
|
${LLVM_LIB}/libLLVMLinker.a
|
||||||
|
@ -263,6 +265,7 @@ list(APPEND LLVM_LIBS
|
||||||
${LLVM_LIB}/libLLVMWebAssemblyCodeGen.a
|
${LLVM_LIB}/libLLVMWebAssemblyCodeGen.a
|
||||||
${LLVM_LIB}/libLLVMWebAssemblyAsmParser.a
|
${LLVM_LIB}/libLLVMWebAssemblyAsmParser.a
|
||||||
${LLVM_LIB}/libLLVMWebAssemblyDisassembler.a
|
${LLVM_LIB}/libLLVMWebAssemblyDisassembler.a
|
||||||
|
${LLVM_LIB}/libLLVMWebAssemblyUtils.a
|
||||||
|
|
||||||
${LLVM_LIB}/libLLVMSupport.a
|
${LLVM_LIB}/libLLVMSupport.a
|
||||||
${LLVM_LIB}/libLLVMDemangle.a)
|
${LLVM_LIB}/libLLVMDemangle.a)
|
||||||
|
|
|
@ -1794,7 +1794,7 @@ void BfCompiler::CreateVData(BfVDataModule* bfModule)
|
||||||
auto res = bfModule->mBfIRBuilder->CreateCall(mainFunc, args);
|
auto res = bfModule->mBfIRBuilder->CreateCall(mainFunc, args);
|
||||||
args.clear();
|
args.clear();
|
||||||
bfModule->mBfIRBuilder->CreateCall(shutdownFunc, args);
|
bfModule->mBfIRBuilder->CreateCall(shutdownFunc, args);
|
||||||
if (mainHasArgs)
|
if (mainHasRet)
|
||||||
bfModule->mBfIRBuilder->CreateRet(res);
|
bfModule->mBfIRBuilder->CreateRet(res);
|
||||||
else
|
else
|
||||||
bfModule->mBfIRBuilder->CreateRetVoid();
|
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)))
|
((targetType == BfTargetType_BeefConsoleApplication) || (targetType == BfTargetType_BeefTest)))
|
||||||
{
|
{
|
||||||
SmallVector<BfIRType, 2> paramTypes;
|
SmallVector<BfIRType, 2> paramTypes;
|
||||||
|
@ -1827,11 +1827,8 @@ void BfCompiler::CreateVData(BfVDataModule* bfModule)
|
||||||
bfModule->SetupIRMethod(NULL, setCmdLineFunc, false);
|
bfModule->SetupIRMethod(NULL, setCmdLineFunc, false);
|
||||||
|
|
||||||
SmallVector<BfIRValue, 2> args;
|
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);
|
bfModule->mBfIRBuilder->CreateCall(setCmdLineFunc, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5396,6 +5396,7 @@ void BfIRBuilder::UpdateDebugLocation(BfIRValue inst)
|
||||||
|
|
||||||
void BfIRBuilder::SetCurrentDebugLocation(int line, int column, BfIRMDNode diScope, BfIRMDNode diInlinedAt)
|
void BfIRBuilder::SetCurrentDebugLocation(int line, int column, BfIRMDNode diScope, BfIRMDNode diInlinedAt)
|
||||||
{
|
{
|
||||||
|
BF_ASSERT(diScope);
|
||||||
if (mDbgVerifyCodeGen && gDebugDbgLoc)
|
if (mDbgVerifyCodeGen && gDebugDbgLoc)
|
||||||
{
|
{
|
||||||
OutputDebugStrF("SetCurrentDebugLocation %d %d:%d\n", diScope.mId, line, column);
|
OutputDebugStrF("SetCurrentDebugLocation %d %d:%d\n", diScope.mId, line, column);
|
||||||
|
|
|
@ -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)
|
BfTypeCode BfIRCodeGen::GetTypeCode(llvm::Type* type, bool isSigned)
|
||||||
{
|
{
|
||||||
if (type->isIntegerTy())
|
if (type->isIntegerTy())
|
||||||
|
@ -674,7 +680,9 @@ void BfIRCodeGen::SetResult(int id, llvm::MDNode* md)
|
||||||
|
|
||||||
void BfIRCodeGen::ProcessBfIRData(const BfSizedArray<uint8>& buffer)
|
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)
|
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);
|
BF_ASSERT(mStream == NULL);
|
||||||
mStream = new ChunkedDataBuffer();
|
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), idx0),
|
||||||
llvm::ConstantInt::get(llvm::Type::getInt32Ty(*mLLVMContext), idx1)};
|
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;
|
return;
|
||||||
}
|
}
|
||||||
else if (constType == BfConstType_ExtractValue)
|
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));
|
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)
|
if (vecType->getElementType() == elemType)
|
||||||
return mIRBuilder->CreateAlignedLoad(value, llvm::MaybeAlign(1));
|
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());
|
headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo());
|
||||||
llvm::Value* ptrVal = headVal;
|
llvm::Value* ptrVal = headVal;
|
||||||
if (curOffset != 0)
|
if (curOffset != 0)
|
||||||
ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, headVal, curOffset / 8);
|
ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(intTy, headVal, curOffset / 8);
|
||||||
mIRBuilder->CreateStore(constVal, ptrVal, isVolatile);
|
mIRBuilder->CreateStore(constVal, ptrVal, isVolatile);
|
||||||
|
|
||||||
curOffset += 8;
|
curOffset += 8;
|
||||||
|
@ -1586,7 +1594,7 @@ void BfIRCodeGen::CreateMemSet(llvm::Value* addr, llvm::Value* val, llvm::Value*
|
||||||
headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo());
|
headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo());
|
||||||
llvm::Value* ptrVal = headVal;
|
llvm::Value* ptrVal = headVal;
|
||||||
if (curOffset != 0)
|
if (curOffset != 0)
|
||||||
ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, headVal, curOffset / 4);
|
ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(intTy, headVal, curOffset / 4);
|
||||||
mIRBuilder->CreateStore(constVal, ptrVal, isVolatile);
|
mIRBuilder->CreateStore(constVal, ptrVal, isVolatile);
|
||||||
|
|
||||||
curOffset += 4;
|
curOffset += 4;
|
||||||
|
@ -1605,7 +1613,7 @@ void BfIRCodeGen::CreateMemSet(llvm::Value* addr, llvm::Value* val, llvm::Value*
|
||||||
headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo());
|
headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo());
|
||||||
llvm::Value* ptrVal = headVal;
|
llvm::Value* ptrVal = headVal;
|
||||||
if (curOffset != 0)
|
if (curOffset != 0)
|
||||||
ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, headVal, curOffset / 2);
|
ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(intTy, headVal, curOffset / 2);
|
||||||
mIRBuilder->CreateStore(constVal, ptrVal, isVolatile);
|
mIRBuilder->CreateStore(constVal, ptrVal, isVolatile);
|
||||||
|
|
||||||
curOffset += 2;
|
curOffset += 2;
|
||||||
|
@ -1624,7 +1632,7 @@ void BfIRCodeGen::CreateMemSet(llvm::Value* addr, llvm::Value* val, llvm::Value*
|
||||||
headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo());
|
headVal = mIRBuilder->CreateBitCast(addr, intTy->getPointerTo());
|
||||||
llvm::Value* ptrVal = headVal;
|
llvm::Value* ptrVal = headVal;
|
||||||
if (curOffset != 0)
|
if (curOffset != 0)
|
||||||
ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(NULL, headVal, curOffset / 1);
|
ptrVal = mIRBuilder->CreateConstInBoundsGEP1_32(intTy, headVal, curOffset / 1);
|
||||||
mIRBuilder->CreateStore(constVal, ptrVal, isVolatile);
|
mIRBuilder->CreateStore(constVal, ptrVal, isVolatile);
|
||||||
|
|
||||||
curOffset += 1;
|
curOffset += 1;
|
||||||
|
@ -1670,7 +1678,9 @@ void BfIRCodeGen::InitTarget()
|
||||||
else if (mCodeGenOptions.mOptLevel == BfOptLevel_O3)
|
else if (mCodeGenOptions.mOptLevel == BfOptLevel_O3)
|
||||||
optLvl = llvm::CodeGenOpt::Aggressive;
|
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";
|
featuresStr = "+sse";
|
||||||
else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_SSE2)
|
else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_SSE2)
|
||||||
featuresStr = "+sse2";
|
featuresStr = "+sse2";
|
||||||
|
@ -1683,7 +1693,7 @@ void BfIRCodeGen::InitTarget()
|
||||||
else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_AVX)
|
else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_AVX)
|
||||||
featuresStr = "+avx";
|
featuresStr = "+avx";
|
||||||
else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_AVX2)
|
else if (mCodeGenOptions.mSIMDSetting == BfSIMDSetting_AVX2)
|
||||||
featuresStr = "+avx2";
|
featuresStr = "+avx2";
|
||||||
|
|
||||||
llvm::Optional<llvm::Reloc::Model> relocModel;
|
llvm::Optional<llvm::Reloc::Model> relocModel;
|
||||||
llvm::CodeModel::Model cmModel = llvm::CodeModel::Small;
|
llvm::CodeModel::Model cmModel = llvm::CodeModel::Small;
|
||||||
|
@ -1787,7 +1797,7 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
{
|
{
|
||||||
CMD_PARAM(String, fileName);
|
CMD_PARAM(String, fileName);
|
||||||
std::error_code ec;
|
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)
|
if (ec)
|
||||||
{
|
{
|
||||||
Fail("Failed writing IR '" + fileName + "': " + ec.message());
|
Fail("Failed writing IR '" + fileName + "': " + ec.message());
|
||||||
|
@ -2311,12 +2321,12 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
|
|
||||||
if (auto alignedPtr = GetAlignedPtr(val))
|
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()));
|
SetResult(curId, mIRBuilder->CreateBitCast(gepResult, val->getType()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
SetResult(curId, mIRBuilder->CreateConstInBoundsGEP1_32(NULL, val, idx0));
|
SetResult(curId, mIRBuilder->CreateConstInBoundsGEP1_32(val->getType()->getPointerElementType(), val, idx0));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfIRCmd_InboundsGEP2_32:
|
case BfIRCmd_InboundsGEP2_32:
|
||||||
|
@ -2324,7 +2334,7 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
CMD_PARAM(llvm::Value*, val);
|
CMD_PARAM(llvm::Value*, val);
|
||||||
CMD_PARAM(int, idx0);
|
CMD_PARAM(int, idx0);
|
||||||
CMD_PARAM(int, idx1);
|
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;
|
break;
|
||||||
case BfIRCmd_InBoundsGEP1:
|
case BfIRCmd_InBoundsGEP1:
|
||||||
|
@ -2338,7 +2348,7 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
SetResult(curId, mIRBuilder->CreateBitCast(gepResult, val->getType()));
|
SetResult(curId, mIRBuilder->CreateBitCast(gepResult, val->getType()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
FixIndexer(idx0);
|
||||||
SetResult(curId, mIRBuilder->CreateInBoundsGEP(val, idx0));
|
SetResult(curId, mIRBuilder->CreateInBoundsGEP(val, idx0));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -2347,6 +2357,8 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
CMD_PARAM(llvm::Value*, val);
|
CMD_PARAM(llvm::Value*, val);
|
||||||
CMD_PARAM(llvm::Value*, idx0);
|
CMD_PARAM(llvm::Value*, idx0);
|
||||||
CMD_PARAM(llvm::Value*, idx1);
|
CMD_PARAM(llvm::Value*, idx1);
|
||||||
|
FixIndexer(idx0);
|
||||||
|
FixIndexer(idx1);
|
||||||
llvm::Value* indices[2] = { idx0, idx1 };
|
llvm::Value* indices[2] = { idx0, idx1 };
|
||||||
SetResult(curId, FixGEP(val, mIRBuilder->CreateInBoundsGEP(val, llvm::makeArrayRef(indices))));
|
SetResult(curId, FixGEP(val, mIRBuilder->CreateInBoundsGEP(val, llvm::makeArrayRef(indices))));
|
||||||
}
|
}
|
||||||
|
@ -3112,7 +3124,7 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
|
|
||||||
if (result != NULL)
|
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()))
|
if (auto intType = llvm::dyn_cast<llvm::IntegerType>(vecType->getElementType()))
|
||||||
{
|
{
|
||||||
|
@ -3180,7 +3192,7 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
|
|
||||||
if (result != NULL)
|
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()))
|
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)
|
if (intrinsicData->mIntrinsic == BfIRIntrinsic_AtomicCmpStore_Weak)
|
||||||
inst->setWeak(true);
|
inst->setWeak(true);
|
||||||
if ((memoryKind & BfIRAtomicOrdering_Volatile) != 0)
|
if ((memoryKind & BfIRAtomicOrdering_Volatile) != 0)
|
||||||
|
@ -3547,7 +3559,7 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
break;
|
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)
|
if ((memoryKind & BfIRAtomicOrdering_Volatile) != 0)
|
||||||
atomicRMW->setVolatile(true);
|
atomicRMW->setVolatile(true);
|
||||||
llvm::Value* result = atomicRMW;
|
llvm::Value* result = atomicRMW;
|
||||||
|
@ -3776,7 +3788,17 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
CMD_PARAM(int, argIdx);
|
CMD_PARAM(int, argIdx);
|
||||||
BfIRAttribute attribute = (BfIRAttribute)mStream->Read();
|
BfIRAttribute attribute = (BfIRAttribute)mStream->Read();
|
||||||
BF_ASSERT(llvm::isa<llvm::CallInst>(callInst));
|
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;
|
break;
|
||||||
case BfIRCmd_Call_AddAttribute1:
|
case BfIRCmd_Call_AddAttribute1:
|
||||||
|
@ -3794,12 +3816,11 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
}
|
}
|
||||||
else if (attribute == BfIRAttribute_ByVal)
|
else if (attribute == BfIRAttribute_ByVal)
|
||||||
{
|
{
|
||||||
llvm::AttrBuilder B;
|
auto funcType = ((llvm::CallInst*)callInst)->getFunctionType();
|
||||||
B.addAttribute(llvm::Attribute::ByVal);
|
llvm::Attribute byValAttr = llvm::Attribute::getWithByValType(*mLLVMContext, funcType->getFunctionParamType(argIdx - 1)->getPointerElementType());
|
||||||
B.addAlignmentAttr(arg);
|
llvm::Attribute alignAttr = llvm::Attribute::getWithAlignment(*mLLVMContext, llvm::Align(arg));
|
||||||
auto attrList = ((llvm::CallInst*)callInst)->getAttributes();
|
((llvm::CallInst*)callInst)->addAttribute(argIdx, byValAttr);
|
||||||
attrList = attrList.addAttributes(*mLLVMContext, argIdx, B);
|
((llvm::CallInst*)callInst)->addAttribute(argIdx, alignAttr);
|
||||||
((llvm::CallInst*)callInst)->setAttributes(attrList);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3854,7 +3875,13 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
auto attr = LLVMMapAttribute(attribute);
|
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);
|
func->addAttribute(argIdx, attr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3871,12 +3898,11 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
}
|
}
|
||||||
else if (attribute == BfIRAttribute_ByVal)
|
else if (attribute == BfIRAttribute_ByVal)
|
||||||
{
|
{
|
||||||
llvm::AttrBuilder B;
|
auto funcType = func->getFunctionType();
|
||||||
B.addAttribute(llvm::Attribute::ByVal);
|
llvm::Attribute byValAttr = llvm::Attribute::getWithByValType(*mLLVMContext, funcType->getFunctionParamType(argIdx - 1)->getPointerElementType());
|
||||||
B.addAlignmentAttr(arg);
|
llvm::Attribute alignAttr = llvm::Attribute::getWithAlignment(*mLLVMContext, llvm::Align(arg));
|
||||||
auto attrList = ((llvm::Function*)func)->getAttributes();
|
func->addAttribute(argIdx, byValAttr);
|
||||||
attrList = attrList.addAttributes(*mLLVMContext, argIdx, B);
|
func->addAttribute(argIdx, alignAttr);
|
||||||
((llvm::Function*)func)->setAttributes(attrList);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -3966,7 +3992,7 @@ void BfIRCodeGen::HandleNextCmd()
|
||||||
CMD_PARAM(int, column);
|
CMD_PARAM(int, column);
|
||||||
CMD_PARAM(llvm::MDNode*, diScope);
|
CMD_PARAM(llvm::MDNode*, diScope);
|
||||||
CMD_PARAM(llvm::MDNode*, diInlinedAt);
|
CMD_PARAM(llvm::MDNode*, diInlinedAt);
|
||||||
mDebugLoc = llvm::DebugLoc::get(line, column, diScope, diInlinedAt);
|
mDebugLoc = llvm::DILocation::get(*mLLVMContext, line, column, diScope, diInlinedAt);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case BfIRCmd_Nop:
|
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.
|
// convert to more optimized IR using more aggressive simplify CFG options.
|
||||||
// The extra sinking transform can create larger basic blocks, so do this
|
// The extra sinking transform can create larger basic blocks, so do this
|
||||||
// before SLP vectorization.
|
// 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) {
|
if (options.mRunSLPAfterLoopVectorization && options.mSLPVectorize) {
|
||||||
MPM.add(llvm::createSLPVectorizerPass()); // Vectorize parallel scalar chains.
|
MPM.add(llvm::createSLPVectorizerPass()); // Vectorize parallel scalar chains.
|
||||||
|
@ -5343,7 +5369,7 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName)
|
||||||
}
|
}
|
||||||
|
|
||||||
std::error_code EC;
|
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);
|
llvm::raw_fd_ostream out(outFileName.c_str(), EC, OpenFlags);
|
||||||
|
|
||||||
|
@ -5368,7 +5394,7 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName)
|
||||||
if ((enableLTO) || (mCodeGenOptions.mWriteBitcode))
|
if ((enableLTO) || (mCodeGenOptions.mWriteBitcode))
|
||||||
{
|
{
|
||||||
std::error_code ec;
|
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())
|
if (outStream->has_error())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -5438,7 +5464,7 @@ bool BfIRCodeGen::WriteObjectFile(const StringImpl& outFileName)
|
||||||
bool BfIRCodeGen::WriteIR(const StringImpl& outFileName, StringImpl& error)
|
bool BfIRCodeGen::WriteIR(const StringImpl& outFileName, StringImpl& error)
|
||||||
{
|
{
|
||||||
std::error_code ec;
|
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)
|
if (ec)
|
||||||
{
|
{
|
||||||
error = ec.message();
|
error = ec.message();
|
||||||
|
|
|
@ -125,6 +125,7 @@ public:
|
||||||
public:
|
public:
|
||||||
void InitTarget();
|
void InitTarget();
|
||||||
void FixValues(llvm::StructType* structType, llvm::SmallVector<llvm::Value*, 8>& values);
|
void FixValues(llvm::StructType* structType, llvm::SmallVector<llvm::Value*, 8>& values);
|
||||||
|
void FixIndexer(llvm::Value*& val);
|
||||||
BfTypeCode GetTypeCode(llvm::Type* type, bool isSigned);
|
BfTypeCode GetTypeCode(llvm::Type* type, bool isSigned);
|
||||||
llvm::Type* GetLLVMType(BfTypeCode typeCode, bool& isSigned);
|
llvm::Type* GetLLVMType(BfTypeCode typeCode, bool& isSigned);
|
||||||
BfIRTypeEntry& GetTypeEntry(int typeId);
|
BfIRTypeEntry& GetTypeEntry(int typeId);
|
||||||
|
|
|
@ -2614,9 +2614,13 @@ void BfModule::UpdateSrcPos(BfAstNode* astNode, BfSrcPosFlags flags, int debugLo
|
||||||
if (mCurMethodState->mCrossingMixin)
|
if (mCurMethodState->mCrossingMixin)
|
||||||
inlineAt = BfIRMDNode();
|
inlineAt = BfIRMDNode();
|
||||||
|
|
||||||
if ((!useDIScope) && (mIsComptimeModule))
|
if ((!useDIScope) && (mIsComptimeModule))
|
||||||
useDIScope = wantDIFile;
|
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)
|
if ((flags & BfSrcPosFlag_Expression) == 0)
|
||||||
mBfIRBuilder->CreateStatementStart();
|
mBfIRBuilder->CreateStatementStart();
|
||||||
}
|
}
|
||||||
|
@ -2639,15 +2643,19 @@ void BfModule::SetIllegalSrcPos(BfSrcPosFlags flags)
|
||||||
{
|
{
|
||||||
if ((mBfIRBuilder->DbgHasInfo()) && (mCurMethodState != NULL))
|
if ((mBfIRBuilder->DbgHasInfo()) && (mCurMethodState != NULL))
|
||||||
{
|
{
|
||||||
if ((mCurMethodState->mCurScope->mDIInlinedAt) && (mCompiler->mOptions.IsCodeView()))
|
auto curScope = mCurMethodState->mCurScope->mDIScope;
|
||||||
|
if (curScope)
|
||||||
{
|
{
|
||||||
// Currently, CodeView does not record column positions so we can't use an illegal column position as an "invalid" marker
|
if ((mCurMethodState->mCurScope->mDIInlinedAt) && (mCompiler->mOptions.IsCodeView()))
|
||||||
mBfIRBuilder->SetCurrentDebugLocation(0, 0, mCurMethodState->mCurScope->mDIScope, mCurMethodState->mCurScope->mDIInlinedAt);
|
{
|
||||||
}
|
// Currently, CodeView does not record column positions so we can't use an illegal column position as an "invalid" marker
|
||||||
else
|
mBfIRBuilder->SetCurrentDebugLocation(0, 0, curScope, mCurMethodState->mCurScope->mDIInlinedAt);
|
||||||
{
|
}
|
||||||
// Set to whatever it previously was but at column zero, which we will know to be illegal
|
else
|
||||||
mBfIRBuilder->SetCurrentDebugLocation(mCurFilePosition.mCurLine + 1, 0, mCurMethodState->mCurScope->mDIScope, mCurMethodState->mCurScope->mDIInlinedAt);
|
{
|
||||||
|
// 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)
|
if ((flags & BfSrcPosFlag_Expression) == 0)
|
||||||
|
|
|
@ -148,7 +148,8 @@ bool BfModule::AddDeferredCallEntry(BfDeferredCallEntry* deferredCallEntry, BfSc
|
||||||
mBfIRBuilder->SetInsertPointAtStart(mCurMethodState->mIRInitBlock);
|
mBfIRBuilder->SetInsertPointAtStart(mCurMethodState->mIRInitBlock);
|
||||||
|
|
||||||
auto scopeHead = &mCurMethodState->mHeadScope;
|
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())
|
if (WantsLifetimes())
|
||||||
mBfIRBuilder->CreateLifetimeStart(listEntry->mDynCallTail);
|
mBfIRBuilder->CreateLifetimeStart(listEntry->mDynCallTail);
|
||||||
|
@ -164,7 +165,8 @@ bool BfModule::AddDeferredCallEntry(BfDeferredCallEntry* deferredCallEntry, BfSc
|
||||||
|
|
||||||
mBfIRBuilder->SetInsertPoint(mCurMethodState->mIRInitBlock);
|
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();
|
mBfIRBuilder->CreateStatementStart();
|
||||||
|
|
||||||
//TODO: Make this work for LLVM - we need a proper debug location
|
//TODO: Make this work for LLVM - we need a proper debug location
|
||||||
|
|
|
@ -160,7 +160,7 @@
|
||||||
<WarningLevel>Level3</WarningLevel>
|
<WarningLevel>Level3</WarningLevel>
|
||||||
<Optimization>Disabled</Optimization>
|
<Optimization>Disabled</Optimization>
|
||||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<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>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
<AdditionalOptions>-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
<AdditionalOptions>-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)</AdditionalOptions>
|
||||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
@ -171,8 +171,8 @@
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
|
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
|
||||||
<OutputFile>$(SolutionDir)\IDE\dist\$(TargetName).dll</OutputFile>
|
<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>
|
<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_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>
|
<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>
|
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||||
<ImportLibrary>$(SolutionDir)\IDE\dist\$(TargetName).lib</ImportLibrary>
|
<ImportLibrary>$(SolutionDir)\IDE\dist\$(TargetName).lib</ImportLibrary>
|
||||||
<IgnoreSpecificDefaultLibraries>MSVCRT</IgnoreSpecificDefaultLibraries>
|
<IgnoreSpecificDefaultLibraries>MSVCRT</IgnoreSpecificDefaultLibraries>
|
||||||
|
@ -219,7 +219,7 @@
|
||||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
<PreprocessorDefinitions>zBP_DISABLED;WIN32;NDEBUG;_WINDOWS;_USRDLL;IDEHELPER_EXPORTS;BFSYSLIB_DYNAMIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<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>
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
@ -229,8 +229,8 @@
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
<OutputFile>$(SolutionDir)\IDE\dist\$(TargetName).dll</OutputFile>
|
<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>
|
<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;%(AdditionalDependencies)</AdditionalDependencies>
|
<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>
|
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||||
<FullProgramDatabaseFile>true</FullProgramDatabaseFile>
|
<FullProgramDatabaseFile>true</FullProgramDatabaseFile>
|
||||||
<ImportLibrary>$(SolutionDir)\IDE\dist\$(TargetName).lib</ImportLibrary>
|
<ImportLibrary>$(SolutionDir)\IDE\dist\$(TargetName).lib</ImportLibrary>
|
||||||
|
|
|
@ -835,9 +835,14 @@ X64CPU::X64CPU() :
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mInstrInfo = TheX86_64Target.createMCInstrInfo();
|
mInstrInfo = TheX86_64Target.createMCInstrInfo();
|
||||||
|
|
||||||
|
mMCContext = new MCContext(Triple(triple), mAsmInfo, mRegisterInfo, mSubtargetInfo);
|
||||||
|
|
||||||
mMCObjectFileInfo = new MCObjectFileInfo();
|
mMCObjectFileInfo = TheX86_64Target.createMCObjectFileInfo(*mMCContext, false);
|
||||||
mMCContext = new MCContext(mAsmInfo, mRegisterInfo, mMCObjectFileInfo);
|
if (!mMCObjectFileInfo)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mMCContext->setObjectFileInfo(mMCObjectFileInfo);
|
||||||
|
|
||||||
MCDisassembler *disAsm = TheX86_64Target.createMCDisassembler(*mSubtargetInfo, *mMCContext);
|
MCDisassembler *disAsm = TheX86_64Target.createMCDisassembler(*mSubtargetInfo, *mMCContext);
|
||||||
mDisAsm = disAsm;
|
mDisAsm = disAsm;
|
||||||
|
|
|
@ -443,8 +443,13 @@ X86CPU::X86CPU() :
|
||||||
|
|
||||||
mInstrInfo = TheX86_32Target.createMCInstrInfo();
|
mInstrInfo = TheX86_32Target.createMCInstrInfo();
|
||||||
|
|
||||||
mMCObjectFileInfo = new MCObjectFileInfo();
|
mMCContext = new MCContext(Triple(triple), mAsmInfo, mRegisterInfo, mSubtargetInfo);
|
||||||
mMCContext = new MCContext(mAsmInfo, mRegisterInfo, mMCObjectFileInfo);
|
|
||||||
|
mMCObjectFileInfo = TheX86_32Target.createMCObjectFileInfo(*mMCContext, false);
|
||||||
|
if (!mMCObjectFileInfo)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mMCContext->setObjectFileInfo(mMCObjectFileInfo);
|
||||||
|
|
||||||
MCDisassembler *disAsm = TheX86_32Target.createMCDisassembler(*mSubtargetInfo, *mMCContext);
|
MCDisassembler *disAsm = TheX86_32Target.createMCDisassembler(*mSubtargetInfo, *mMCContext);
|
||||||
mDisAsm = disAsm;
|
mDisAsm = disAsm;
|
||||||
|
|
|
@ -14,7 +14,7 @@ PUSHD %~dp0..\
|
||||||
mkdir stats
|
mkdir stats
|
||||||
:STATS_HAS
|
: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
|
call extern\llvm_build.bat
|
||||||
@IF %ERRORLEVEL% NEQ 0 GOTO HADERROR
|
@IF %ERRORLEVEL% NEQ 0 GOTO HADERROR
|
||||||
:LLVM_HAS
|
:LLVM_HAS
|
||||||
|
|
|
@ -20,7 +20,7 @@ if [ ! -f ../BeefySysLib/third_party/libffi/Makefile ]; then
|
||||||
cd $SCRIPTPATH
|
cd $SCRIPTPATH
|
||||||
fi
|
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...
|
echo Building LLVM...
|
||||||
cd ../extern
|
cd ../extern
|
||||||
./llvm_build.sh
|
./llvm_build.sh
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
mkdir ..\wasm
|
mkdir ..\wasm
|
||||||
cd ..\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
|
emar r BeefRT.a Common.o Internal.o Math.o Object.o String.o Thread.o UTF8.o utf8proc.o WasmCommon.o
|
20
extern/llvm_build.bat
vendored
20
extern/llvm_build.bat
vendored
|
@ -1,25 +1,29 @@
|
||||||
PUSHD %~dp0
|
PUSHD %~dp0
|
||||||
|
|
||||||
@IF EXIST llvm-project_11_0_0 GOTO LLVM_HAS
|
@IF EXIST llvm-project_13_0_1 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
|
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
|
||||||
@rem pushd llvm-project_11_0_0
|
@IF %ERRORLEVEL% NEQ 0 GOTO HADERROR
|
||||||
|
|
||||||
:LLVM_HAS
|
:LLVM_HAS
|
||||||
|
|
||||||
@IF EXIST llvm_win64_11_0_0 GOTO HAS_CONFIG
|
@IF EXIST llvm_win64_13_0_1 GOTO HAS_CONFIG
|
||||||
mkdir llvm_win64_11_0_0
|
mkdir llvm_win64_13_0_1
|
||||||
cd llvm_win64_11_0_0
|
cd llvm_win64_13_0_1
|
||||||
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"
|
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
|
@GOTO DOBUILD
|
||||||
|
|
||||||
:HAS_CONFIG
|
:HAS_CONFIG
|
||||||
cd llvm_win64_11_0_0
|
cd llvm_win64_13_0_1
|
||||||
@GOTO DOBUILD
|
@GOTO DOBUILD
|
||||||
|
|
||||||
:DOBUILD
|
:DOBUILD
|
||||||
set /p LLVM_TARGETS=<../llvm_targets.txt
|
set /p LLVM_TARGETS=<../llvm_targets.txt
|
||||||
cmake --build . -t %LLVM_TARGETS% --config Debug
|
cmake --build . -t %LLVM_TARGETS% --config Debug
|
||||||
|
@IF %ERRORLEVEL% NEQ 0 GOTO HADERROR
|
||||||
cmake --build . -t %LLVM_TARGETS% --config Release
|
cmake --build . -t %LLVM_TARGETS% --config Release
|
||||||
|
@IF %ERRORLEVEL% NEQ 0 GOTO HADERROR
|
||||||
|
echo done > _Done.txt
|
||||||
|
|
||||||
:SUCCESS
|
:SUCCESS
|
||||||
@ECHO SUCCESS!
|
@ECHO SUCCESS!
|
||||||
|
|
39
extern/llvm_build.sh
vendored
39
extern/llvm_build.sh
vendored
|
@ -1,34 +1,34 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
if [ ! -d llvm-project_11_0_0 ]; then
|
if [ ! -d llvm-project_13_0_1 ]; 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
|
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-11.0.0.src.tar.xz
|
tar -xf llvm-13.0.1.src.tar.xz
|
||||||
mkdir llvm-project_11_0_0
|
mkdir llvm-project_13_0_1
|
||||||
mv llvm-11.0.0.src llvm-project_11_0_0/llvm
|
mv llvm-13.0.1.src llvm-project_13_0_1/llvm
|
||||||
else # shallow git clone llvm repo if llvm-11.0.0.src.tar.xz does not exists
|
else # shallow git clone llvm repo if llvm-13.0.1.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
|
git clone --depth 1 --branch llvmorg-13.0.1 https://github.com/llvm/llvm-project.git llvm-project_13_0_1
|
||||||
fi
|
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
|
if [ ! -d llvm_linux_13_0_1 ]; then
|
||||||
mkdir llvm_linux_11_0_0
|
mkdir llvm_linux_13_0_1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d llvm_linux_11_0_0/bin ]; then
|
if [ ! -d llvm_linux_13_0_1/bin ]; then
|
||||||
cd llvm_linux_11_0_0
|
cd llvm_linux_13_0_1
|
||||||
cmake ../llvm-project_11_0_0/llvm -DLLVM_TARGETS_TO_BUILD="AArch64;ARM;X86;WebAssembly" -DCMAKE_BUILD_TYPE:String="Debug"
|
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)
|
cmake --build . -t $(cat ../llvm_targets.txt)
|
||||||
cd ..
|
cd ..
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d llvm_linux_rel_11_0_0 ]; then
|
if [ ! -d llvm_linux_rel_13_0_1 ]; then
|
||||||
mkdir llvm_linux_rel_11_0_0
|
mkdir llvm_linux_rel_13_0_1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d llvm_linux_rel_11_0_0/bin ]; then
|
if [ ! -d llvm_linux_rel_13_0_1/bin ]; then
|
||||||
cd llvm_linux_rel_11_0_0
|
cd llvm_linux_rel_13_0_1
|
||||||
cmake ../llvm-project_11_0_0/llvm -DLLVM_TARGETS_TO_BUILD="AArch64;ARM;X86;WebAssembly" -DCMAKE_BUILD_TYPE:String="Release"
|
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)
|
cmake --build . -t $(cat ../llvm_targets.txt)
|
||||||
cd ..
|
cd ..
|
||||||
fi
|
fi
|
||||||
|
@ -37,5 +37,6 @@ if [ ! -d ../IDE/dist/llvm/bin ]; then
|
||||||
mkdir ../IDE/dist/llvm
|
mkdir ../IDE/dist/llvm
|
||||||
mkdir ../IDE/dist/llvm/bin
|
mkdir ../IDE/dist/llvm/bin
|
||||||
fi
|
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
|
2
extern/llvm_targets.txt
vendored
2
extern/llvm_targets.txt
vendored
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue