From 6ed6a91a6434a944010d8f2c6752e70a372b5296 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 1 Feb 2020 22:50:57 +0000 Subject: [PATCH 01/46] Begin LLVM C API integration --- bin/llvm/windows/LLVM-C.lib | Bin 0 -> 274018 bytes build.bat | 7 +- examples/llvm-demo/demo.odin | 11 + src/build_settings.cpp | 2 + src/llvm-c/Analysis.h | 65 + src/llvm-c/BitReader.h | 85 + src/llvm-c/BitWriter.h | 59 + src/llvm-c/Comdat.h | 75 + src/llvm-c/Config/AsmParsers.def | 44 + src/llvm-c/Config/AsmPrinters.def | 46 + src/llvm-c/Config/Disassemblers.def | 45 + src/llvm-c/Config/Targets.def | 45 + src/llvm-c/Config/abi-breaking.h | 62 + src/llvm-c/Config/llvm-config.h | 85 + src/llvm-c/Core.h | 4079 +++++++++++++++++ src/llvm-c/DataTypes.h | 90 + src/llvm-c/DebugInfo.h | 1315 ++++++ src/llvm-c/Disassembler.h | 113 + src/llvm-c/DisassemblerTypes.h | 160 + src/llvm-c/Error.h | 69 + src/llvm-c/ErrorHandling.h | 49 + src/llvm-c/ExecutionEngine.h | 200 + src/llvm-c/IRReader.h | 40 + src/llvm-c/Initialization.h | 56 + src/llvm-c/LinkTimeOptimizer.h | 68 + src/llvm-c/Linker.h | 41 + src/llvm-c/Object.h | 233 + src/llvm-c/OrcBindings.h | 172 + src/llvm-c/Remarks.h | 329 ++ src/llvm-c/Support.h | 65 + src/llvm-c/Target.h | 295 ++ src/llvm-c/TargetMachine.h | 163 + src/llvm-c/Transforms/AggressiveInstCombine.h | 43 + src/llvm-c/Transforms/Coroutines.h | 55 + src/llvm-c/Transforms/IPO.h | 84 + src/llvm-c/Transforms/InstCombine.h | 43 + src/llvm-c/Transforms/PassManagerBuilder.h | 90 + src/llvm-c/Transforms/Scalar.h | 167 + src/llvm-c/Transforms/Utils.h | 53 + src/llvm-c/Transforms/Vectorize.h | 50 + src/llvm-c/Types.h | 179 + src/llvm-c/lto.h | 899 ++++ src/llvm_backend.cpp | 831 ++++ src/main.cpp | 20 + src/types.cpp | 3 + 45 files changed, 10683 insertions(+), 2 deletions(-) create mode 100644 bin/llvm/windows/LLVM-C.lib create mode 100644 examples/llvm-demo/demo.odin create mode 100644 src/llvm-c/Analysis.h create mode 100644 src/llvm-c/BitReader.h create mode 100644 src/llvm-c/BitWriter.h create mode 100644 src/llvm-c/Comdat.h create mode 100644 src/llvm-c/Config/AsmParsers.def create mode 100644 src/llvm-c/Config/AsmPrinters.def create mode 100644 src/llvm-c/Config/Disassemblers.def create mode 100644 src/llvm-c/Config/Targets.def create mode 100644 src/llvm-c/Config/abi-breaking.h create mode 100644 src/llvm-c/Config/llvm-config.h create mode 100644 src/llvm-c/Core.h create mode 100644 src/llvm-c/DataTypes.h create mode 100644 src/llvm-c/DebugInfo.h create mode 100644 src/llvm-c/Disassembler.h create mode 100644 src/llvm-c/DisassemblerTypes.h create mode 100644 src/llvm-c/Error.h create mode 100644 src/llvm-c/ErrorHandling.h create mode 100644 src/llvm-c/ExecutionEngine.h create mode 100644 src/llvm-c/IRReader.h create mode 100644 src/llvm-c/Initialization.h create mode 100644 src/llvm-c/LinkTimeOptimizer.h create mode 100644 src/llvm-c/Linker.h create mode 100644 src/llvm-c/Object.h create mode 100644 src/llvm-c/OrcBindings.h create mode 100644 src/llvm-c/Remarks.h create mode 100644 src/llvm-c/Support.h create mode 100644 src/llvm-c/Target.h create mode 100644 src/llvm-c/TargetMachine.h create mode 100644 src/llvm-c/Transforms/AggressiveInstCombine.h create mode 100644 src/llvm-c/Transforms/Coroutines.h create mode 100644 src/llvm-c/Transforms/IPO.h create mode 100644 src/llvm-c/Transforms/InstCombine.h create mode 100644 src/llvm-c/Transforms/PassManagerBuilder.h create mode 100644 src/llvm-c/Transforms/Scalar.h create mode 100644 src/llvm-c/Transforms/Utils.h create mode 100644 src/llvm-c/Transforms/Vectorize.h create mode 100644 src/llvm-c/Types.h create mode 100644 src/llvm-c/lto.h create mode 100644 src/llvm_backend.cpp diff --git a/bin/llvm/windows/LLVM-C.lib b/bin/llvm/windows/LLVM-C.lib new file mode 100644 index 0000000000000000000000000000000000000000..2353c6a39e4b0149ce2c9166eb52ed706efb0ac0 GIT binary patch literal 274018 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

J;WH07+eLYB0)0(Bm|cS_xR8hfW;6h5Ir~a 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 literal 0 HcmV?d00001 diff --git a/build.bat b/build.bat index 013a199a7..58799c454 100644 --- a/build.bat +++ b/build.bat @@ -30,7 +30,8 @@ set compiler_warnings= ^ set compiler_includes= set libs= ^ - kernel32.lib + kernel32.lib ^ + bin\llvm\windows\LLVM-C.lib set linker_flags= -incremental:no -opt:ref -subsystem:console @@ -48,7 +49,9 @@ del *.ilk > NUL 2> NUL cl %compiler_settings% "src\main.cpp" ^ /link %linker_settings% -OUT:%exe_name% ^ - && odin run examples/demo/demo.odin + && odin build examples/llvm-demo/demo.odin -llvm-api + + rem && link -nologo llvm_demo.obj kernel32.lib -OUT:llvm_demo.exe del *.obj > NUL 2> NUL diff --git a/examples/llvm-demo/demo.odin b/examples/llvm-demo/demo.odin new file mode 100644 index 000000000..481970ab5 --- /dev/null +++ b/examples/llvm-demo/demo.odin @@ -0,0 +1,11 @@ +package demo + +import "core:os" + +main :: proc() { + x := 1; + y := 2; + z := x + y; + w := z - 2; + // os.write_string(os.stdout, "Hellope\n"); +} diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 5a1ec0f30..f34f21dc6 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -127,6 +127,8 @@ struct BuildContext { bool vet; bool cross_compiling; + bool use_llvm_api; + QueryDataSetSettings query_data_set_settings; gbAffinity affinity; diff --git a/src/llvm-c/Analysis.h b/src/llvm-c/Analysis.h new file mode 100644 index 000000000..cb9e8ece3 --- /dev/null +++ b/src/llvm-c/Analysis.h @@ -0,0 +1,65 @@ +/*===-- llvm-c/Analysis.h - Analysis Library C Interface --------*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMAnalysis.a, which *| +|* implements various analyses of the LLVM IR. *| +|* *| +|* Many exotic languages can interoperate with C code but have a harder time *| +|* with C++ due to name mangling. So in addition to C, this interface enables *| +|* tools written in such languages. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_ANALYSIS_H +#define LLVM_C_ANALYSIS_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCAnalysis Analysis + * @ingroup LLVMC + * + * @{ + */ + +typedef enum { + LLVMAbortProcessAction, /* verifier will print to stderr and abort() */ + LLVMPrintMessageAction, /* verifier will print to stderr and return 1 */ + LLVMReturnStatusAction /* verifier will just return 1 */ +} LLVMVerifierFailureAction; + + +/* Verifies that a module is valid, taking the specified action if not. + Optionally returns a human-readable description of any invalid constructs. + OutMessage must be disposed with LLVMDisposeMessage. */ +LLVMBool LLVMVerifyModule(LLVMModuleRef M, LLVMVerifierFailureAction Action, + char **OutMessage); + +/* Verifies that a single function is valid, taking the specified action. Useful + for debugging. */ +LLVMBool LLVMVerifyFunction(LLVMValueRef Fn, LLVMVerifierFailureAction Action); + +/* Open up a ghostview window that displays the CFG of the current function. + Useful for debugging. */ +void LLVMViewFunctionCFG(LLVMValueRef Fn); +void LLVMViewFunctionCFGOnly(LLVMValueRef Fn); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/BitReader.h b/src/llvm-c/BitReader.h new file mode 100644 index 000000000..b307ee979 --- /dev/null +++ b/src/llvm-c/BitReader.h @@ -0,0 +1,85 @@ +/*===-- llvm-c/BitReader.h - BitReader Library C Interface ------*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMBitReader.a, which *| +|* implements input of the LLVM bitcode format. *| +|* *| +|* Many exotic languages can interoperate with C code but have a harder time *| +|* with C++ due to name mangling. So in addition to C, this interface enables *| +|* tools written in such languages. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_BITREADER_H +#define LLVM_C_BITREADER_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCBitReader Bit Reader + * @ingroup LLVMC + * + * @{ + */ + +/* Builds a module from the bitcode in the specified memory buffer, returning a + reference to the module via the OutModule parameter. Returns 0 on success. + Optionally returns a human-readable error message via OutMessage. + + This is deprecated. Use LLVMParseBitcode2. */ +LLVMBool LLVMParseBitcode(LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutModule, + char **OutMessage); + +/* Builds a module from the bitcode in the specified memory buffer, returning a + reference to the module via the OutModule parameter. Returns 0 on success. */ +LLVMBool LLVMParseBitcode2(LLVMMemoryBufferRef MemBuf, + LLVMModuleRef *OutModule); + +/* This is deprecated. Use LLVMParseBitcodeInContext2. */ +LLVMBool LLVMParseBitcodeInContext(LLVMContextRef ContextRef, + LLVMMemoryBufferRef MemBuf, + LLVMModuleRef *OutModule, char **OutMessage); + +LLVMBool LLVMParseBitcodeInContext2(LLVMContextRef ContextRef, + LLVMMemoryBufferRef MemBuf, + LLVMModuleRef *OutModule); + +/** Reads a module from the specified path, returning via the OutMP parameter + a module provider which performs lazy deserialization. Returns 0 on success. + Optionally returns a human-readable error message via OutMessage. + This is deprecated. Use LLVMGetBitcodeModuleInContext2. */ +LLVMBool LLVMGetBitcodeModuleInContext(LLVMContextRef ContextRef, + LLVMMemoryBufferRef MemBuf, + LLVMModuleRef *OutM, char **OutMessage); + +/** Reads a module from the specified path, returning via the OutMP parameter a + * module provider which performs lazy deserialization. Returns 0 on success. */ +LLVMBool LLVMGetBitcodeModuleInContext2(LLVMContextRef ContextRef, + LLVMMemoryBufferRef MemBuf, + LLVMModuleRef *OutM); + +/* This is deprecated. Use LLVMGetBitcodeModule2. */ +LLVMBool LLVMGetBitcodeModule(LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM, + char **OutMessage); + +LLVMBool LLVMGetBitcodeModule2(LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/BitWriter.h b/src/llvm-c/BitWriter.h new file mode 100644 index 000000000..187051555 --- /dev/null +++ b/src/llvm-c/BitWriter.h @@ -0,0 +1,59 @@ +/*===-- llvm-c/BitWriter.h - BitWriter Library C Interface ------*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMBitWriter.a, which *| +|* implements output of the LLVM bitcode format. *| +|* *| +|* Many exotic languages can interoperate with C code but have a harder time *| +|* with C++ due to name mangling. So in addition to C, this interface enables *| +|* tools written in such languages. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_BITWRITER_H +#define LLVM_C_BITWRITER_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCBitWriter Bit Writer + * @ingroup LLVMC + * + * @{ + */ + +/*===-- Operations on modules ---------------------------------------------===*/ + +/** Writes a module to the specified path. Returns 0 on success. */ +int LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path); + +/** Writes a module to an open file descriptor. Returns 0 on success. */ +int LLVMWriteBitcodeToFD(LLVMModuleRef M, int FD, int ShouldClose, + int Unbuffered); + +/** Deprecated for LLVMWriteBitcodeToFD. Writes a module to an open file + descriptor. Returns 0 on success. Closes the Handle. */ +int LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int Handle); + +/** Writes a module to a new memory buffer and returns it. */ +LLVMMemoryBufferRef LLVMWriteBitcodeToMemoryBuffer(LLVMModuleRef M); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/Comdat.h b/src/llvm-c/Comdat.h new file mode 100644 index 000000000..81fee3fc9 --- /dev/null +++ b/src/llvm-c/Comdat.h @@ -0,0 +1,75 @@ +/*===-- llvm-c/Comdat.h - Module Comdat C Interface -------------*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file defines the C interface to COMDAT. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_COMDAT_H +#define LLVM_C_COMDAT_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + LLVMAnyComdatSelectionKind, ///< The linker may choose any COMDAT. + LLVMExactMatchComdatSelectionKind, ///< The data referenced by the COMDAT must + ///< be the same. + LLVMLargestComdatSelectionKind, ///< The linker will choose the largest + ///< COMDAT. + LLVMNoDuplicatesComdatSelectionKind, ///< No other Module may specify this + ///< COMDAT. + LLVMSameSizeComdatSelectionKind ///< The data referenced by the COMDAT must be + ///< the same size. +} LLVMComdatSelectionKind; + +/** + * Return the Comdat in the module with the specified name. It is created + * if it didn't already exist. + * + * @see llvm::Module::getOrInsertComdat() + */ +LLVMComdatRef LLVMGetOrInsertComdat(LLVMModuleRef M, const char *Name); + +/** + * Get the Comdat assigned to the given global object. + * + * @see llvm::GlobalObject::getComdat() + */ +LLVMComdatRef LLVMGetComdat(LLVMValueRef V); + +/** + * Assign the Comdat to the given global object. + * + * @see llvm::GlobalObject::setComdat() + */ +void LLVMSetComdat(LLVMValueRef V, LLVMComdatRef C); + +/* + * Get the conflict resolution selection kind for the Comdat. + * + * @see llvm::Comdat::getSelectionKind() + */ +LLVMComdatSelectionKind LLVMGetComdatSelectionKind(LLVMComdatRef C); + +/* + * Set the conflict resolution selection kind for the Comdat. + * + * @see llvm::Comdat::setSelectionKind() + */ +void LLVMSetComdatSelectionKind(LLVMComdatRef C, LLVMComdatSelectionKind Kind); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/Config/AsmParsers.def b/src/llvm-c/Config/AsmParsers.def new file mode 100644 index 000000000..7aaab6e50 --- /dev/null +++ b/src/llvm-c/Config/AsmParsers.def @@ -0,0 +1,44 @@ +/*===- llvm/Config/AsmParsers.def - LLVM Assembly Parsers -------*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file enumerates all of the assembly-language parsers *| +|* supported by this build of LLVM. Clients of this file should define *| +|* the LLVM_ASM_PARSER macro to be a function-like macro with a *| +|* single parameter (the name of the target whose assembly can be *| +|* generated); including this file will then enumerate all of the *| +|* targets with assembly parsers. *| +|* *| +|* The set of targets supported by LLVM is generated at configuration *| +|* time, at which point this header is generated. Do not modify this *| +|* header directly. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_ASM_PARSER +# error Please define the macro LLVM_ASM_PARSER(TargetName) +#endif + +LLVM_ASM_PARSER(AArch64) +LLVM_ASM_PARSER(AMDGPU) +LLVM_ASM_PARSER(ARM) +LLVM_ASM_PARSER(BPF) +LLVM_ASM_PARSER(Hexagon) +LLVM_ASM_PARSER(Lanai) +LLVM_ASM_PARSER(Mips) +LLVM_ASM_PARSER(MSP430) +LLVM_ASM_PARSER(PowerPC) +LLVM_ASM_PARSER(RISCV) +LLVM_ASM_PARSER(Sparc) +LLVM_ASM_PARSER(SystemZ) +LLVM_ASM_PARSER(WebAssembly) +LLVM_ASM_PARSER(X86) +LLVM_ASM_PARSER(AVR) + + +#undef LLVM_ASM_PARSER diff --git a/src/llvm-c/Config/AsmPrinters.def b/src/llvm-c/Config/AsmPrinters.def new file mode 100644 index 000000000..3ecc3644f --- /dev/null +++ b/src/llvm-c/Config/AsmPrinters.def @@ -0,0 +1,46 @@ +/*===- llvm/Config/AsmPrinters.def - LLVM Assembly Printers -----*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file enumerates all of the assembly-language printers *| +|* supported by this build of LLVM. Clients of this file should define *| +|* the LLVM_ASM_PRINTER macro to be a function-like macro with a *| +|* single parameter (the name of the target whose assembly can be *| +|* generated); including this file will then enumerate all of the *| +|* targets with assembly printers. *| +|* *| +|* The set of targets supported by LLVM is generated at configuration *| +|* time, at which point this header is generated. Do not modify this *| +|* header directly. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_ASM_PRINTER +# error Please define the macro LLVM_ASM_PRINTER(TargetName) +#endif + +LLVM_ASM_PRINTER(AArch64) +LLVM_ASM_PRINTER(AMDGPU) +LLVM_ASM_PRINTER(ARM) +LLVM_ASM_PRINTER(BPF) +LLVM_ASM_PRINTER(Hexagon) +LLVM_ASM_PRINTER(Lanai) +LLVM_ASM_PRINTER(Mips) +LLVM_ASM_PRINTER(MSP430) +LLVM_ASM_PRINTER(NVPTX) +LLVM_ASM_PRINTER(PowerPC) +LLVM_ASM_PRINTER(RISCV) +LLVM_ASM_PRINTER(Sparc) +LLVM_ASM_PRINTER(SystemZ) +LLVM_ASM_PRINTER(WebAssembly) +LLVM_ASM_PRINTER(X86) +LLVM_ASM_PRINTER(XCore) +LLVM_ASM_PRINTER(AVR) + + +#undef LLVM_ASM_PRINTER diff --git a/src/llvm-c/Config/Disassemblers.def b/src/llvm-c/Config/Disassemblers.def new file mode 100644 index 000000000..4485af241 --- /dev/null +++ b/src/llvm-c/Config/Disassemblers.def @@ -0,0 +1,45 @@ +/*===- llvm/Config/Disassemblers.def - LLVM Assembly Parsers ----*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file enumerates all of the assembly-language parsers *| +|* supported by this build of LLVM. Clients of this file should define *| +|* the LLVM_DISASSEMBLER macro to be a function-like macro with a *| +|* single parameter (the name of the target whose assembly can be *| +|* generated); including this file will then enumerate all of the *| +|* targets with assembly parsers. *| +|* *| +|* The set of targets supported by LLVM is generated at configuration *| +|* time, at which point this header is generated. Do not modify this *| +|* header directly. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_DISASSEMBLER +# error Please define the macro LLVM_DISASSEMBLER(TargetName) +#endif + +LLVM_DISASSEMBLER(AArch64) +LLVM_DISASSEMBLER(AMDGPU) +LLVM_DISASSEMBLER(ARM) +LLVM_DISASSEMBLER(BPF) +LLVM_DISASSEMBLER(Hexagon) +LLVM_DISASSEMBLER(Lanai) +LLVM_DISASSEMBLER(Mips) +LLVM_DISASSEMBLER(MSP430) +LLVM_DISASSEMBLER(PowerPC) +LLVM_DISASSEMBLER(RISCV) +LLVM_DISASSEMBLER(Sparc) +LLVM_DISASSEMBLER(SystemZ) +LLVM_DISASSEMBLER(WebAssembly) +LLVM_DISASSEMBLER(X86) +LLVM_DISASSEMBLER(XCore) +LLVM_DISASSEMBLER(AVR) + + +#undef LLVM_DISASSEMBLER diff --git a/src/llvm-c/Config/Targets.def b/src/llvm-c/Config/Targets.def new file mode 100644 index 000000000..4962add96 --- /dev/null +++ b/src/llvm-c/Config/Targets.def @@ -0,0 +1,45 @@ +/*===- llvm/Config/Targets.def - LLVM Target Architectures ------*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file enumerates all of the target architectures supported by *| +|* this build of LLVM. Clients of this file should define the *| +|* LLVM_TARGET macro to be a function-like macro with a single *| +|* parameter (the name of the target); including this file will then *| +|* enumerate all of the targets. *| +|* *| +|* The set of targets supported by LLVM is generated at configuration *| +|* time, at which point this header is generated. Do not modify this *| +|* header directly. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_TARGET +# error Please define the macro LLVM_TARGET(TargetName) +#endif + +LLVM_TARGET(AArch64) +LLVM_TARGET(AMDGPU) +LLVM_TARGET(ARM) +LLVM_TARGET(BPF) +LLVM_TARGET(Hexagon) +LLVM_TARGET(Lanai) +LLVM_TARGET(Mips) +LLVM_TARGET(MSP430) +LLVM_TARGET(NVPTX) +LLVM_TARGET(PowerPC) +LLVM_TARGET(RISCV) +LLVM_TARGET(Sparc) +LLVM_TARGET(SystemZ) +LLVM_TARGET(WebAssembly) +LLVM_TARGET(X86) +LLVM_TARGET(XCore) +LLVM_TARGET(AVR) + + +#undef LLVM_TARGET diff --git a/src/llvm-c/Config/abi-breaking.h b/src/llvm-c/Config/abi-breaking.h new file mode 100644 index 000000000..fd32bf381 --- /dev/null +++ b/src/llvm-c/Config/abi-breaking.h @@ -0,0 +1,62 @@ +/*===------- llvm/Config/abi-breaking.h - llvm configuration -------*- C -*-===*/ +/* */ +/* Part of the LLVM Project, under the Apache License v2.0 with LLVM */ +/* Exceptions. */ +/* See https://llvm.org/LICENSE.txt for license information. */ +/* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception */ +/* */ +/*===----------------------------------------------------------------------===*/ + +/* This file controls the C++ ABI break introduced in LLVM public header. */ + +#ifndef LLVM_ABI_BREAKING_CHECKS_H +#define LLVM_ABI_BREAKING_CHECKS_H + +/* Define to enable checks that alter the LLVM C++ ABI */ +#define LLVM_ENABLE_ABI_BREAKING_CHECKS 0 + +/* Define to enable reverse iteration of unordered llvm containers */ +#define LLVM_ENABLE_REVERSE_ITERATION 0 + +/* Allow selectively disabling link-time mismatch checking so that header-only + ADT content from LLVM can be used without linking libSupport. */ +#if !LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING + +// ABI_BREAKING_CHECKS protection: provides link-time failure when clients build +// mismatch with LLVM +#if defined(_MSC_VER) +// Use pragma with MSVC +#define LLVM_XSTR(s) LLVM_STR(s) +#define LLVM_STR(s) #s +#pragma detect_mismatch("LLVM_ENABLE_ABI_BREAKING_CHECKS", LLVM_XSTR(LLVM_ENABLE_ABI_BREAKING_CHECKS)) +#undef LLVM_XSTR +#undef LLVM_STR +#elif defined(_WIN32) || defined(__CYGWIN__) // Win32 w/o #pragma detect_mismatch +// FIXME: Implement checks without weak. +#elif defined(__cplusplus) +#if !(defined(_AIX) && defined(__GNUC__) && !defined(__clang__)) +#define LLVM_HIDDEN_VISIBILITY __attribute__ ((visibility("hidden"))) +#else +// GCC on AIX does not support visibility attributes. Symbols are not +// exported by default on AIX. +#define LLVM_HIDDEN_VISIBILITY +#endif +namespace llvm { +#if LLVM_ENABLE_ABI_BREAKING_CHECKS +extern int EnableABIBreakingChecks; +LLVM_HIDDEN_VISIBILITY +__attribute__((weak)) int *VerifyEnableABIBreakingChecks = + &EnableABIBreakingChecks; +#else +extern int DisableABIBreakingChecks; +LLVM_HIDDEN_VISIBILITY +__attribute__((weak)) int *VerifyDisableABIBreakingChecks = + &DisableABIBreakingChecks; +#endif +} +#undef LLVM_HIDDEN_VISIBILITY +#endif // _MSC_VER + +#endif // LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING + +#endif diff --git a/src/llvm-c/Config/llvm-config.h b/src/llvm-c/Config/llvm-config.h new file mode 100644 index 000000000..cdc6d47e7 --- /dev/null +++ b/src/llvm-c/Config/llvm-config.h @@ -0,0 +1,85 @@ +/*===------- llvm/Config/llvm-config.h - llvm configuration -------*- C -*-===*/ +/* */ +/* Part of the LLVM Project, under the Apache License v2.0 with LLVM */ +/* Exceptions. */ +/* See https://llvm.org/LICENSE.txt for license information. */ +/* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception */ +/* */ +/*===----------------------------------------------------------------------===*/ + +/* This file enumerates variables from the LLVM configuration so that they + can be in exported headers and won't override package specific directives. + This is a C header that can be included in the llvm-c headers. */ + +#ifndef LLVM_CONFIG_H +#define LLVM_CONFIG_H + +/* Define if LLVM_ENABLE_DUMP is enabled */ +/* #undef LLVM_ENABLE_DUMP */ + +/* Define if we link Polly to the tools */ +/* #undef LINK_POLLY_INTO_TOOLS */ + +/* Target triple LLVM will generate code for by default */ +#define LLVM_DEFAULT_TARGET_TRIPLE "x86_64-pc-windows-msvc" + +/* Define if threads enabled */ +#define LLVM_ENABLE_THREADS 1 + +/* Has gcc/MSVC atomic intrinsics */ +#define LLVM_HAS_ATOMICS 1 + +/* Host triple LLVM will be executed on */ +#define LLVM_HOST_TRIPLE "x86_64-pc-windows-msvc" + +/* LLVM architecture name for the native architecture, if available */ +#define LLVM_NATIVE_ARCH X86 + +/* LLVM name for the native AsmParser init function, if available */ +#define LLVM_NATIVE_ASMPARSER LLVMInitializeX86AsmParser + +/* LLVM name for the native AsmPrinter init function, if available */ +#define LLVM_NATIVE_ASMPRINTER LLVMInitializeX86AsmPrinter + +/* LLVM name for the native Disassembler init function, if available */ +#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeX86Disassembler + +/* LLVM name for the native Target init function, if available */ +#define LLVM_NATIVE_TARGET LLVMInitializeX86Target + +/* LLVM name for the native TargetInfo init function, if available */ +#define LLVM_NATIVE_TARGETINFO LLVMInitializeX86TargetInfo + +/* LLVM name for the native target MC init function, if available */ +#define LLVM_NATIVE_TARGETMC LLVMInitializeX86TargetMC + +/* Define if this is Unixish platform */ +/* #undef LLVM_ON_UNIX */ + +/* Define if we have the Intel JIT API runtime support library */ +#define LLVM_USE_INTEL_JITEVENTS 0 + +/* Define if we have the oprofile JIT-support library */ +#define LLVM_USE_OPROFILE 0 + +/* Define if we have the perf JIT-support library */ +#define LLVM_USE_PERF 0 + +/* Major version of the LLVM API */ +#define LLVM_VERSION_MAJOR 9 + +/* Minor version of the LLVM API */ +#define LLVM_VERSION_MINOR 0 + +/* Patch version of the LLVM API */ +#define LLVM_VERSION_PATCH 0 + +/* LLVM version string */ +#define LLVM_VERSION_STRING "9.0.0" + +/* Whether LLVM records statistics for use with GetStatistics(), + * PrintStatistics() or PrintStatisticsJSON() + */ +#define LLVM_FORCE_ENABLE_STATS 0 + +#endif diff --git a/src/llvm-c/Core.h b/src/llvm-c/Core.h new file mode 100644 index 000000000..51f160818 --- /dev/null +++ b/src/llvm-c/Core.h @@ -0,0 +1,4079 @@ +/*===-- llvm-c/Core.h - Core Library C Interface ------------------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMCore.a, which implements *| +|* the LLVM intermediate representation. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_CORE_H +#define LLVM_C_CORE_H + +#include "llvm-c/ErrorHandling.h" +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMC LLVM-C: C interface to LLVM + * + * This module exposes parts of the LLVM library as a C API. + * + * @{ + */ + +/** + * @defgroup LLVMCTransforms Transforms + */ + +/** + * @defgroup LLVMCCore Core + * + * This modules provide an interface to libLLVMCore, which implements + * the LLVM intermediate representation as well as other related types + * and utilities. + * + * Many exotic languages can interoperate with C code but have a harder time + * with C++ due to name mangling. So in addition to C, this interface enables + * tools written in such languages. + * + * @{ + */ + +/** + * @defgroup LLVMCCoreTypes Types and Enumerations + * + * @{ + */ + +/// External users depend on the following values being stable. It is not safe +/// to reorder them. +typedef enum { + /* Terminator Instructions */ + LLVMRet = 1, + LLVMBr = 2, + LLVMSwitch = 3, + LLVMIndirectBr = 4, + LLVMInvoke = 5, + /* removed 6 due to API changes */ + LLVMUnreachable = 7, + LLVMCallBr = 67, + + /* Standard Unary Operators */ + LLVMFNeg = 66, + + /* Standard Binary Operators */ + LLVMAdd = 8, + LLVMFAdd = 9, + LLVMSub = 10, + LLVMFSub = 11, + LLVMMul = 12, + LLVMFMul = 13, + LLVMUDiv = 14, + LLVMSDiv = 15, + LLVMFDiv = 16, + LLVMURem = 17, + LLVMSRem = 18, + LLVMFRem = 19, + + /* Logical Operators */ + LLVMShl = 20, + LLVMLShr = 21, + LLVMAShr = 22, + LLVMAnd = 23, + LLVMOr = 24, + LLVMXor = 25, + + /* Memory Operators */ + LLVMAlloca = 26, + LLVMLoad = 27, + LLVMStore = 28, + LLVMGetElementPtr = 29, + + /* Cast Operators */ + LLVMTrunc = 30, + LLVMZExt = 31, + LLVMSExt = 32, + LLVMFPToUI = 33, + LLVMFPToSI = 34, + LLVMUIToFP = 35, + LLVMSIToFP = 36, + LLVMFPTrunc = 37, + LLVMFPExt = 38, + LLVMPtrToInt = 39, + LLVMIntToPtr = 40, + LLVMBitCast = 41, + LLVMAddrSpaceCast = 60, + + /* Other Operators */ + LLVMICmp = 42, + LLVMFCmp = 43, + LLVMPHI = 44, + LLVMCall = 45, + LLVMSelect = 46, + LLVMUserOp1 = 47, + LLVMUserOp2 = 48, + LLVMVAArg = 49, + LLVMExtractElement = 50, + LLVMInsertElement = 51, + LLVMShuffleVector = 52, + LLVMExtractValue = 53, + LLVMInsertValue = 54, + + /* Atomic operators */ + LLVMFence = 55, + LLVMAtomicCmpXchg = 56, + LLVMAtomicRMW = 57, + + /* Exception Handling Operators */ + LLVMResume = 58, + LLVMLandingPad = 59, + LLVMCleanupRet = 61, + LLVMCatchRet = 62, + LLVMCatchPad = 63, + LLVMCleanupPad = 64, + LLVMCatchSwitch = 65 +} LLVMOpcode; + +typedef enum { + LLVMVoidTypeKind, /**< type with no size */ + LLVMHalfTypeKind, /**< 16 bit floating point type */ + LLVMFloatTypeKind, /**< 32 bit floating point type */ + LLVMDoubleTypeKind, /**< 64 bit floating point type */ + LLVMX86_FP80TypeKind, /**< 80 bit floating point type (X87) */ + LLVMFP128TypeKind, /**< 128 bit floating point type (112-bit mantissa)*/ + LLVMPPC_FP128TypeKind, /**< 128 bit floating point type (two 64-bits) */ + LLVMLabelTypeKind, /**< Labels */ + LLVMIntegerTypeKind, /**< Arbitrary bit width integers */ + LLVMFunctionTypeKind, /**< Functions */ + LLVMStructTypeKind, /**< Structures */ + LLVMArrayTypeKind, /**< Arrays */ + LLVMPointerTypeKind, /**< Pointers */ + LLVMVectorTypeKind, /**< SIMD 'packed' format, or other vector type */ + LLVMMetadataTypeKind, /**< Metadata */ + LLVMX86_MMXTypeKind, /**< X86 MMX */ + LLVMTokenTypeKind /**< Tokens */ +} LLVMTypeKind; + +typedef enum { + LLVMExternalLinkage, /**< Externally visible function */ + LLVMAvailableExternallyLinkage, + LLVMLinkOnceAnyLinkage, /**< Keep one copy of function when linking (inline)*/ + LLVMLinkOnceODRLinkage, /**< Same, but only replaced by something + equivalent. */ + LLVMLinkOnceODRAutoHideLinkage, /**< Obsolete */ + LLVMWeakAnyLinkage, /**< Keep one copy of function when linking (weak) */ + LLVMWeakODRLinkage, /**< Same, but only replaced by something + equivalent. */ + LLVMAppendingLinkage, /**< Special purpose, only applies to global arrays */ + LLVMInternalLinkage, /**< Rename collisions when linking (static + functions) */ + LLVMPrivateLinkage, /**< Like Internal, but omit from symbol table */ + LLVMDLLImportLinkage, /**< Obsolete */ + LLVMDLLExportLinkage, /**< Obsolete */ + LLVMExternalWeakLinkage,/**< ExternalWeak linkage description */ + LLVMGhostLinkage, /**< Obsolete */ + LLVMCommonLinkage, /**< Tentative definitions */ + LLVMLinkerPrivateLinkage, /**< Like Private, but linker removes. */ + LLVMLinkerPrivateWeakLinkage /**< Like LinkerPrivate, but is weak. */ +} LLVMLinkage; + +typedef enum { + LLVMDefaultVisibility, /**< The GV is visible */ + LLVMHiddenVisibility, /**< The GV is hidden */ + LLVMProtectedVisibility /**< The GV is protected */ +} LLVMVisibility; + +typedef enum { + LLVMNoUnnamedAddr, /**< Address of the GV is significant. */ + LLVMLocalUnnamedAddr, /**< Address of the GV is locally insignificant. */ + LLVMGlobalUnnamedAddr /**< Address of the GV is globally insignificant. */ +} LLVMUnnamedAddr; + +typedef enum { + LLVMDefaultStorageClass = 0, + LLVMDLLImportStorageClass = 1, /**< Function to be imported from DLL. */ + LLVMDLLExportStorageClass = 2 /**< Function to be accessible from DLL. */ +} LLVMDLLStorageClass; + +typedef enum { + LLVMCCallConv = 0, + LLVMFastCallConv = 8, + LLVMColdCallConv = 9, + LLVMGHCCallConv = 10, + LLVMHiPECallConv = 11, + LLVMWebKitJSCallConv = 12, + LLVMAnyRegCallConv = 13, + LLVMPreserveMostCallConv = 14, + LLVMPreserveAllCallConv = 15, + LLVMSwiftCallConv = 16, + LLVMCXXFASTTLSCallConv = 17, + LLVMX86StdcallCallConv = 64, + LLVMX86FastcallCallConv = 65, + LLVMARMAPCSCallConv = 66, + LLVMARMAAPCSCallConv = 67, + LLVMARMAAPCSVFPCallConv = 68, + LLVMMSP430INTRCallConv = 69, + LLVMX86ThisCallCallConv = 70, + LLVMPTXKernelCallConv = 71, + LLVMPTXDeviceCallConv = 72, + LLVMSPIRFUNCCallConv = 75, + LLVMSPIRKERNELCallConv = 76, + LLVMIntelOCLBICallConv = 77, + LLVMX8664SysVCallConv = 78, + LLVMWin64CallConv = 79, + LLVMX86VectorCallCallConv = 80, + LLVMHHVMCallConv = 81, + LLVMHHVMCCallConv = 82, + LLVMX86INTRCallConv = 83, + LLVMAVRINTRCallConv = 84, + LLVMAVRSIGNALCallConv = 85, + LLVMAVRBUILTINCallConv = 86, + LLVMAMDGPUVSCallConv = 87, + LLVMAMDGPUGSCallConv = 88, + LLVMAMDGPUPSCallConv = 89, + LLVMAMDGPUCSCallConv = 90, + LLVMAMDGPUKERNELCallConv = 91, + LLVMX86RegCallCallConv = 92, + LLVMAMDGPUHSCallConv = 93, + LLVMMSP430BUILTINCallConv = 94, + LLVMAMDGPULSCallConv = 95, + LLVMAMDGPUESCallConv = 96 +} LLVMCallConv; + +typedef enum { + LLVMArgumentValueKind, + LLVMBasicBlockValueKind, + LLVMMemoryUseValueKind, + LLVMMemoryDefValueKind, + LLVMMemoryPhiValueKind, + + LLVMFunctionValueKind, + LLVMGlobalAliasValueKind, + LLVMGlobalIFuncValueKind, + LLVMGlobalVariableValueKind, + LLVMBlockAddressValueKind, + LLVMConstantExprValueKind, + LLVMConstantArrayValueKind, + LLVMConstantStructValueKind, + LLVMConstantVectorValueKind, + + LLVMUndefValueValueKind, + LLVMConstantAggregateZeroValueKind, + LLVMConstantDataArrayValueKind, + LLVMConstantDataVectorValueKind, + LLVMConstantIntValueKind, + LLVMConstantFPValueKind, + LLVMConstantPointerNullValueKind, + LLVMConstantTokenNoneValueKind, + + LLVMMetadataAsValueValueKind, + LLVMInlineAsmValueKind, + + LLVMInstructionValueKind, +} LLVMValueKind; + +typedef enum { + LLVMIntEQ = 32, /**< equal */ + LLVMIntNE, /**< not equal */ + LLVMIntUGT, /**< unsigned greater than */ + LLVMIntUGE, /**< unsigned greater or equal */ + LLVMIntULT, /**< unsigned less than */ + LLVMIntULE, /**< unsigned less or equal */ + LLVMIntSGT, /**< signed greater than */ + LLVMIntSGE, /**< signed greater or equal */ + LLVMIntSLT, /**< signed less than */ + LLVMIntSLE /**< signed less or equal */ +} LLVMIntPredicate; + +typedef enum { + LLVMRealPredicateFalse, /**< Always false (always folded) */ + LLVMRealOEQ, /**< True if ordered and equal */ + LLVMRealOGT, /**< True if ordered and greater than */ + LLVMRealOGE, /**< True if ordered and greater than or equal */ + LLVMRealOLT, /**< True if ordered and less than */ + LLVMRealOLE, /**< True if ordered and less than or equal */ + LLVMRealONE, /**< True if ordered and operands are unequal */ + LLVMRealORD, /**< True if ordered (no nans) */ + LLVMRealUNO, /**< True if unordered: isnan(X) | isnan(Y) */ + LLVMRealUEQ, /**< True if unordered or equal */ + LLVMRealUGT, /**< True if unordered or greater than */ + LLVMRealUGE, /**< True if unordered, greater than, or equal */ + LLVMRealULT, /**< True if unordered or less than */ + LLVMRealULE, /**< True if unordered, less than, or equal */ + LLVMRealUNE, /**< True if unordered or not equal */ + LLVMRealPredicateTrue /**< Always true (always folded) */ +} LLVMRealPredicate; + +typedef enum { + LLVMLandingPadCatch, /**< A catch clause */ + LLVMLandingPadFilter /**< A filter clause */ +} LLVMLandingPadClauseTy; + +typedef enum { + LLVMNotThreadLocal = 0, + LLVMGeneralDynamicTLSModel, + LLVMLocalDynamicTLSModel, + LLVMInitialExecTLSModel, + LLVMLocalExecTLSModel +} LLVMThreadLocalMode; + +typedef enum { + LLVMAtomicOrderingNotAtomic = 0, /**< A load or store which is not atomic */ + LLVMAtomicOrderingUnordered = 1, /**< Lowest level of atomicity, guarantees + somewhat sane results, lock free. */ + LLVMAtomicOrderingMonotonic = 2, /**< guarantees that if you take all the + operations affecting a specific address, + a consistent ordering exists */ + LLVMAtomicOrderingAcquire = 4, /**< Acquire provides a barrier of the sort + necessary to acquire a lock to access other + memory with normal loads and stores. */ + LLVMAtomicOrderingRelease = 5, /**< Release is similar to Acquire, but with + a barrier of the sort necessary to release + a lock. */ + LLVMAtomicOrderingAcquireRelease = 6, /**< provides both an Acquire and a + Release barrier (for fences and + operations which both read and write + memory). */ + LLVMAtomicOrderingSequentiallyConsistent = 7 /**< provides Acquire semantics + for loads and Release + semantics for stores. + Additionally, it guarantees + that a total ordering exists + between all + SequentiallyConsistent + operations. */ +} LLVMAtomicOrdering; + +typedef enum { + LLVMAtomicRMWBinOpXchg, /**< Set the new value and return the one old */ + LLVMAtomicRMWBinOpAdd, /**< Add a value and return the old one */ + LLVMAtomicRMWBinOpSub, /**< Subtract a value and return the old one */ + LLVMAtomicRMWBinOpAnd, /**< And a value and return the old one */ + LLVMAtomicRMWBinOpNand, /**< Not-And a value and return the old one */ + LLVMAtomicRMWBinOpOr, /**< OR a value and return the old one */ + LLVMAtomicRMWBinOpXor, /**< Xor a value and return the old one */ + LLVMAtomicRMWBinOpMax, /**< Sets the value if it's greater than the + original using a signed comparison and return + the old one */ + LLVMAtomicRMWBinOpMin, /**< Sets the value if it's Smaller than the + original using a signed comparison and return + the old one */ + LLVMAtomicRMWBinOpUMax, /**< Sets the value if it's greater than the + original using an unsigned comparison and return + the old one */ + LLVMAtomicRMWBinOpUMin /**< Sets the value if it's greater than the + original using an unsigned comparison and return + the old one */ +} LLVMAtomicRMWBinOp; + +typedef enum { + LLVMDSError, + LLVMDSWarning, + LLVMDSRemark, + LLVMDSNote +} LLVMDiagnosticSeverity; + +typedef enum { + LLVMInlineAsmDialectATT, + LLVMInlineAsmDialectIntel +} LLVMInlineAsmDialect; + +typedef enum { + /** + * Emits an error if two values disagree, otherwise the resulting value is + * that of the operands. + * + * @see Module::ModFlagBehavior::Error + */ + LLVMModuleFlagBehaviorError, + /** + * Emits a warning if two values disagree. The result value will be the + * operand for the flag from the first module being linked. + * + * @see Module::ModFlagBehavior::Warning + */ + LLVMModuleFlagBehaviorWarning, + /** + * Adds a requirement that another module flag be present and have a + * specified value after linking is performed. The value must be a metadata + * pair, where the first element of the pair is the ID of the module flag + * to be restricted, and the second element of the pair is the value the + * module flag should be restricted to. This behavior can be used to + * restrict the allowable results (via triggering of an error) of linking + * IDs with the **Override** behavior. + * + * @see Module::ModFlagBehavior::Require + */ + LLVMModuleFlagBehaviorRequire, + /** + * Uses the specified value, regardless of the behavior or value of the + * other module. If both modules specify **Override**, but the values + * differ, an error will be emitted. + * + * @see Module::ModFlagBehavior::Override + */ + LLVMModuleFlagBehaviorOverride, + /** + * Appends the two values, which are required to be metadata nodes. + * + * @see Module::ModFlagBehavior::Append + */ + LLVMModuleFlagBehaviorAppend, + /** + * Appends the two values, which are required to be metadata + * nodes. However, duplicate entries in the second list are dropped + * during the append operation. + * + * @see Module::ModFlagBehavior::AppendUnique + */ + LLVMModuleFlagBehaviorAppendUnique, +} LLVMModuleFlagBehavior; + +/** + * Attribute index are either LLVMAttributeReturnIndex, + * LLVMAttributeFunctionIndex or a parameter number from 1 to N. + */ +enum { + LLVMAttributeReturnIndex = 0U, + // ISO C restricts enumerator values to range of 'int' + // (4294967295 is too large) + // LLVMAttributeFunctionIndex = ~0U, + LLVMAttributeFunctionIndex = -1, +}; + +typedef unsigned LLVMAttributeIndex; + +/** + * @} + */ + +void LLVMInitializeCore(LLVMPassRegistryRef R); + +/** Deallocate and destroy all ManagedStatic variables. + @see llvm::llvm_shutdown + @see ManagedStatic */ +void LLVMShutdown(void); + +/*===-- Error handling ----------------------------------------------------===*/ + +char *LLVMCreateMessage(const char *Message); +void LLVMDisposeMessage(char *Message); + +/** + * @defgroup LLVMCCoreContext Contexts + * + * Contexts are execution states for the core LLVM IR system. + * + * Most types are tied to a context instance. Multiple contexts can + * exist simultaneously. A single context is not thread safe. However, + * different contexts can execute on different threads simultaneously. + * + * @{ + */ + +typedef void (*LLVMDiagnosticHandler)(LLVMDiagnosticInfoRef, void *); +typedef void (*LLVMYieldCallback)(LLVMContextRef, void *); + +/** + * Create a new context. + * + * Every call to this function should be paired with a call to + * LLVMContextDispose() or the context will leak memory. + */ +LLVMContextRef LLVMContextCreate(void); + +/** + * Obtain the global context instance. + */ +LLVMContextRef LLVMGetGlobalContext(void); + +/** + * Set the diagnostic handler for this context. + */ +void LLVMContextSetDiagnosticHandler(LLVMContextRef C, + LLVMDiagnosticHandler Handler, + void *DiagnosticContext); + +/** + * Get the diagnostic handler of this context. + */ +LLVMDiagnosticHandler LLVMContextGetDiagnosticHandler(LLVMContextRef C); + +/** + * Get the diagnostic context of this context. + */ +void *LLVMContextGetDiagnosticContext(LLVMContextRef C); + +/** + * Set the yield callback function for this context. + * + * @see LLVMContext::setYieldCallback() + */ +void LLVMContextSetYieldCallback(LLVMContextRef C, LLVMYieldCallback Callback, + void *OpaqueHandle); + +/** + * Retrieve whether the given context is set to discard all value names. + * + * @see LLVMContext::shouldDiscardValueNames() + */ +LLVMBool LLVMContextShouldDiscardValueNames(LLVMContextRef C); + +/** + * Set whether the given context discards all value names. + * + * If true, only the names of GlobalValue objects will be available in the IR. + * This can be used to save memory and runtime, especially in release mode. + * + * @see LLVMContext::setDiscardValueNames() + */ +void LLVMContextSetDiscardValueNames(LLVMContextRef C, LLVMBool Discard); + +/** + * Destroy a context instance. + * + * This should be called for every call to LLVMContextCreate() or memory + * will be leaked. + */ +void LLVMContextDispose(LLVMContextRef C); + +/** + * Return a string representation of the DiagnosticInfo. Use + * LLVMDisposeMessage to free the string. + * + * @see DiagnosticInfo::print() + */ +char *LLVMGetDiagInfoDescription(LLVMDiagnosticInfoRef DI); + +/** + * Return an enum LLVMDiagnosticSeverity. + * + * @see DiagnosticInfo::getSeverity() + */ +LLVMDiagnosticSeverity LLVMGetDiagInfoSeverity(LLVMDiagnosticInfoRef DI); + +unsigned LLVMGetMDKindIDInContext(LLVMContextRef C, const char *Name, + unsigned SLen); +unsigned LLVMGetMDKindID(const char *Name, unsigned SLen); + +/** + * Return an unique id given the name of a enum attribute, + * or 0 if no attribute by that name exists. + * + * See http://llvm.org/docs/LangRef.html#parameter-attributes + * and http://llvm.org/docs/LangRef.html#function-attributes + * for the list of available attributes. + * + * NB: Attribute names and/or id are subject to change without + * going through the C API deprecation cycle. + */ +unsigned LLVMGetEnumAttributeKindForName(const char *Name, size_t SLen); +unsigned LLVMGetLastEnumAttributeKind(void); + +/** + * Create an enum attribute. + */ +LLVMAttributeRef LLVMCreateEnumAttribute(LLVMContextRef C, unsigned KindID, + uint64_t Val); + +/** + * Get the unique id corresponding to the enum attribute + * passed as argument. + */ +unsigned LLVMGetEnumAttributeKind(LLVMAttributeRef A); + +/** + * Get the enum attribute's value. 0 is returned if none exists. + */ +uint64_t LLVMGetEnumAttributeValue(LLVMAttributeRef A); + +/** + * Create a string attribute. + */ +LLVMAttributeRef LLVMCreateStringAttribute(LLVMContextRef C, + const char *K, unsigned KLength, + const char *V, unsigned VLength); + +/** + * Get the string attribute's kind. + */ +const char *LLVMGetStringAttributeKind(LLVMAttributeRef A, unsigned *Length); + +/** + * Get the string attribute's value. + */ +const char *LLVMGetStringAttributeValue(LLVMAttributeRef A, unsigned *Length); + +/** + * Check for the different types of attributes. + */ +LLVMBool LLVMIsEnumAttribute(LLVMAttributeRef A); +LLVMBool LLVMIsStringAttribute(LLVMAttributeRef A); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreModule Modules + * + * Modules represent the top-level structure in an LLVM program. An LLVM + * module is effectively a translation unit or a collection of + * translation units merged together. + * + * @{ + */ + +/** + * Create a new, empty module in the global context. + * + * This is equivalent to calling LLVMModuleCreateWithNameInContext with + * LLVMGetGlobalContext() as the context parameter. + * + * Every invocation should be paired with LLVMDisposeModule() or memory + * will be leaked. + */ +LLVMModuleRef LLVMModuleCreateWithName(const char *ModuleID); + +/** + * Create a new, empty module in a specific context. + * + * Every invocation should be paired with LLVMDisposeModule() or memory + * will be leaked. + */ +LLVMModuleRef LLVMModuleCreateWithNameInContext(const char *ModuleID, + LLVMContextRef C); +/** + * Return an exact copy of the specified module. + */ +LLVMModuleRef LLVMCloneModule(LLVMModuleRef M); + +/** + * Destroy a module instance. + * + * This must be called for every created module or memory will be + * leaked. + */ +void LLVMDisposeModule(LLVMModuleRef M); + +/** + * Obtain the identifier of a module. + * + * @param M Module to obtain identifier of + * @param Len Out parameter which holds the length of the returned string. + * @return The identifier of M. + * @see Module::getModuleIdentifier() + */ +const char *LLVMGetModuleIdentifier(LLVMModuleRef M, size_t *Len); + +/** + * Set the identifier of a module to a string Ident with length Len. + * + * @param M The module to set identifier + * @param Ident The string to set M's identifier to + * @param Len Length of Ident + * @see Module::setModuleIdentifier() + */ +void LLVMSetModuleIdentifier(LLVMModuleRef M, const char *Ident, size_t Len); + +/** + * Obtain the module's original source file name. + * + * @param M Module to obtain the name of + * @param Len Out parameter which holds the length of the returned string + * @return The original source file name of M + * @see Module::getSourceFileName() + */ +const char *LLVMGetSourceFileName(LLVMModuleRef M, size_t *Len); + +/** + * Set the original source file name of a module to a string Name with length + * Len. + * + * @param M The module to set the source file name of + * @param Name The string to set M's source file name to + * @param Len Length of Name + * @see Module::setSourceFileName() + */ +void LLVMSetSourceFileName(LLVMModuleRef M, const char *Name, size_t Len); + +/** + * Obtain the data layout for a module. + * + * @see Module::getDataLayoutStr() + * + * LLVMGetDataLayout is DEPRECATED, as the name is not only incorrect, + * but match the name of another method on the module. Prefer the use + * of LLVMGetDataLayoutStr, which is not ambiguous. + */ +const char *LLVMGetDataLayoutStr(LLVMModuleRef M); +const char *LLVMGetDataLayout(LLVMModuleRef M); + +/** + * Set the data layout for a module. + * + * @see Module::setDataLayout() + */ +void LLVMSetDataLayout(LLVMModuleRef M, const char *DataLayoutStr); + +/** + * Obtain the target triple for a module. + * + * @see Module::getTargetTriple() + */ +const char *LLVMGetTarget(LLVMModuleRef M); + +/** + * Set the target triple for a module. + * + * @see Module::setTargetTriple() + */ +void LLVMSetTarget(LLVMModuleRef M, const char *Triple); + +/** + * Returns the module flags as an array of flag-key-value triples. The caller + * is responsible for freeing this array by calling + * \c LLVMDisposeModuleFlagsMetadata. + * + * @see Module::getModuleFlagsMetadata() + */ +LLVMModuleFlagEntry *LLVMCopyModuleFlagsMetadata(LLVMModuleRef M, size_t *Len); + +/** + * Destroys module flags metadata entries. + */ +void LLVMDisposeModuleFlagsMetadata(LLVMModuleFlagEntry *Entries); + +/** + * Returns the flag behavior for a module flag entry at a specific index. + * + * @see Module::ModuleFlagEntry::Behavior + */ +LLVMModuleFlagBehavior +LLVMModuleFlagEntriesGetFlagBehavior(LLVMModuleFlagEntry *Entries, + unsigned Index); + +/** + * Returns the key for a module flag entry at a specific index. + * + * @see Module::ModuleFlagEntry::Key + */ +const char *LLVMModuleFlagEntriesGetKey(LLVMModuleFlagEntry *Entries, + unsigned Index, size_t *Len); + +/** + * Returns the metadata for a module flag entry at a specific index. + * + * @see Module::ModuleFlagEntry::Val + */ +LLVMMetadataRef LLVMModuleFlagEntriesGetMetadata(LLVMModuleFlagEntry *Entries, + unsigned Index); + +/** + * Add a module-level flag to the module-level flags metadata if it doesn't + * already exist. + * + * @see Module::getModuleFlag() + */ +LLVMMetadataRef LLVMGetModuleFlag(LLVMModuleRef M, + const char *Key, size_t KeyLen); + +/** + * Add a module-level flag to the module-level flags metadata if it doesn't + * already exist. + * + * @see Module::addModuleFlag() + */ +void LLVMAddModuleFlag(LLVMModuleRef M, LLVMModuleFlagBehavior Behavior, + const char *Key, size_t KeyLen, + LLVMMetadataRef Val); + +/** + * Dump a representation of a module to stderr. + * + * @see Module::dump() + */ +void LLVMDumpModule(LLVMModuleRef M); + +/** + * Print a representation of a module to a file. The ErrorMessage needs to be + * disposed with LLVMDisposeMessage. Returns 0 on success, 1 otherwise. + * + * @see Module::print() + */ +LLVMBool LLVMPrintModuleToFile(LLVMModuleRef M, const char *Filename, + char **ErrorMessage); + +/** + * Return a string representation of the module. Use + * LLVMDisposeMessage to free the string. + * + * @see Module::print() + */ +char *LLVMPrintModuleToString(LLVMModuleRef M); + +/** + * Get inline assembly for a module. + * + * @see Module::getModuleInlineAsm() + */ +const char *LLVMGetModuleInlineAsm(LLVMModuleRef M, size_t *Len); + +/** + * Set inline assembly for a module. + * + * @see Module::setModuleInlineAsm() + */ +void LLVMSetModuleInlineAsm2(LLVMModuleRef M, const char *Asm, size_t Len); + +/** + * Append inline assembly to a module. + * + * @see Module::appendModuleInlineAsm() + */ +void LLVMAppendModuleInlineAsm(LLVMModuleRef M, const char *Asm, size_t Len); + +/** + * Create the specified uniqued inline asm string. + * + * @see InlineAsm::get() + */ +LLVMValueRef LLVMGetInlineAsm(LLVMTypeRef Ty, + char *AsmString, size_t AsmStringSize, + char *Constraints, size_t ConstraintsSize, + LLVMBool HasSideEffects, LLVMBool IsAlignStack, + LLVMInlineAsmDialect Dialect); + +/** + * Obtain the context to which this module is associated. + * + * @see Module::getContext() + */ +LLVMContextRef LLVMGetModuleContext(LLVMModuleRef M); + +/** + * Obtain a Type from a module by its registered name. + */ +LLVMTypeRef LLVMGetTypeByName(LLVMModuleRef M, const char *Name); + +/** + * Obtain an iterator to the first NamedMDNode in a Module. + * + * @see llvm::Module::named_metadata_begin() + */ +LLVMNamedMDNodeRef LLVMGetFirstNamedMetadata(LLVMModuleRef M); + +/** + * Obtain an iterator to the last NamedMDNode in a Module. + * + * @see llvm::Module::named_metadata_end() + */ +LLVMNamedMDNodeRef LLVMGetLastNamedMetadata(LLVMModuleRef M); + +/** + * Advance a NamedMDNode iterator to the next NamedMDNode. + * + * Returns NULL if the iterator was already at the end and there are no more + * named metadata nodes. + */ +LLVMNamedMDNodeRef LLVMGetNextNamedMetadata(LLVMNamedMDNodeRef NamedMDNode); + +/** + * Decrement a NamedMDNode iterator to the previous NamedMDNode. + * + * Returns NULL if the iterator was already at the beginning and there are + * no previous named metadata nodes. + */ +LLVMNamedMDNodeRef LLVMGetPreviousNamedMetadata(LLVMNamedMDNodeRef NamedMDNode); + +/** + * Retrieve a NamedMDNode with the given name, returning NULL if no such + * node exists. + * + * @see llvm::Module::getNamedMetadata() + */ +LLVMNamedMDNodeRef LLVMGetNamedMetadata(LLVMModuleRef M, + const char *Name, size_t NameLen); + +/** + * Retrieve a NamedMDNode with the given name, creating a new node if no such + * node exists. + * + * @see llvm::Module::getOrInsertNamedMetadata() + */ +LLVMNamedMDNodeRef LLVMGetOrInsertNamedMetadata(LLVMModuleRef M, + const char *Name, + size_t NameLen); + +/** + * Retrieve the name of a NamedMDNode. + * + * @see llvm::NamedMDNode::getName() + */ +const char *LLVMGetNamedMetadataName(LLVMNamedMDNodeRef NamedMD, + size_t *NameLen); + +/** + * Obtain the number of operands for named metadata in a module. + * + * @see llvm::Module::getNamedMetadata() + */ +unsigned LLVMGetNamedMetadataNumOperands(LLVMModuleRef M, const char *Name); + +/** + * Obtain the named metadata operands for a module. + * + * The passed LLVMValueRef pointer should refer to an array of + * LLVMValueRef at least LLVMGetNamedMetadataNumOperands long. This + * array will be populated with the LLVMValueRef instances. Each + * instance corresponds to a llvm::MDNode. + * + * @see llvm::Module::getNamedMetadata() + * @see llvm::MDNode::getOperand() + */ +void LLVMGetNamedMetadataOperands(LLVMModuleRef M, const char *Name, + LLVMValueRef *Dest); + +/** + * Add an operand to named metadata. + * + * @see llvm::Module::getNamedMetadata() + * @see llvm::MDNode::addOperand() + */ +void LLVMAddNamedMetadataOperand(LLVMModuleRef M, const char *Name, + LLVMValueRef Val); + +/** + * Return the directory of the debug location for this value, which must be + * an llvm::Instruction, llvm::GlobalVariable, or llvm::Function. + * + * @see llvm::Instruction::getDebugLoc() + * @see llvm::GlobalVariable::getDebugInfo() + * @see llvm::Function::getSubprogram() + */ +const char *LLVMGetDebugLocDirectory(LLVMValueRef Val, unsigned *Length); + +/** + * Return the filename of the debug location for this value, which must be + * an llvm::Instruction, llvm::GlobalVariable, or llvm::Function. + * + * @see llvm::Instruction::getDebugLoc() + * @see llvm::GlobalVariable::getDebugInfo() + * @see llvm::Function::getSubprogram() + */ +const char *LLVMGetDebugLocFilename(LLVMValueRef Val, unsigned *Length); + +/** + * Return the line number of the debug location for this value, which must be + * an llvm::Instruction, llvm::GlobalVariable, or llvm::Function. + * + * @see llvm::Instruction::getDebugLoc() + * @see llvm::GlobalVariable::getDebugInfo() + * @see llvm::Function::getSubprogram() + */ +unsigned LLVMGetDebugLocLine(LLVMValueRef Val); + +/** + * Return the column number of the debug location for this value, which must be + * an llvm::Instruction. + * + * @see llvm::Instruction::getDebugLoc() + */ +unsigned LLVMGetDebugLocColumn(LLVMValueRef Val); + +/** + * Add a function to a module under a specified name. + * + * @see llvm::Function::Create() + */ +LLVMValueRef LLVMAddFunction(LLVMModuleRef M, const char *Name, + LLVMTypeRef FunctionTy); + +/** + * Obtain a Function value from a Module by its name. + * + * The returned value corresponds to a llvm::Function value. + * + * @see llvm::Module::getFunction() + */ +LLVMValueRef LLVMGetNamedFunction(LLVMModuleRef M, const char *Name); + +/** + * Obtain an iterator to the first Function in a Module. + * + * @see llvm::Module::begin() + */ +LLVMValueRef LLVMGetFirstFunction(LLVMModuleRef M); + +/** + * Obtain an iterator to the last Function in a Module. + * + * @see llvm::Module::end() + */ +LLVMValueRef LLVMGetLastFunction(LLVMModuleRef M); + +/** + * Advance a Function iterator to the next Function. + * + * Returns NULL if the iterator was already at the end and there are no more + * functions. + */ +LLVMValueRef LLVMGetNextFunction(LLVMValueRef Fn); + +/** + * Decrement a Function iterator to the previous Function. + * + * Returns NULL if the iterator was already at the beginning and there are + * no previous functions. + */ +LLVMValueRef LLVMGetPreviousFunction(LLVMValueRef Fn); + +/** Deprecated: Use LLVMSetModuleInlineAsm2 instead. */ +void LLVMSetModuleInlineAsm(LLVMModuleRef M, const char *Asm); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreType Types + * + * Types represent the type of a value. + * + * Types are associated with a context instance. The context internally + * deduplicates types so there is only 1 instance of a specific type + * alive at a time. In other words, a unique type is shared among all + * consumers within a context. + * + * A Type in the C API corresponds to llvm::Type. + * + * Types have the following hierarchy: + * + * types: + * integer type + * real type + * function type + * sequence types: + * array type + * pointer type + * vector type + * void type + * label type + * opaque type + * + * @{ + */ + +/** + * Obtain the enumerated type of a Type instance. + * + * @see llvm::Type:getTypeID() + */ +LLVMTypeKind LLVMGetTypeKind(LLVMTypeRef Ty); + +/** + * Whether the type has a known size. + * + * Things that don't have a size are abstract types, labels, and void.a + * + * @see llvm::Type::isSized() + */ +LLVMBool LLVMTypeIsSized(LLVMTypeRef Ty); + +/** + * Obtain the context to which this type instance is associated. + * + * @see llvm::Type::getContext() + */ +LLVMContextRef LLVMGetTypeContext(LLVMTypeRef Ty); + +/** + * Dump a representation of a type to stderr. + * + * @see llvm::Type::dump() + */ +void LLVMDumpType(LLVMTypeRef Val); + +/** + * Return a string representation of the type. Use + * LLVMDisposeMessage to free the string. + * + * @see llvm::Type::print() + */ +char *LLVMPrintTypeToString(LLVMTypeRef Val); + +/** + * @defgroup LLVMCCoreTypeInt Integer Types + * + * Functions in this section operate on integer types. + * + * @{ + */ + +/** + * Obtain an integer type from a context with specified bit width. + */ +LLVMTypeRef LLVMInt1TypeInContext(LLVMContextRef C); +LLVMTypeRef LLVMInt8TypeInContext(LLVMContextRef C); +LLVMTypeRef LLVMInt16TypeInContext(LLVMContextRef C); +LLVMTypeRef LLVMInt32TypeInContext(LLVMContextRef C); +LLVMTypeRef LLVMInt64TypeInContext(LLVMContextRef C); +LLVMTypeRef LLVMInt128TypeInContext(LLVMContextRef C); +LLVMTypeRef LLVMIntTypeInContext(LLVMContextRef C, unsigned NumBits); + +/** + * Obtain an integer type from the global context with a specified bit + * width. + */ +LLVMTypeRef LLVMInt1Type(void); +LLVMTypeRef LLVMInt8Type(void); +LLVMTypeRef LLVMInt16Type(void); +LLVMTypeRef LLVMInt32Type(void); +LLVMTypeRef LLVMInt64Type(void); +LLVMTypeRef LLVMInt128Type(void); +LLVMTypeRef LLVMIntType(unsigned NumBits); +unsigned LLVMGetIntTypeWidth(LLVMTypeRef IntegerTy); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreTypeFloat Floating Point Types + * + * @{ + */ + +/** + * Obtain a 16-bit floating point type from a context. + */ +LLVMTypeRef LLVMHalfTypeInContext(LLVMContextRef C); + +/** + * Obtain a 32-bit floating point type from a context. + */ +LLVMTypeRef LLVMFloatTypeInContext(LLVMContextRef C); + +/** + * Obtain a 64-bit floating point type from a context. + */ +LLVMTypeRef LLVMDoubleTypeInContext(LLVMContextRef C); + +/** + * Obtain a 80-bit floating point type (X87) from a context. + */ +LLVMTypeRef LLVMX86FP80TypeInContext(LLVMContextRef C); + +/** + * Obtain a 128-bit floating point type (112-bit mantissa) from a + * context. + */ +LLVMTypeRef LLVMFP128TypeInContext(LLVMContextRef C); + +/** + * Obtain a 128-bit floating point type (two 64-bits) from a context. + */ +LLVMTypeRef LLVMPPCFP128TypeInContext(LLVMContextRef C); + +/** + * Obtain a floating point type from the global context. + * + * These map to the functions in this group of the same name. + */ +LLVMTypeRef LLVMHalfType(void); +LLVMTypeRef LLVMFloatType(void); +LLVMTypeRef LLVMDoubleType(void); +LLVMTypeRef LLVMX86FP80Type(void); +LLVMTypeRef LLVMFP128Type(void); +LLVMTypeRef LLVMPPCFP128Type(void); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreTypeFunction Function Types + * + * @{ + */ + +/** + * Obtain a function type consisting of a specified signature. + * + * The function is defined as a tuple of a return Type, a list of + * parameter types, and whether the function is variadic. + */ +LLVMTypeRef LLVMFunctionType(LLVMTypeRef ReturnType, + LLVMTypeRef *ParamTypes, unsigned ParamCount, + LLVMBool IsVarArg); + +/** + * Returns whether a function type is variadic. + */ +LLVMBool LLVMIsFunctionVarArg(LLVMTypeRef FunctionTy); + +/** + * Obtain the Type this function Type returns. + */ +LLVMTypeRef LLVMGetReturnType(LLVMTypeRef FunctionTy); + +/** + * Obtain the number of parameters this function accepts. + */ +unsigned LLVMCountParamTypes(LLVMTypeRef FunctionTy); + +/** + * Obtain the types of a function's parameters. + * + * The Dest parameter should point to a pre-allocated array of + * LLVMTypeRef at least LLVMCountParamTypes() large. On return, the + * first LLVMCountParamTypes() entries in the array will be populated + * with LLVMTypeRef instances. + * + * @param FunctionTy The function type to operate on. + * @param Dest Memory address of an array to be filled with result. + */ +void LLVMGetParamTypes(LLVMTypeRef FunctionTy, LLVMTypeRef *Dest); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreTypeStruct Structure Types + * + * These functions relate to LLVMTypeRef instances. + * + * @see llvm::StructType + * + * @{ + */ + +/** + * Create a new structure type in a context. + * + * A structure is specified by a list of inner elements/types and + * whether these can be packed together. + * + * @see llvm::StructType::create() + */ +LLVMTypeRef LLVMStructTypeInContext(LLVMContextRef C, LLVMTypeRef *ElementTypes, + unsigned ElementCount, LLVMBool Packed); + +/** + * Create a new structure type in the global context. + * + * @see llvm::StructType::create() + */ +LLVMTypeRef LLVMStructType(LLVMTypeRef *ElementTypes, unsigned ElementCount, + LLVMBool Packed); + +/** + * Create an empty structure in a context having a specified name. + * + * @see llvm::StructType::create() + */ +LLVMTypeRef LLVMStructCreateNamed(LLVMContextRef C, const char *Name); + +/** + * Obtain the name of a structure. + * + * @see llvm::StructType::getName() + */ +const char *LLVMGetStructName(LLVMTypeRef Ty); + +/** + * Set the contents of a structure type. + * + * @see llvm::StructType::setBody() + */ +void LLVMStructSetBody(LLVMTypeRef StructTy, LLVMTypeRef *ElementTypes, + unsigned ElementCount, LLVMBool Packed); + +/** + * Get the number of elements defined inside the structure. + * + * @see llvm::StructType::getNumElements() + */ +unsigned LLVMCountStructElementTypes(LLVMTypeRef StructTy); + +/** + * Get the elements within a structure. + * + * The function is passed the address of a pre-allocated array of + * LLVMTypeRef at least LLVMCountStructElementTypes() long. After + * invocation, this array will be populated with the structure's + * elements. The objects in the destination array will have a lifetime + * of the structure type itself, which is the lifetime of the context it + * is contained in. + */ +void LLVMGetStructElementTypes(LLVMTypeRef StructTy, LLVMTypeRef *Dest); + +/** + * Get the type of the element at a given index in the structure. + * + * @see llvm::StructType::getTypeAtIndex() + */ +LLVMTypeRef LLVMStructGetTypeAtIndex(LLVMTypeRef StructTy, unsigned i); + +/** + * Determine whether a structure is packed. + * + * @see llvm::StructType::isPacked() + */ +LLVMBool LLVMIsPackedStruct(LLVMTypeRef StructTy); + +/** + * Determine whether a structure is opaque. + * + * @see llvm::StructType::isOpaque() + */ +LLVMBool LLVMIsOpaqueStruct(LLVMTypeRef StructTy); + +/** + * Determine whether a structure is literal. + * + * @see llvm::StructType::isLiteral() + */ +LLVMBool LLVMIsLiteralStruct(LLVMTypeRef StructTy); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreTypeSequential Sequential Types + * + * Sequential types represents "arrays" of types. This is a super class + * for array, vector, and pointer types. + * + * @{ + */ + +/** + * Obtain the type of elements within a sequential type. + * + * This works on array, vector, and pointer types. + * + * @see llvm::SequentialType::getElementType() + */ +LLVMTypeRef LLVMGetElementType(LLVMTypeRef Ty); + +/** + * Returns type's subtypes + * + * @see llvm::Type::subtypes() + */ +void LLVMGetSubtypes(LLVMTypeRef Tp, LLVMTypeRef *Arr); + +/** + * Return the number of types in the derived type. + * + * @see llvm::Type::getNumContainedTypes() + */ +unsigned LLVMGetNumContainedTypes(LLVMTypeRef Tp); + +/** + * Create a fixed size array type that refers to a specific type. + * + * The created type will exist in the context that its element type + * exists in. + * + * @see llvm::ArrayType::get() + */ +LLVMTypeRef LLVMArrayType(LLVMTypeRef ElementType, unsigned ElementCount); + +/** + * Obtain the length of an array type. + * + * This only works on types that represent arrays. + * + * @see llvm::ArrayType::getNumElements() + */ +unsigned LLVMGetArrayLength(LLVMTypeRef ArrayTy); + +/** + * Create a pointer type that points to a defined type. + * + * The created type will exist in the context that its pointee type + * exists in. + * + * @see llvm::PointerType::get() + */ +LLVMTypeRef LLVMPointerType(LLVMTypeRef ElementType, unsigned AddressSpace); + +/** + * Obtain the address space of a pointer type. + * + * This only works on types that represent pointers. + * + * @see llvm::PointerType::getAddressSpace() + */ +unsigned LLVMGetPointerAddressSpace(LLVMTypeRef PointerTy); + +/** + * Create a vector type that contains a defined type and has a specific + * number of elements. + * + * The created type will exist in the context thats its element type + * exists in. + * + * @see llvm::VectorType::get() + */ +LLVMTypeRef LLVMVectorType(LLVMTypeRef ElementType, unsigned ElementCount); + +/** + * Obtain the number of elements in a vector type. + * + * This only works on types that represent vectors. + * + * @see llvm::VectorType::getNumElements() + */ +unsigned LLVMGetVectorSize(LLVMTypeRef VectorTy); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreTypeOther Other Types + * + * @{ + */ + +/** + * Create a void type in a context. + */ +LLVMTypeRef LLVMVoidTypeInContext(LLVMContextRef C); + +/** + * Create a label type in a context. + */ +LLVMTypeRef LLVMLabelTypeInContext(LLVMContextRef C); + +/** + * Create a X86 MMX type in a context. + */ +LLVMTypeRef LLVMX86MMXTypeInContext(LLVMContextRef C); + +/** + * Create a token type in a context. + */ +LLVMTypeRef LLVMTokenTypeInContext(LLVMContextRef C); + +/** + * Create a metadata type in a context. + */ +LLVMTypeRef LLVMMetadataTypeInContext(LLVMContextRef C); + +/** + * These are similar to the above functions except they operate on the + * global context. + */ +LLVMTypeRef LLVMVoidType(void); +LLVMTypeRef LLVMLabelType(void); +LLVMTypeRef LLVMX86MMXType(void); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValues Values + * + * The bulk of LLVM's object model consists of values, which comprise a very + * rich type hierarchy. + * + * LLVMValueRef essentially represents llvm::Value. There is a rich + * hierarchy of classes within this type. Depending on the instance + * obtained, not all APIs are available. + * + * Callers can determine the type of an LLVMValueRef by calling the + * LLVMIsA* family of functions (e.g. LLVMIsAArgument()). These + * functions are defined by a macro, so it isn't obvious which are + * available by looking at the Doxygen source code. Instead, look at the + * source definition of LLVM_FOR_EACH_VALUE_SUBCLASS and note the list + * of value names given. These value names also correspond to classes in + * the llvm::Value hierarchy. + * + * @{ + */ + +#define LLVM_FOR_EACH_VALUE_SUBCLASS(macro) \ + macro(Argument) \ + macro(BasicBlock) \ + macro(InlineAsm) \ + macro(User) \ + macro(Constant) \ + macro(BlockAddress) \ + macro(ConstantAggregateZero) \ + macro(ConstantArray) \ + macro(ConstantDataSequential) \ + macro(ConstantDataArray) \ + macro(ConstantDataVector) \ + macro(ConstantExpr) \ + macro(ConstantFP) \ + macro(ConstantInt) \ + macro(ConstantPointerNull) \ + macro(ConstantStruct) \ + macro(ConstantTokenNone) \ + macro(ConstantVector) \ + macro(GlobalValue) \ + macro(GlobalAlias) \ + macro(GlobalIFunc) \ + macro(GlobalObject) \ + macro(Function) \ + macro(GlobalVariable) \ + macro(UndefValue) \ + macro(Instruction) \ + macro(BinaryOperator) \ + macro(CallInst) \ + macro(IntrinsicInst) \ + macro(DbgInfoIntrinsic) \ + macro(DbgVariableIntrinsic) \ + macro(DbgDeclareInst) \ + macro(DbgLabelInst) \ + macro(MemIntrinsic) \ + macro(MemCpyInst) \ + macro(MemMoveInst) \ + macro(MemSetInst) \ + macro(CmpInst) \ + macro(FCmpInst) \ + macro(ICmpInst) \ + macro(ExtractElementInst) \ + macro(GetElementPtrInst) \ + macro(InsertElementInst) \ + macro(InsertValueInst) \ + macro(LandingPadInst) \ + macro(PHINode) \ + macro(SelectInst) \ + macro(ShuffleVectorInst) \ + macro(StoreInst) \ + macro(BranchInst) \ + macro(IndirectBrInst) \ + macro(InvokeInst) \ + macro(ReturnInst) \ + macro(SwitchInst) \ + macro(UnreachableInst) \ + macro(ResumeInst) \ + macro(CleanupReturnInst) \ + macro(CatchReturnInst) \ + macro(FuncletPadInst) \ + macro(CatchPadInst) \ + macro(CleanupPadInst) \ + macro(UnaryInstruction) \ + macro(AllocaInst) \ + macro(CastInst) \ + macro(AddrSpaceCastInst) \ + macro(BitCastInst) \ + macro(FPExtInst) \ + macro(FPToSIInst) \ + macro(FPToUIInst) \ + macro(FPTruncInst) \ + macro(IntToPtrInst) \ + macro(PtrToIntInst) \ + macro(SExtInst) \ + macro(SIToFPInst) \ + macro(TruncInst) \ + macro(UIToFPInst) \ + macro(ZExtInst) \ + macro(ExtractValueInst) \ + macro(LoadInst) \ + macro(VAArgInst) + +/** + * @defgroup LLVMCCoreValueGeneral General APIs + * + * Functions in this section work on all LLVMValueRef instances, + * regardless of their sub-type. They correspond to functions available + * on llvm::Value. + * + * @{ + */ + +/** + * Obtain the type of a value. + * + * @see llvm::Value::getType() + */ +LLVMTypeRef LLVMTypeOf(LLVMValueRef Val); + +/** + * Obtain the enumerated type of a Value instance. + * + * @see llvm::Value::getValueID() + */ +LLVMValueKind LLVMGetValueKind(LLVMValueRef Val); + +/** + * Obtain the string name of a value. + * + * @see llvm::Value::getName() + */ +const char *LLVMGetValueName2(LLVMValueRef Val, size_t *Length); + +/** + * Set the string name of a value. + * + * @see llvm::Value::setName() + */ +void LLVMSetValueName2(LLVMValueRef Val, const char *Name, size_t NameLen); + +/** + * Dump a representation of a value to stderr. + * + * @see llvm::Value::dump() + */ +void LLVMDumpValue(LLVMValueRef Val); + +/** + * Return a string representation of the value. Use + * LLVMDisposeMessage to free the string. + * + * @see llvm::Value::print() + */ +char *LLVMPrintValueToString(LLVMValueRef Val); + +/** + * Replace all uses of a value with another one. + * + * @see llvm::Value::replaceAllUsesWith() + */ +void LLVMReplaceAllUsesWith(LLVMValueRef OldVal, LLVMValueRef NewVal); + +/** + * Determine whether the specified value instance is constant. + */ +LLVMBool LLVMIsConstant(LLVMValueRef Val); + +/** + * Determine whether a value instance is undefined. + */ +LLVMBool LLVMIsUndef(LLVMValueRef Val); + +/** + * Convert value instances between types. + * + * Internally, an LLVMValueRef is "pinned" to a specific type. This + * series of functions allows you to cast an instance to a specific + * type. + * + * If the cast is not valid for the specified type, NULL is returned. + * + * @see llvm::dyn_cast_or_null<> + */ +#define LLVM_DECLARE_VALUE_CAST(name) \ + LLVMValueRef LLVMIsA##name(LLVMValueRef Val); +LLVM_FOR_EACH_VALUE_SUBCLASS(LLVM_DECLARE_VALUE_CAST) + +LLVMValueRef LLVMIsAMDNode(LLVMValueRef Val); +LLVMValueRef LLVMIsAMDString(LLVMValueRef Val); + +/** Deprecated: Use LLVMGetValueName2 instead. */ +const char *LLVMGetValueName(LLVMValueRef Val); +/** Deprecated: Use LLVMSetValueName2 instead. */ +void LLVMSetValueName(LLVMValueRef Val, const char *Name); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueUses Usage + * + * This module defines functions that allow you to inspect the uses of a + * LLVMValueRef. + * + * It is possible to obtain an LLVMUseRef for any LLVMValueRef instance. + * Each LLVMUseRef (which corresponds to a llvm::Use instance) holds a + * llvm::User and llvm::Value. + * + * @{ + */ + +/** + * Obtain the first use of a value. + * + * Uses are obtained in an iterator fashion. First, call this function + * to obtain a reference to the first use. Then, call LLVMGetNextUse() + * on that instance and all subsequently obtained instances until + * LLVMGetNextUse() returns NULL. + * + * @see llvm::Value::use_begin() + */ +LLVMUseRef LLVMGetFirstUse(LLVMValueRef Val); + +/** + * Obtain the next use of a value. + * + * This effectively advances the iterator. It returns NULL if you are on + * the final use and no more are available. + */ +LLVMUseRef LLVMGetNextUse(LLVMUseRef U); + +/** + * Obtain the user value for a user. + * + * The returned value corresponds to a llvm::User type. + * + * @see llvm::Use::getUser() + */ +LLVMValueRef LLVMGetUser(LLVMUseRef U); + +/** + * Obtain the value this use corresponds to. + * + * @see llvm::Use::get(). + */ +LLVMValueRef LLVMGetUsedValue(LLVMUseRef U); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueUser User value + * + * Function in this group pertain to LLVMValueRef instances that descent + * from llvm::User. This includes constants, instructions, and + * operators. + * + * @{ + */ + +/** + * Obtain an operand at a specific index in a llvm::User value. + * + * @see llvm::User::getOperand() + */ +LLVMValueRef LLVMGetOperand(LLVMValueRef Val, unsigned Index); + +/** + * Obtain the use of an operand at a specific index in a llvm::User value. + * + * @see llvm::User::getOperandUse() + */ +LLVMUseRef LLVMGetOperandUse(LLVMValueRef Val, unsigned Index); + +/** + * Set an operand at a specific index in a llvm::User value. + * + * @see llvm::User::setOperand() + */ +void LLVMSetOperand(LLVMValueRef User, unsigned Index, LLVMValueRef Val); + +/** + * Obtain the number of operands in a llvm::User value. + * + * @see llvm::User::getNumOperands() + */ +int LLVMGetNumOperands(LLVMValueRef Val); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueConstant Constants + * + * This section contains APIs for interacting with LLVMValueRef that + * correspond to llvm::Constant instances. + * + * These functions will work for any LLVMValueRef in the llvm::Constant + * class hierarchy. + * + * @{ + */ + +/** + * Obtain a constant value referring to the null instance of a type. + * + * @see llvm::Constant::getNullValue() + */ +LLVMValueRef LLVMConstNull(LLVMTypeRef Ty); /* all zeroes */ + +/** + * Obtain a constant value referring to the instance of a type + * consisting of all ones. + * + * This is only valid for integer types. + * + * @see llvm::Constant::getAllOnesValue() + */ +LLVMValueRef LLVMConstAllOnes(LLVMTypeRef Ty); + +/** + * Obtain a constant value referring to an undefined value of a type. + * + * @see llvm::UndefValue::get() + */ +LLVMValueRef LLVMGetUndef(LLVMTypeRef Ty); + +/** + * Determine whether a value instance is null. + * + * @see llvm::Constant::isNullValue() + */ +LLVMBool LLVMIsNull(LLVMValueRef Val); + +/** + * Obtain a constant that is a constant pointer pointing to NULL for a + * specified type. + */ +LLVMValueRef LLVMConstPointerNull(LLVMTypeRef Ty); + +/** + * @defgroup LLVMCCoreValueConstantScalar Scalar constants + * + * Functions in this group model LLVMValueRef instances that correspond + * to constants referring to scalar types. + * + * For integer types, the LLVMTypeRef parameter should correspond to a + * llvm::IntegerType instance and the returned LLVMValueRef will + * correspond to a llvm::ConstantInt. + * + * For floating point types, the LLVMTypeRef returned corresponds to a + * llvm::ConstantFP. + * + * @{ + */ + +/** + * Obtain a constant value for an integer type. + * + * The returned value corresponds to a llvm::ConstantInt. + * + * @see llvm::ConstantInt::get() + * + * @param IntTy Integer type to obtain value of. + * @param N The value the returned instance should refer to. + * @param SignExtend Whether to sign extend the produced value. + */ +LLVMValueRef LLVMConstInt(LLVMTypeRef IntTy, unsigned long long N, + LLVMBool SignExtend); + +/** + * Obtain a constant value for an integer of arbitrary precision. + * + * @see llvm::ConstantInt::get() + */ +LLVMValueRef LLVMConstIntOfArbitraryPrecision(LLVMTypeRef IntTy, + unsigned NumWords, + const uint64_t Words[]); + +/** + * Obtain a constant value for an integer parsed from a string. + * + * A similar API, LLVMConstIntOfStringAndSize is also available. If the + * string's length is available, it is preferred to call that function + * instead. + * + * @see llvm::ConstantInt::get() + */ +LLVMValueRef LLVMConstIntOfString(LLVMTypeRef IntTy, const char *Text, + uint8_t Radix); + +/** + * Obtain a constant value for an integer parsed from a string with + * specified length. + * + * @see llvm::ConstantInt::get() + */ +LLVMValueRef LLVMConstIntOfStringAndSize(LLVMTypeRef IntTy, const char *Text, + unsigned SLen, uint8_t Radix); + +/** + * Obtain a constant value referring to a double floating point value. + */ +LLVMValueRef LLVMConstReal(LLVMTypeRef RealTy, double N); + +/** + * Obtain a constant for a floating point value parsed from a string. + * + * A similar API, LLVMConstRealOfStringAndSize is also available. It + * should be used if the input string's length is known. + */ +LLVMValueRef LLVMConstRealOfString(LLVMTypeRef RealTy, const char *Text); + +/** + * Obtain a constant for a floating point value parsed from a string. + */ +LLVMValueRef LLVMConstRealOfStringAndSize(LLVMTypeRef RealTy, const char *Text, + unsigned SLen); + +/** + * Obtain the zero extended value for an integer constant value. + * + * @see llvm::ConstantInt::getZExtValue() + */ +unsigned long long LLVMConstIntGetZExtValue(LLVMValueRef ConstantVal); + +/** + * Obtain the sign extended value for an integer constant value. + * + * @see llvm::ConstantInt::getSExtValue() + */ +long long LLVMConstIntGetSExtValue(LLVMValueRef ConstantVal); + +/** + * Obtain the double value for an floating point constant value. + * losesInfo indicates if some precision was lost in the conversion. + * + * @see llvm::ConstantFP::getDoubleValue + */ +double LLVMConstRealGetDouble(LLVMValueRef ConstantVal, LLVMBool *losesInfo); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueConstantComposite Composite Constants + * + * Functions in this group operate on composite constants. + * + * @{ + */ + +/** + * Create a ConstantDataSequential and initialize it with a string. + * + * @see llvm::ConstantDataArray::getString() + */ +LLVMValueRef LLVMConstStringInContext(LLVMContextRef C, const char *Str, + unsigned Length, LLVMBool DontNullTerminate); + +/** + * Create a ConstantDataSequential with string content in the global context. + * + * This is the same as LLVMConstStringInContext except it operates on the + * global context. + * + * @see LLVMConstStringInContext() + * @see llvm::ConstantDataArray::getString() + */ +LLVMValueRef LLVMConstString(const char *Str, unsigned Length, + LLVMBool DontNullTerminate); + +/** + * Returns true if the specified constant is an array of i8. + * + * @see ConstantDataSequential::getAsString() + */ +LLVMBool LLVMIsConstantString(LLVMValueRef c); + +/** + * Get the given constant data sequential as a string. + * + * @see ConstantDataSequential::getAsString() + */ +const char *LLVMGetAsString(LLVMValueRef c, size_t *Length); + +/** + * Create an anonymous ConstantStruct with the specified values. + * + * @see llvm::ConstantStruct::getAnon() + */ +LLVMValueRef LLVMConstStructInContext(LLVMContextRef C, + LLVMValueRef *ConstantVals, + unsigned Count, LLVMBool Packed); + +/** + * Create a ConstantStruct in the global Context. + * + * This is the same as LLVMConstStructInContext except it operates on the + * global Context. + * + * @see LLVMConstStructInContext() + */ +LLVMValueRef LLVMConstStruct(LLVMValueRef *ConstantVals, unsigned Count, + LLVMBool Packed); + +/** + * Create a ConstantArray from values. + * + * @see llvm::ConstantArray::get() + */ +LLVMValueRef LLVMConstArray(LLVMTypeRef ElementTy, + LLVMValueRef *ConstantVals, unsigned Length); + +/** + * Create a non-anonymous ConstantStruct from values. + * + * @see llvm::ConstantStruct::get() + */ +LLVMValueRef LLVMConstNamedStruct(LLVMTypeRef StructTy, + LLVMValueRef *ConstantVals, + unsigned Count); + +/** + * Get an element at specified index as a constant. + * + * @see ConstantDataSequential::getElementAsConstant() + */ +LLVMValueRef LLVMGetElementAsConstant(LLVMValueRef C, unsigned idx); + +/** + * Create a ConstantVector from values. + * + * @see llvm::ConstantVector::get() + */ +LLVMValueRef LLVMConstVector(LLVMValueRef *ScalarConstantVals, unsigned Size); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueConstantExpressions Constant Expressions + * + * Functions in this group correspond to APIs on llvm::ConstantExpr. + * + * @see llvm::ConstantExpr. + * + * @{ + */ +LLVMOpcode LLVMGetConstOpcode(LLVMValueRef ConstantVal); +LLVMValueRef LLVMAlignOf(LLVMTypeRef Ty); +LLVMValueRef LLVMSizeOf(LLVMTypeRef Ty); +LLVMValueRef LLVMConstNeg(LLVMValueRef ConstantVal); +LLVMValueRef LLVMConstNSWNeg(LLVMValueRef ConstantVal); +LLVMValueRef LLVMConstNUWNeg(LLVMValueRef ConstantVal); +LLVMValueRef LLVMConstFNeg(LLVMValueRef ConstantVal); +LLVMValueRef LLVMConstNot(LLVMValueRef ConstantVal); +LLVMValueRef LLVMConstAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstNSWAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstNUWAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstFAdd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstNSWSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstNUWSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstFSub(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstNSWMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstNUWMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstFMul(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstUDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstExactUDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstSDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstExactSDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstFDiv(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstURem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstSRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstFRem(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstAnd(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstOr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstXor(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstICmp(LLVMIntPredicate Predicate, + LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstFCmp(LLVMRealPredicate Predicate, + LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstShl(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstLShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstAShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); +LLVMValueRef LLVMConstGEP(LLVMValueRef ConstantVal, + LLVMValueRef *ConstantIndices, unsigned NumIndices); +LLVMValueRef LLVMConstGEP2(LLVMTypeRef Ty, LLVMValueRef ConstantVal, + LLVMValueRef *ConstantIndices, unsigned NumIndices); +LLVMValueRef LLVMConstInBoundsGEP(LLVMValueRef ConstantVal, + LLVMValueRef *ConstantIndices, + unsigned NumIndices); +LLVMValueRef LLVMConstInBoundsGEP2(LLVMTypeRef Ty, LLVMValueRef ConstantVal, + LLVMValueRef *ConstantIndices, + unsigned NumIndices); +LLVMValueRef LLVMConstTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstSExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstZExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstFPTrunc(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstFPExt(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstUIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstSIToFP(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstFPToUI(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstFPToSI(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstPtrToInt(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstIntToPtr(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstBitCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstAddrSpaceCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstZExtOrBitCast(LLVMValueRef ConstantVal, + LLVMTypeRef ToType); +LLVMValueRef LLVMConstSExtOrBitCast(LLVMValueRef ConstantVal, + LLVMTypeRef ToType); +LLVMValueRef LLVMConstTruncOrBitCast(LLVMValueRef ConstantVal, + LLVMTypeRef ToType); +LLVMValueRef LLVMConstPointerCast(LLVMValueRef ConstantVal, + LLVMTypeRef ToType); +LLVMValueRef LLVMConstIntCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType, + LLVMBool isSigned); +LLVMValueRef LLVMConstFPCast(LLVMValueRef ConstantVal, LLVMTypeRef ToType); +LLVMValueRef LLVMConstSelect(LLVMValueRef ConstantCondition, + LLVMValueRef ConstantIfTrue, + LLVMValueRef ConstantIfFalse); +LLVMValueRef LLVMConstExtractElement(LLVMValueRef VectorConstant, + LLVMValueRef IndexConstant); +LLVMValueRef LLVMConstInsertElement(LLVMValueRef VectorConstant, + LLVMValueRef ElementValueConstant, + LLVMValueRef IndexConstant); +LLVMValueRef LLVMConstShuffleVector(LLVMValueRef VectorAConstant, + LLVMValueRef VectorBConstant, + LLVMValueRef MaskConstant); +LLVMValueRef LLVMConstExtractValue(LLVMValueRef AggConstant, unsigned *IdxList, + unsigned NumIdx); +LLVMValueRef LLVMConstInsertValue(LLVMValueRef AggConstant, + LLVMValueRef ElementValueConstant, + unsigned *IdxList, unsigned NumIdx); +LLVMValueRef LLVMBlockAddress(LLVMValueRef F, LLVMBasicBlockRef BB); + +/** Deprecated: Use LLVMGetInlineAsm instead. */ +LLVMValueRef LLVMConstInlineAsm(LLVMTypeRef Ty, + const char *AsmString, const char *Constraints, + LLVMBool HasSideEffects, LLVMBool IsAlignStack); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueConstantGlobals Global Values + * + * This group contains functions that operate on global values. Functions in + * this group relate to functions in the llvm::GlobalValue class tree. + * + * @see llvm::GlobalValue + * + * @{ + */ + +LLVMModuleRef LLVMGetGlobalParent(LLVMValueRef Global); +LLVMBool LLVMIsDeclaration(LLVMValueRef Global); +LLVMLinkage LLVMGetLinkage(LLVMValueRef Global); +void LLVMSetLinkage(LLVMValueRef Global, LLVMLinkage Linkage); +const char *LLVMGetSection(LLVMValueRef Global); +void LLVMSetSection(LLVMValueRef Global, const char *Section); +LLVMVisibility LLVMGetVisibility(LLVMValueRef Global); +void LLVMSetVisibility(LLVMValueRef Global, LLVMVisibility Viz); +LLVMDLLStorageClass LLVMGetDLLStorageClass(LLVMValueRef Global); +void LLVMSetDLLStorageClass(LLVMValueRef Global, LLVMDLLStorageClass Class); +LLVMUnnamedAddr LLVMGetUnnamedAddress(LLVMValueRef Global); +void LLVMSetUnnamedAddress(LLVMValueRef Global, LLVMUnnamedAddr UnnamedAddr); + +/** + * Returns the "value type" of a global value. This differs from the formal + * type of a global value which is always a pointer type. + * + * @see llvm::GlobalValue::getValueType() + */ +LLVMTypeRef LLVMGlobalGetValueType(LLVMValueRef Global); + +/** Deprecated: Use LLVMGetUnnamedAddress instead. */ +LLVMBool LLVMHasUnnamedAddr(LLVMValueRef Global); +/** Deprecated: Use LLVMSetUnnamedAddress instead. */ +void LLVMSetUnnamedAddr(LLVMValueRef Global, LLVMBool HasUnnamedAddr); + +/** + * @defgroup LLVMCCoreValueWithAlignment Values with alignment + * + * Functions in this group only apply to values with alignment, i.e. + * global variables, load and store instructions. + */ + +/** + * Obtain the preferred alignment of the value. + * @see llvm::AllocaInst::getAlignment() + * @see llvm::LoadInst::getAlignment() + * @see llvm::StoreInst::getAlignment() + * @see llvm::GlobalValue::getAlignment() + */ +unsigned LLVMGetAlignment(LLVMValueRef V); + +/** + * Set the preferred alignment of the value. + * @see llvm::AllocaInst::setAlignment() + * @see llvm::LoadInst::setAlignment() + * @see llvm::StoreInst::setAlignment() + * @see llvm::GlobalValue::setAlignment() + */ +void LLVMSetAlignment(LLVMValueRef V, unsigned Bytes); + +/** + * Sets a metadata attachment, erasing the existing metadata attachment if + * it already exists for the given kind. + * + * @see llvm::GlobalObject::setMetadata() + */ +void LLVMGlobalSetMetadata(LLVMValueRef Global, unsigned Kind, + LLVMMetadataRef MD); + +/** + * Erases a metadata attachment of the given kind if it exists. + * + * @see llvm::GlobalObject::eraseMetadata() + */ +void LLVMGlobalEraseMetadata(LLVMValueRef Global, unsigned Kind); + +/** + * Removes all metadata attachments from this value. + * + * @see llvm::GlobalObject::clearMetadata() + */ +void LLVMGlobalClearMetadata(LLVMValueRef Global); + +/** + * Retrieves an array of metadata entries representing the metadata attached to + * this value. The caller is responsible for freeing this array by calling + * \c LLVMDisposeValueMetadataEntries. + * + * @see llvm::GlobalObject::getAllMetadata() + */ +LLVMValueMetadataEntry *LLVMGlobalCopyAllMetadata(LLVMValueRef Value, + size_t *NumEntries); + +/** + * Destroys value metadata entries. + */ +void LLVMDisposeValueMetadataEntries(LLVMValueMetadataEntry *Entries); + +/** + * Returns the kind of a value metadata entry at a specific index. + */ +unsigned LLVMValueMetadataEntriesGetKind(LLVMValueMetadataEntry *Entries, + unsigned Index); + +/** + * Returns the underlying metadata node of a value metadata entry at a + * specific index. + */ +LLVMMetadataRef +LLVMValueMetadataEntriesGetMetadata(LLVMValueMetadataEntry *Entries, + unsigned Index); + +/** + * @} + */ + +/** + * @defgroup LLVMCoreValueConstantGlobalVariable Global Variables + * + * This group contains functions that operate on global variable values. + * + * @see llvm::GlobalVariable + * + * @{ + */ +LLVMValueRef LLVMAddGlobal(LLVMModuleRef M, LLVMTypeRef Ty, const char *Name); +LLVMValueRef LLVMAddGlobalInAddressSpace(LLVMModuleRef M, LLVMTypeRef Ty, + const char *Name, + unsigned AddressSpace); +LLVMValueRef LLVMGetNamedGlobal(LLVMModuleRef M, const char *Name); +LLVMValueRef LLVMGetFirstGlobal(LLVMModuleRef M); +LLVMValueRef LLVMGetLastGlobal(LLVMModuleRef M); +LLVMValueRef LLVMGetNextGlobal(LLVMValueRef GlobalVar); +LLVMValueRef LLVMGetPreviousGlobal(LLVMValueRef GlobalVar); +void LLVMDeleteGlobal(LLVMValueRef GlobalVar); +LLVMValueRef LLVMGetInitializer(LLVMValueRef GlobalVar); +void LLVMSetInitializer(LLVMValueRef GlobalVar, LLVMValueRef ConstantVal); +LLVMBool LLVMIsThreadLocal(LLVMValueRef GlobalVar); +void LLVMSetThreadLocal(LLVMValueRef GlobalVar, LLVMBool IsThreadLocal); +LLVMBool LLVMIsGlobalConstant(LLVMValueRef GlobalVar); +void LLVMSetGlobalConstant(LLVMValueRef GlobalVar, LLVMBool IsConstant); +LLVMThreadLocalMode LLVMGetThreadLocalMode(LLVMValueRef GlobalVar); +void LLVMSetThreadLocalMode(LLVMValueRef GlobalVar, LLVMThreadLocalMode Mode); +LLVMBool LLVMIsExternallyInitialized(LLVMValueRef GlobalVar); +void LLVMSetExternallyInitialized(LLVMValueRef GlobalVar, LLVMBool IsExtInit); + +/** + * @} + */ + +/** + * @defgroup LLVMCoreValueConstantGlobalAlias Global Aliases + * + * This group contains function that operate on global alias values. + * + * @see llvm::GlobalAlias + * + * @{ + */ +LLVMValueRef LLVMAddAlias(LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee, + const char *Name); + +/** + * Obtain a GlobalAlias value from a Module by its name. + * + * The returned value corresponds to a llvm::GlobalAlias value. + * + * @see llvm::Module::getNamedAlias() + */ +LLVMValueRef LLVMGetNamedGlobalAlias(LLVMModuleRef M, + const char *Name, size_t NameLen); + +/** + * Obtain an iterator to the first GlobalAlias in a Module. + * + * @see llvm::Module::alias_begin() + */ +LLVMValueRef LLVMGetFirstGlobalAlias(LLVMModuleRef M); + +/** + * Obtain an iterator to the last GlobalAlias in a Module. + * + * @see llvm::Module::alias_end() + */ +LLVMValueRef LLVMGetLastGlobalAlias(LLVMModuleRef M); + +/** + * Advance a GlobalAlias iterator to the next GlobalAlias. + * + * Returns NULL if the iterator was already at the end and there are no more + * global aliases. + */ +LLVMValueRef LLVMGetNextGlobalAlias(LLVMValueRef GA); + +/** + * Decrement a GlobalAlias iterator to the previous GlobalAlias. + * + * Returns NULL if the iterator was already at the beginning and there are + * no previous global aliases. + */ +LLVMValueRef LLVMGetPreviousGlobalAlias(LLVMValueRef GA); + +/** + * Retrieve the target value of an alias. + */ +LLVMValueRef LLVMAliasGetAliasee(LLVMValueRef Alias); + +/** + * Set the target value of an alias. + */ +void LLVMAliasSetAliasee(LLVMValueRef Alias, LLVMValueRef Aliasee); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueFunction Function values + * + * Functions in this group operate on LLVMValueRef instances that + * correspond to llvm::Function instances. + * + * @see llvm::Function + * + * @{ + */ + +/** + * Remove a function from its containing module and deletes it. + * + * @see llvm::Function::eraseFromParent() + */ +void LLVMDeleteFunction(LLVMValueRef Fn); + +/** + * Check whether the given function has a personality function. + * + * @see llvm::Function::hasPersonalityFn() + */ +LLVMBool LLVMHasPersonalityFn(LLVMValueRef Fn); + +/** + * Obtain the personality function attached to the function. + * + * @see llvm::Function::getPersonalityFn() + */ +LLVMValueRef LLVMGetPersonalityFn(LLVMValueRef Fn); + +/** + * Set the personality function attached to the function. + * + * @see llvm::Function::setPersonalityFn() + */ +void LLVMSetPersonalityFn(LLVMValueRef Fn, LLVMValueRef PersonalityFn); + +/** + * Obtain the intrinsic ID number which matches the given function name. + * + * @see llvm::Function::lookupIntrinsicID() + */ +unsigned LLVMLookupIntrinsicID(const char *Name, size_t NameLen); + +/** + * Obtain the ID number from a function instance. + * + * @see llvm::Function::getIntrinsicID() + */ +unsigned LLVMGetIntrinsicID(LLVMValueRef Fn); + +/** + * Create or insert the declaration of an intrinsic. For overloaded intrinsics, + * parameter types must be provided to uniquely identify an overload. + * + * @see llvm::Intrinsic::getDeclaration() + */ +LLVMValueRef LLVMGetIntrinsicDeclaration(LLVMModuleRef Mod, + unsigned ID, + LLVMTypeRef *ParamTypes, + size_t ParamCount); + +/** + * Retrieves the type of an intrinsic. For overloaded intrinsics, parameter + * types must be provided to uniquely identify an overload. + * + * @see llvm::Intrinsic::getType() + */ +LLVMTypeRef LLVMIntrinsicGetType(LLVMContextRef Ctx, unsigned ID, + LLVMTypeRef *ParamTypes, size_t ParamCount); + +/** + * Retrieves the name of an intrinsic. + * + * @see llvm::Intrinsic::getName() + */ +const char *LLVMIntrinsicGetName(unsigned ID, size_t *NameLength); + +/** + * Copies the name of an overloaded intrinsic identified by a given list of + * parameter types. + * + * Unlike LLVMIntrinsicGetName, the caller is responsible for freeing the + * returned string. + * + * @see llvm::Intrinsic::getName() + */ +const char *LLVMIntrinsicCopyOverloadedName(unsigned ID, + LLVMTypeRef *ParamTypes, + size_t ParamCount, + size_t *NameLength); + +/** + * Obtain if the intrinsic identified by the given ID is overloaded. + * + * @see llvm::Intrinsic::isOverloaded() + */ +LLVMBool LLVMIntrinsicIsOverloaded(unsigned ID); + +/** + * Obtain the calling function of a function. + * + * The returned value corresponds to the LLVMCallConv enumeration. + * + * @see llvm::Function::getCallingConv() + */ +unsigned LLVMGetFunctionCallConv(LLVMValueRef Fn); + +/** + * Set the calling convention of a function. + * + * @see llvm::Function::setCallingConv() + * + * @param Fn Function to operate on + * @param CC LLVMCallConv to set calling convention to + */ +void LLVMSetFunctionCallConv(LLVMValueRef Fn, unsigned CC); + +/** + * Obtain the name of the garbage collector to use during code + * generation. + * + * @see llvm::Function::getGC() + */ +const char *LLVMGetGC(LLVMValueRef Fn); + +/** + * Define the garbage collector to use during code generation. + * + * @see llvm::Function::setGC() + */ +void LLVMSetGC(LLVMValueRef Fn, const char *Name); + +/** + * Add an attribute to a function. + * + * @see llvm::Function::addAttribute() + */ +void LLVMAddAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx, + LLVMAttributeRef A); +unsigned LLVMGetAttributeCountAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx); +void LLVMGetAttributesAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx, + LLVMAttributeRef *Attrs); +LLVMAttributeRef LLVMGetEnumAttributeAtIndex(LLVMValueRef F, + LLVMAttributeIndex Idx, + unsigned KindID); +LLVMAttributeRef LLVMGetStringAttributeAtIndex(LLVMValueRef F, + LLVMAttributeIndex Idx, + const char *K, unsigned KLen); +void LLVMRemoveEnumAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx, + unsigned KindID); +void LLVMRemoveStringAttributeAtIndex(LLVMValueRef F, LLVMAttributeIndex Idx, + const char *K, unsigned KLen); + +/** + * Add a target-dependent attribute to a function + * @see llvm::AttrBuilder::addAttribute() + */ +void LLVMAddTargetDependentFunctionAttr(LLVMValueRef Fn, const char *A, + const char *V); + +/** + * @defgroup LLVMCCoreValueFunctionParameters Function Parameters + * + * Functions in this group relate to arguments/parameters on functions. + * + * Functions in this group expect LLVMValueRef instances that correspond + * to llvm::Function instances. + * + * @{ + */ + +/** + * Obtain the number of parameters in a function. + * + * @see llvm::Function::arg_size() + */ +unsigned LLVMCountParams(LLVMValueRef Fn); + +/** + * Obtain the parameters in a function. + * + * The takes a pointer to a pre-allocated array of LLVMValueRef that is + * at least LLVMCountParams() long. This array will be filled with + * LLVMValueRef instances which correspond to the parameters the + * function receives. Each LLVMValueRef corresponds to a llvm::Argument + * instance. + * + * @see llvm::Function::arg_begin() + */ +void LLVMGetParams(LLVMValueRef Fn, LLVMValueRef *Params); + +/** + * Obtain the parameter at the specified index. + * + * Parameters are indexed from 0. + * + * @see llvm::Function::arg_begin() + */ +LLVMValueRef LLVMGetParam(LLVMValueRef Fn, unsigned Index); + +/** + * Obtain the function to which this argument belongs. + * + * Unlike other functions in this group, this one takes an LLVMValueRef + * that corresponds to a llvm::Attribute. + * + * The returned LLVMValueRef is the llvm::Function to which this + * argument belongs. + */ +LLVMValueRef LLVMGetParamParent(LLVMValueRef Inst); + +/** + * Obtain the first parameter to a function. + * + * @see llvm::Function::arg_begin() + */ +LLVMValueRef LLVMGetFirstParam(LLVMValueRef Fn); + +/** + * Obtain the last parameter to a function. + * + * @see llvm::Function::arg_end() + */ +LLVMValueRef LLVMGetLastParam(LLVMValueRef Fn); + +/** + * Obtain the next parameter to a function. + * + * This takes an LLVMValueRef obtained from LLVMGetFirstParam() (which is + * actually a wrapped iterator) and obtains the next parameter from the + * underlying iterator. + */ +LLVMValueRef LLVMGetNextParam(LLVMValueRef Arg); + +/** + * Obtain the previous parameter to a function. + * + * This is the opposite of LLVMGetNextParam(). + */ +LLVMValueRef LLVMGetPreviousParam(LLVMValueRef Arg); + +/** + * Set the alignment for a function parameter. + * + * @see llvm::Argument::addAttr() + * @see llvm::AttrBuilder::addAlignmentAttr() + */ +void LLVMSetParamAlignment(LLVMValueRef Arg, unsigned Align); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueGlobalIFunc IFuncs + * + * Functions in this group relate to indirect functions. + * + * Functions in this group expect LLVMValueRef instances that correspond + * to llvm::GlobalIFunc instances. + * + * @{ + */ + +/** + * Add a global indirect function to a module under a specified name. + * + * @see llvm::GlobalIFunc::create() + */ +LLVMValueRef LLVMAddGlobalIFunc(LLVMModuleRef M, + const char *Name, size_t NameLen, + LLVMTypeRef Ty, unsigned AddrSpace, + LLVMValueRef Resolver); + +/** + * Obtain a GlobalIFunc value from a Module by its name. + * + * The returned value corresponds to a llvm::GlobalIFunc value. + * + * @see llvm::Module::getNamedIFunc() + */ +LLVMValueRef LLVMGetNamedGlobalIFunc(LLVMModuleRef M, + const char *Name, size_t NameLen); + +/** + * Obtain an iterator to the first GlobalIFunc in a Module. + * + * @see llvm::Module::ifunc_begin() + */ +LLVMValueRef LLVMGetFirstGlobalIFunc(LLVMModuleRef M); + +/** + * Obtain an iterator to the last GlobalIFunc in a Module. + * + * @see llvm::Module::ifunc_end() + */ +LLVMValueRef LLVMGetLastGlobalIFunc(LLVMModuleRef M); + +/** + * Advance a GlobalIFunc iterator to the next GlobalIFunc. + * + * Returns NULL if the iterator was already at the end and there are no more + * global aliases. + */ +LLVMValueRef LLVMGetNextGlobalIFunc(LLVMValueRef IFunc); + +/** + * Decrement a GlobalIFunc iterator to the previous GlobalIFunc. + * + * Returns NULL if the iterator was already at the beginning and there are + * no previous global aliases. + */ +LLVMValueRef LLVMGetPreviousGlobalIFunc(LLVMValueRef IFunc); + +/** + * Retrieves the resolver function associated with this indirect function, or + * NULL if it doesn't not exist. + * + * @see llvm::GlobalIFunc::getResolver() + */ +LLVMValueRef LLVMGetGlobalIFuncResolver(LLVMValueRef IFunc); + +/** + * Sets the resolver function associated with this indirect function. + * + * @see llvm::GlobalIFunc::setResolver() + */ +void LLVMSetGlobalIFuncResolver(LLVMValueRef IFunc, LLVMValueRef Resolver); + +/** + * Remove a global indirect function from its parent module and delete it. + * + * @see llvm::GlobalIFunc::eraseFromParent() + */ +void LLVMEraseGlobalIFunc(LLVMValueRef IFunc); + +/** + * Remove a global indirect function from its parent module. + * + * This unlinks the global indirect function from its containing module but + * keeps it alive. + * + * @see llvm::GlobalIFunc::removeFromParent() + */ +void LLVMRemoveGlobalIFunc(LLVMValueRef IFunc); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueMetadata Metadata + * + * @{ + */ + +/** + * Create an MDString value from a given string value. + * + * The MDString value does not take ownership of the given string, it remains + * the responsibility of the caller to free it. + * + * @see llvm::MDString::get() + */ +LLVMMetadataRef LLVMMDStringInContext2(LLVMContextRef C, const char *Str, + size_t SLen); + +/** + * Create an MDNode value with the given array of operands. + * + * @see llvm::MDNode::get() + */ +LLVMMetadataRef LLVMMDNodeInContext2(LLVMContextRef C, LLVMMetadataRef *MDs, + size_t Count); + +/** + * Obtain a Metadata as a Value. + */ +LLVMValueRef LLVMMetadataAsValue(LLVMContextRef C, LLVMMetadataRef MD); + +/** + * Obtain a Value as a Metadata. + */ +LLVMMetadataRef LLVMValueAsMetadata(LLVMValueRef Val); + +/** + * Obtain the underlying string from a MDString value. + * + * @param V Instance to obtain string from. + * @param Length Memory address which will hold length of returned string. + * @return String data in MDString. + */ +const char *LLVMGetMDString(LLVMValueRef V, unsigned *Length); + +/** + * Obtain the number of operands from an MDNode value. + * + * @param V MDNode to get number of operands from. + * @return Number of operands of the MDNode. + */ +unsigned LLVMGetMDNodeNumOperands(LLVMValueRef V); + +/** + * Obtain the given MDNode's operands. + * + * The passed LLVMValueRef pointer should point to enough memory to hold all of + * the operands of the given MDNode (see LLVMGetMDNodeNumOperands) as + * LLVMValueRefs. This memory will be populated with the LLVMValueRefs of the + * MDNode's operands. + * + * @param V MDNode to get the operands from. + * @param Dest Destination array for operands. + */ +void LLVMGetMDNodeOperands(LLVMValueRef V, LLVMValueRef *Dest); + +/** Deprecated: Use LLVMMDStringInContext2 instead. */ +LLVMValueRef LLVMMDStringInContext(LLVMContextRef C, const char *Str, + unsigned SLen); +/** Deprecated: Use LLVMMDStringInContext2 instead. */ +LLVMValueRef LLVMMDString(const char *Str, unsigned SLen); +/** Deprecated: Use LLVMMDNodeInContext2 instead. */ +LLVMValueRef LLVMMDNodeInContext(LLVMContextRef C, LLVMValueRef *Vals, + unsigned Count); +/** Deprecated: Use LLVMMDNodeInContext2 instead. */ +LLVMValueRef LLVMMDNode(LLVMValueRef *Vals, unsigned Count); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueBasicBlock Basic Block + * + * A basic block represents a single entry single exit section of code. + * Basic blocks contain a list of instructions which form the body of + * the block. + * + * Basic blocks belong to functions. They have the type of label. + * + * Basic blocks are themselves values. However, the C API models them as + * LLVMBasicBlockRef. + * + * @see llvm::BasicBlock + * + * @{ + */ + +/** + * Convert a basic block instance to a value type. + */ +LLVMValueRef LLVMBasicBlockAsValue(LLVMBasicBlockRef BB); + +/** + * Determine whether an LLVMValueRef is itself a basic block. + */ +LLVMBool LLVMValueIsBasicBlock(LLVMValueRef Val); + +/** + * Convert an LLVMValueRef to an LLVMBasicBlockRef instance. + */ +LLVMBasicBlockRef LLVMValueAsBasicBlock(LLVMValueRef Val); + +/** + * Obtain the string name of a basic block. + */ +const char *LLVMGetBasicBlockName(LLVMBasicBlockRef BB); + +/** + * Obtain the function to which a basic block belongs. + * + * @see llvm::BasicBlock::getParent() + */ +LLVMValueRef LLVMGetBasicBlockParent(LLVMBasicBlockRef BB); + +/** + * Obtain the terminator instruction for a basic block. + * + * If the basic block does not have a terminator (it is not well-formed + * if it doesn't), then NULL is returned. + * + * The returned LLVMValueRef corresponds to an llvm::Instruction. + * + * @see llvm::BasicBlock::getTerminator() + */ +LLVMValueRef LLVMGetBasicBlockTerminator(LLVMBasicBlockRef BB); + +/** + * Obtain the number of basic blocks in a function. + * + * @param Fn Function value to operate on. + */ +unsigned LLVMCountBasicBlocks(LLVMValueRef Fn); + +/** + * Obtain all of the basic blocks in a function. + * + * This operates on a function value. The BasicBlocks parameter is a + * pointer to a pre-allocated array of LLVMBasicBlockRef of at least + * LLVMCountBasicBlocks() in length. This array is populated with + * LLVMBasicBlockRef instances. + */ +void LLVMGetBasicBlocks(LLVMValueRef Fn, LLVMBasicBlockRef *BasicBlocks); + +/** + * Obtain the first basic block in a function. + * + * The returned basic block can be used as an iterator. You will likely + * eventually call into LLVMGetNextBasicBlock() with it. + * + * @see llvm::Function::begin() + */ +LLVMBasicBlockRef LLVMGetFirstBasicBlock(LLVMValueRef Fn); + +/** + * Obtain the last basic block in a function. + * + * @see llvm::Function::end() + */ +LLVMBasicBlockRef LLVMGetLastBasicBlock(LLVMValueRef Fn); + +/** + * Advance a basic block iterator. + */ +LLVMBasicBlockRef LLVMGetNextBasicBlock(LLVMBasicBlockRef BB); + +/** + * Go backwards in a basic block iterator. + */ +LLVMBasicBlockRef LLVMGetPreviousBasicBlock(LLVMBasicBlockRef BB); + +/** + * Obtain the basic block that corresponds to the entry point of a + * function. + * + * @see llvm::Function::getEntryBlock() + */ +LLVMBasicBlockRef LLVMGetEntryBasicBlock(LLVMValueRef Fn); + +/** + * Insert the given basic block after the insertion point of the given builder. + * + * The insertion point must be valid. + * + * @see llvm::Function::BasicBlockListType::insertAfter() + */ +void LLVMInsertExistingBasicBlockAfterInsertBlock(LLVMBuilderRef Builder, + LLVMBasicBlockRef BB); + +/** + * Append the given basic block to the basic block list of the given function. + * + * @see llvm::Function::BasicBlockListType::push_back() + */ +void LLVMAppendExistingBasicBlock(LLVMValueRef Fn, + LLVMBasicBlockRef BB); + +/** + * Create a new basic block without inserting it into a function. + * + * @see llvm::BasicBlock::Create() + */ +LLVMBasicBlockRef LLVMCreateBasicBlockInContext(LLVMContextRef C, + const char *Name); + +/** + * Append a basic block to the end of a function. + * + * @see llvm::BasicBlock::Create() + */ +LLVMBasicBlockRef LLVMAppendBasicBlockInContext(LLVMContextRef C, + LLVMValueRef Fn, + const char *Name); + +/** + * Append a basic block to the end of a function using the global + * context. + * + * @see llvm::BasicBlock::Create() + */ +LLVMBasicBlockRef LLVMAppendBasicBlock(LLVMValueRef Fn, const char *Name); + +/** + * Insert a basic block in a function before another basic block. + * + * The function to add to is determined by the function of the + * passed basic block. + * + * @see llvm::BasicBlock::Create() + */ +LLVMBasicBlockRef LLVMInsertBasicBlockInContext(LLVMContextRef C, + LLVMBasicBlockRef BB, + const char *Name); + +/** + * Insert a basic block in a function using the global context. + * + * @see llvm::BasicBlock::Create() + */ +LLVMBasicBlockRef LLVMInsertBasicBlock(LLVMBasicBlockRef InsertBeforeBB, + const char *Name); + +/** + * Remove a basic block from a function and delete it. + * + * This deletes the basic block from its containing function and deletes + * the basic block itself. + * + * @see llvm::BasicBlock::eraseFromParent() + */ +void LLVMDeleteBasicBlock(LLVMBasicBlockRef BB); + +/** + * Remove a basic block from a function. + * + * This deletes the basic block from its containing function but keep + * the basic block alive. + * + * @see llvm::BasicBlock::removeFromParent() + */ +void LLVMRemoveBasicBlockFromParent(LLVMBasicBlockRef BB); + +/** + * Move a basic block to before another one. + * + * @see llvm::BasicBlock::moveBefore() + */ +void LLVMMoveBasicBlockBefore(LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos); + +/** + * Move a basic block to after another one. + * + * @see llvm::BasicBlock::moveAfter() + */ +void LLVMMoveBasicBlockAfter(LLVMBasicBlockRef BB, LLVMBasicBlockRef MovePos); + +/** + * Obtain the first instruction in a basic block. + * + * The returned LLVMValueRef corresponds to a llvm::Instruction + * instance. + */ +LLVMValueRef LLVMGetFirstInstruction(LLVMBasicBlockRef BB); + +/** + * Obtain the last instruction in a basic block. + * + * The returned LLVMValueRef corresponds to an LLVM:Instruction. + */ +LLVMValueRef LLVMGetLastInstruction(LLVMBasicBlockRef BB); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueInstruction Instructions + * + * Functions in this group relate to the inspection and manipulation of + * individual instructions. + * + * In the C++ API, an instruction is modeled by llvm::Instruction. This + * class has a large number of descendents. llvm::Instruction is a + * llvm::Value and in the C API, instructions are modeled by + * LLVMValueRef. + * + * This group also contains sub-groups which operate on specific + * llvm::Instruction types, e.g. llvm::CallInst. + * + * @{ + */ + +/** + * Determine whether an instruction has any metadata attached. + */ +int LLVMHasMetadata(LLVMValueRef Val); + +/** + * Return metadata associated with an instruction value. + */ +LLVMValueRef LLVMGetMetadata(LLVMValueRef Val, unsigned KindID); + +/** + * Set metadata associated with an instruction value. + */ +void LLVMSetMetadata(LLVMValueRef Val, unsigned KindID, LLVMValueRef Node); + +/** + * Returns the metadata associated with an instruction value, but filters out + * all the debug locations. + * + * @see llvm::Instruction::getAllMetadataOtherThanDebugLoc() + */ +LLVMValueMetadataEntry * +LLVMInstructionGetAllMetadataOtherThanDebugLoc(LLVMValueRef Instr, + size_t *NumEntries); + +/** + * Obtain the basic block to which an instruction belongs. + * + * @see llvm::Instruction::getParent() + */ +LLVMBasicBlockRef LLVMGetInstructionParent(LLVMValueRef Inst); + +/** + * Obtain the instruction that occurs after the one specified. + * + * The next instruction will be from the same basic block. + * + * If this is the last instruction in a basic block, NULL will be + * returned. + */ +LLVMValueRef LLVMGetNextInstruction(LLVMValueRef Inst); + +/** + * Obtain the instruction that occurred before this one. + * + * If the instruction is the first instruction in a basic block, NULL + * will be returned. + */ +LLVMValueRef LLVMGetPreviousInstruction(LLVMValueRef Inst); + +/** + * Remove and delete an instruction. + * + * The instruction specified is removed from its containing building + * block but is kept alive. + * + * @see llvm::Instruction::removeFromParent() + */ +void LLVMInstructionRemoveFromParent(LLVMValueRef Inst); + +/** + * Remove and delete an instruction. + * + * The instruction specified is removed from its containing building + * block and then deleted. + * + * @see llvm::Instruction::eraseFromParent() + */ +void LLVMInstructionEraseFromParent(LLVMValueRef Inst); + +/** + * Obtain the code opcode for an individual instruction. + * + * @see llvm::Instruction::getOpCode() + */ +LLVMOpcode LLVMGetInstructionOpcode(LLVMValueRef Inst); + +/** + * Obtain the predicate of an instruction. + * + * This is only valid for instructions that correspond to llvm::ICmpInst + * or llvm::ConstantExpr whose opcode is llvm::Instruction::ICmp. + * + * @see llvm::ICmpInst::getPredicate() + */ +LLVMIntPredicate LLVMGetICmpPredicate(LLVMValueRef Inst); + +/** + * Obtain the float predicate of an instruction. + * + * This is only valid for instructions that correspond to llvm::FCmpInst + * or llvm::ConstantExpr whose opcode is llvm::Instruction::FCmp. + * + * @see llvm::FCmpInst::getPredicate() + */ +LLVMRealPredicate LLVMGetFCmpPredicate(LLVMValueRef Inst); + +/** + * Create a copy of 'this' instruction that is identical in all ways + * except the following: + * * The instruction has no parent + * * The instruction has no name + * + * @see llvm::Instruction::clone() + */ +LLVMValueRef LLVMInstructionClone(LLVMValueRef Inst); + +/** + * Determine whether an instruction is a terminator. This routine is named to + * be compatible with historical functions that did this by querying the + * underlying C++ type. + * + * @see llvm::Instruction::isTerminator() + */ +LLVMValueRef LLVMIsATerminatorInst(LLVMValueRef Inst); + +/** + * @defgroup LLVMCCoreValueInstructionCall Call Sites and Invocations + * + * Functions in this group apply to instructions that refer to call + * sites and invocations. These correspond to C++ types in the + * llvm::CallInst class tree. + * + * @{ + */ + +/** + * Obtain the argument count for a call instruction. + * + * This expects an LLVMValueRef that corresponds to a llvm::CallInst, + * llvm::InvokeInst, or llvm:FuncletPadInst. + * + * @see llvm::CallInst::getNumArgOperands() + * @see llvm::InvokeInst::getNumArgOperands() + * @see llvm::FuncletPadInst::getNumArgOperands() + */ +unsigned LLVMGetNumArgOperands(LLVMValueRef Instr); + +/** + * Set the calling convention for a call instruction. + * + * This expects an LLVMValueRef that corresponds to a llvm::CallInst or + * llvm::InvokeInst. + * + * @see llvm::CallInst::setCallingConv() + * @see llvm::InvokeInst::setCallingConv() + */ +void LLVMSetInstructionCallConv(LLVMValueRef Instr, unsigned CC); + +/** + * Obtain the calling convention for a call instruction. + * + * This is the opposite of LLVMSetInstructionCallConv(). Reads its + * usage. + * + * @see LLVMSetInstructionCallConv() + */ +unsigned LLVMGetInstructionCallConv(LLVMValueRef Instr); + +void LLVMSetInstrParamAlignment(LLVMValueRef Instr, unsigned index, + unsigned Align); + +void LLVMAddCallSiteAttribute(LLVMValueRef C, LLVMAttributeIndex Idx, + LLVMAttributeRef A); +unsigned LLVMGetCallSiteAttributeCount(LLVMValueRef C, LLVMAttributeIndex Idx); +void LLVMGetCallSiteAttributes(LLVMValueRef C, LLVMAttributeIndex Idx, + LLVMAttributeRef *Attrs); +LLVMAttributeRef LLVMGetCallSiteEnumAttribute(LLVMValueRef C, + LLVMAttributeIndex Idx, + unsigned KindID); +LLVMAttributeRef LLVMGetCallSiteStringAttribute(LLVMValueRef C, + LLVMAttributeIndex Idx, + const char *K, unsigned KLen); +void LLVMRemoveCallSiteEnumAttribute(LLVMValueRef C, LLVMAttributeIndex Idx, + unsigned KindID); +void LLVMRemoveCallSiteStringAttribute(LLVMValueRef C, LLVMAttributeIndex Idx, + const char *K, unsigned KLen); + +/** + * Obtain the function type called by this instruction. + * + * @see llvm::CallBase::getFunctionType() + */ +LLVMTypeRef LLVMGetCalledFunctionType(LLVMValueRef C); + +/** + * Obtain the pointer to the function invoked by this instruction. + * + * This expects an LLVMValueRef that corresponds to a llvm::CallInst or + * llvm::InvokeInst. + * + * @see llvm::CallInst::getCalledValue() + * @see llvm::InvokeInst::getCalledValue() + */ +LLVMValueRef LLVMGetCalledValue(LLVMValueRef Instr); + +/** + * Obtain whether a call instruction is a tail call. + * + * This only works on llvm::CallInst instructions. + * + * @see llvm::CallInst::isTailCall() + */ +LLVMBool LLVMIsTailCall(LLVMValueRef CallInst); + +/** + * Set whether a call instruction is a tail call. + * + * This only works on llvm::CallInst instructions. + * + * @see llvm::CallInst::setTailCall() + */ +void LLVMSetTailCall(LLVMValueRef CallInst, LLVMBool IsTailCall); + +/** + * Return the normal destination basic block. + * + * This only works on llvm::InvokeInst instructions. + * + * @see llvm::InvokeInst::getNormalDest() + */ +LLVMBasicBlockRef LLVMGetNormalDest(LLVMValueRef InvokeInst); + +/** + * Return the unwind destination basic block. + * + * Works on llvm::InvokeInst, llvm::CleanupReturnInst, and + * llvm::CatchSwitchInst instructions. + * + * @see llvm::InvokeInst::getUnwindDest() + * @see llvm::CleanupReturnInst::getUnwindDest() + * @see llvm::CatchSwitchInst::getUnwindDest() + */ +LLVMBasicBlockRef LLVMGetUnwindDest(LLVMValueRef InvokeInst); + +/** + * Set the normal destination basic block. + * + * This only works on llvm::InvokeInst instructions. + * + * @see llvm::InvokeInst::setNormalDest() + */ +void LLVMSetNormalDest(LLVMValueRef InvokeInst, LLVMBasicBlockRef B); + +/** + * Set the unwind destination basic block. + * + * Works on llvm::InvokeInst, llvm::CleanupReturnInst, and + * llvm::CatchSwitchInst instructions. + * + * @see llvm::InvokeInst::setUnwindDest() + * @see llvm::CleanupReturnInst::setUnwindDest() + * @see llvm::CatchSwitchInst::setUnwindDest() + */ +void LLVMSetUnwindDest(LLVMValueRef InvokeInst, LLVMBasicBlockRef B); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueInstructionTerminator Terminators + * + * Functions in this group only apply to instructions for which + * LLVMIsATerminatorInst returns true. + * + * @{ + */ + +/** + * Return the number of successors that this terminator has. + * + * @see llvm::Instruction::getNumSuccessors + */ +unsigned LLVMGetNumSuccessors(LLVMValueRef Term); + +/** + * Return the specified successor. + * + * @see llvm::Instruction::getSuccessor + */ +LLVMBasicBlockRef LLVMGetSuccessor(LLVMValueRef Term, unsigned i); + +/** + * Update the specified successor to point at the provided block. + * + * @see llvm::Instruction::setSuccessor + */ +void LLVMSetSuccessor(LLVMValueRef Term, unsigned i, LLVMBasicBlockRef block); + +/** + * Return if a branch is conditional. + * + * This only works on llvm::BranchInst instructions. + * + * @see llvm::BranchInst::isConditional + */ +LLVMBool LLVMIsConditional(LLVMValueRef Branch); + +/** + * Return the condition of a branch instruction. + * + * This only works on llvm::BranchInst instructions. + * + * @see llvm::BranchInst::getCondition + */ +LLVMValueRef LLVMGetCondition(LLVMValueRef Branch); + +/** + * Set the condition of a branch instruction. + * + * This only works on llvm::BranchInst instructions. + * + * @see llvm::BranchInst::setCondition + */ +void LLVMSetCondition(LLVMValueRef Branch, LLVMValueRef Cond); + +/** + * Obtain the default destination basic block of a switch instruction. + * + * This only works on llvm::SwitchInst instructions. + * + * @see llvm::SwitchInst::getDefaultDest() + */ +LLVMBasicBlockRef LLVMGetSwitchDefaultDest(LLVMValueRef SwitchInstr); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueInstructionAlloca Allocas + * + * Functions in this group only apply to instructions that map to + * llvm::AllocaInst instances. + * + * @{ + */ + +/** + * Obtain the type that is being allocated by the alloca instruction. + */ +LLVMTypeRef LLVMGetAllocatedType(LLVMValueRef Alloca); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueInstructionGetElementPointer GEPs + * + * Functions in this group only apply to instructions that map to + * llvm::GetElementPtrInst instances. + * + * @{ + */ + +/** + * Check whether the given GEP instruction is inbounds. + */ +LLVMBool LLVMIsInBounds(LLVMValueRef GEP); + +/** + * Set the given GEP instruction to be inbounds or not. + */ +void LLVMSetIsInBounds(LLVMValueRef GEP, LLVMBool InBounds); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueInstructionPHINode PHI Nodes + * + * Functions in this group only apply to instructions that map to + * llvm::PHINode instances. + * + * @{ + */ + +/** + * Add an incoming value to the end of a PHI list. + */ +void LLVMAddIncoming(LLVMValueRef PhiNode, LLVMValueRef *IncomingValues, + LLVMBasicBlockRef *IncomingBlocks, unsigned Count); + +/** + * Obtain the number of incoming basic blocks to a PHI node. + */ +unsigned LLVMCountIncoming(LLVMValueRef PhiNode); + +/** + * Obtain an incoming value to a PHI node as an LLVMValueRef. + */ +LLVMValueRef LLVMGetIncomingValue(LLVMValueRef PhiNode, unsigned Index); + +/** + * Obtain an incoming value to a PHI node as an LLVMBasicBlockRef. + */ +LLVMBasicBlockRef LLVMGetIncomingBlock(LLVMValueRef PhiNode, unsigned Index); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreValueInstructionExtractValue ExtractValue + * @defgroup LLVMCCoreValueInstructionInsertValue InsertValue + * + * Functions in this group only apply to instructions that map to + * llvm::ExtractValue and llvm::InsertValue instances. + * + * @{ + */ + +/** + * Obtain the number of indices. + * NB: This also works on GEP. + */ +unsigned LLVMGetNumIndices(LLVMValueRef Inst); + +/** + * Obtain the indices as an array. + */ +const unsigned *LLVMGetIndices(LLVMValueRef Inst); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreInstructionBuilder Instruction Builders + * + * An instruction builder represents a point within a basic block and is + * the exclusive means of building instructions using the C interface. + * + * @{ + */ + +LLVMBuilderRef LLVMCreateBuilderInContext(LLVMContextRef C); +LLVMBuilderRef LLVMCreateBuilder(void); +void LLVMPositionBuilder(LLVMBuilderRef Builder, LLVMBasicBlockRef Block, + LLVMValueRef Instr); +void LLVMPositionBuilderBefore(LLVMBuilderRef Builder, LLVMValueRef Instr); +void LLVMPositionBuilderAtEnd(LLVMBuilderRef Builder, LLVMBasicBlockRef Block); +LLVMBasicBlockRef LLVMGetInsertBlock(LLVMBuilderRef Builder); +void LLVMClearInsertionPosition(LLVMBuilderRef Builder); +void LLVMInsertIntoBuilder(LLVMBuilderRef Builder, LLVMValueRef Instr); +void LLVMInsertIntoBuilderWithName(LLVMBuilderRef Builder, LLVMValueRef Instr, + const char *Name); +void LLVMDisposeBuilder(LLVMBuilderRef Builder); + +/* Metadata */ + +/** + * Get location information used by debugging information. + * + * @see llvm::IRBuilder::getCurrentDebugLocation() + */ +LLVMMetadataRef LLVMGetCurrentDebugLocation2(LLVMBuilderRef Builder); + +/** + * Set location information used by debugging information. + * + * To clear the location metadata of the given instruction, pass NULL to \p Loc. + * + * @see llvm::IRBuilder::SetCurrentDebugLocation() + */ +void LLVMSetCurrentDebugLocation2(LLVMBuilderRef Builder, LLVMMetadataRef Loc); + +/** + * Attempts to set the debug location for the given instruction using the + * current debug location for the given builder. If the builder has no current + * debug location, this function is a no-op. + * + * @see llvm::IRBuilder::SetInstDebugLocation() + */ +void LLVMSetInstDebugLocation(LLVMBuilderRef Builder, LLVMValueRef Inst); + +/** + * Get the dafult floating-point math metadata for a given builder. + * + * @see llvm::IRBuilder::getDefaultFPMathTag() + */ +LLVMMetadataRef LLVMBuilderGetDefaultFPMathTag(LLVMBuilderRef Builder); + +/** + * Set the default floating-point math metadata for the given builder. + * + * To clear the metadata, pass NULL to \p FPMathTag. + * + * @see llvm::IRBuilder::setDefaultFPMathTag() + */ +void LLVMBuilderSetDefaultFPMathTag(LLVMBuilderRef Builder, + LLVMMetadataRef FPMathTag); + +/** + * Deprecated: Passing the NULL location will crash. + * Use LLVMGetCurrentDebugLocation2 instead. + */ +void LLVMSetCurrentDebugLocation(LLVMBuilderRef Builder, LLVMValueRef L); +/** + * Deprecated: Returning the NULL location will crash. + * Use LLVMGetCurrentDebugLocation2 instead. + */ +LLVMValueRef LLVMGetCurrentDebugLocation(LLVMBuilderRef Builder); + +/* Terminators */ +LLVMValueRef LLVMBuildRetVoid(LLVMBuilderRef); +LLVMValueRef LLVMBuildRet(LLVMBuilderRef, LLVMValueRef V); +LLVMValueRef LLVMBuildAggregateRet(LLVMBuilderRef, LLVMValueRef *RetVals, + unsigned N); +LLVMValueRef LLVMBuildBr(LLVMBuilderRef, LLVMBasicBlockRef Dest); +LLVMValueRef LLVMBuildCondBr(LLVMBuilderRef, LLVMValueRef If, + LLVMBasicBlockRef Then, LLVMBasicBlockRef Else); +LLVMValueRef LLVMBuildSwitch(LLVMBuilderRef, LLVMValueRef V, + LLVMBasicBlockRef Else, unsigned NumCases); +LLVMValueRef LLVMBuildIndirectBr(LLVMBuilderRef B, LLVMValueRef Addr, + unsigned NumDests); +// LLVMBuildInvoke is deprecated in favor of LLVMBuildInvoke2, in preparation +// for opaque pointer types. +LLVMValueRef LLVMBuildInvoke(LLVMBuilderRef, LLVMValueRef Fn, + LLVMValueRef *Args, unsigned NumArgs, + LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, + const char *Name); +LLVMValueRef LLVMBuildInvoke2(LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Fn, + LLVMValueRef *Args, unsigned NumArgs, + LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, + const char *Name); +LLVMValueRef LLVMBuildUnreachable(LLVMBuilderRef); + +/* Exception Handling */ +LLVMValueRef LLVMBuildResume(LLVMBuilderRef B, LLVMValueRef Exn); +LLVMValueRef LLVMBuildLandingPad(LLVMBuilderRef B, LLVMTypeRef Ty, + LLVMValueRef PersFn, unsigned NumClauses, + const char *Name); +LLVMValueRef LLVMBuildCleanupRet(LLVMBuilderRef B, LLVMValueRef CatchPad, + LLVMBasicBlockRef BB); +LLVMValueRef LLVMBuildCatchRet(LLVMBuilderRef B, LLVMValueRef CatchPad, + LLVMBasicBlockRef BB); +LLVMValueRef LLVMBuildCatchPad(LLVMBuilderRef B, LLVMValueRef ParentPad, + LLVMValueRef *Args, unsigned NumArgs, + const char *Name); +LLVMValueRef LLVMBuildCleanupPad(LLVMBuilderRef B, LLVMValueRef ParentPad, + LLVMValueRef *Args, unsigned NumArgs, + const char *Name); +LLVMValueRef LLVMBuildCatchSwitch(LLVMBuilderRef B, LLVMValueRef ParentPad, + LLVMBasicBlockRef UnwindBB, + unsigned NumHandlers, const char *Name); + +/* Add a case to the switch instruction */ +void LLVMAddCase(LLVMValueRef Switch, LLVMValueRef OnVal, + LLVMBasicBlockRef Dest); + +/* Add a destination to the indirectbr instruction */ +void LLVMAddDestination(LLVMValueRef IndirectBr, LLVMBasicBlockRef Dest); + +/* Get the number of clauses on the landingpad instruction */ +unsigned LLVMGetNumClauses(LLVMValueRef LandingPad); + +/* Get the value of the clause at idnex Idx on the landingpad instruction */ +LLVMValueRef LLVMGetClause(LLVMValueRef LandingPad, unsigned Idx); + +/* Add a catch or filter clause to the landingpad instruction */ +void LLVMAddClause(LLVMValueRef LandingPad, LLVMValueRef ClauseVal); + +/* Get the 'cleanup' flag in the landingpad instruction */ +LLVMBool LLVMIsCleanup(LLVMValueRef LandingPad); + +/* Set the 'cleanup' flag in the landingpad instruction */ +void LLVMSetCleanup(LLVMValueRef LandingPad, LLVMBool Val); + +/* Add a destination to the catchswitch instruction */ +void LLVMAddHandler(LLVMValueRef CatchSwitch, LLVMBasicBlockRef Dest); + +/* Get the number of handlers on the catchswitch instruction */ +unsigned LLVMGetNumHandlers(LLVMValueRef CatchSwitch); + +/** + * Obtain the basic blocks acting as handlers for a catchswitch instruction. + * + * The Handlers parameter should point to a pre-allocated array of + * LLVMBasicBlockRefs at least LLVMGetNumHandlers() large. On return, the + * first LLVMGetNumHandlers() entries in the array will be populated + * with LLVMBasicBlockRef instances. + * + * @param CatchSwitch The catchswitch instruction to operate on. + * @param Handlers Memory address of an array to be filled with basic blocks. + */ +void LLVMGetHandlers(LLVMValueRef CatchSwitch, LLVMBasicBlockRef *Handlers); + +/* Funclets */ + +/* Get the number of funcletpad arguments. */ +LLVMValueRef LLVMGetArgOperand(LLVMValueRef Funclet, unsigned i); + +/* Set a funcletpad argument at the given index. */ +void LLVMSetArgOperand(LLVMValueRef Funclet, unsigned i, LLVMValueRef value); + +/** + * Get the parent catchswitch instruction of a catchpad instruction. + * + * This only works on llvm::CatchPadInst instructions. + * + * @see llvm::CatchPadInst::getCatchSwitch() + */ +LLVMValueRef LLVMGetParentCatchSwitch(LLVMValueRef CatchPad); + +/** + * Set the parent catchswitch instruction of a catchpad instruction. + * + * This only works on llvm::CatchPadInst instructions. + * + * @see llvm::CatchPadInst::setCatchSwitch() + */ +void LLVMSetParentCatchSwitch(LLVMValueRef CatchPad, LLVMValueRef CatchSwitch); + +/* Arithmetic */ +LLVMValueRef LLVMBuildAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildNSWAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildNUWAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildFAdd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildNSWSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildNUWSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildFSub(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildNSWMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildNUWMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildFMul(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildUDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildExactUDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildSDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildExactSDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildFDiv(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildURem(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildSRem(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildFRem(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildShl(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildLShr(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildAShr(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildAnd(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildOr(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildXor(LLVMBuilderRef, LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildBinOp(LLVMBuilderRef B, LLVMOpcode Op, + LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildNeg(LLVMBuilderRef, LLVMValueRef V, const char *Name); +LLVMValueRef LLVMBuildNSWNeg(LLVMBuilderRef B, LLVMValueRef V, + const char *Name); +LLVMValueRef LLVMBuildNUWNeg(LLVMBuilderRef B, LLVMValueRef V, + const char *Name); +LLVMValueRef LLVMBuildFNeg(LLVMBuilderRef, LLVMValueRef V, const char *Name); +LLVMValueRef LLVMBuildNot(LLVMBuilderRef, LLVMValueRef V, const char *Name); + +/* Memory */ +LLVMValueRef LLVMBuildMalloc(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name); +LLVMValueRef LLVMBuildArrayMalloc(LLVMBuilderRef, LLVMTypeRef Ty, + LLVMValueRef Val, const char *Name); + +/** + * Creates and inserts a memset to the specified pointer and the + * specified value. + * + * @see llvm::IRRBuilder::CreateMemSet() + */ +LLVMValueRef LLVMBuildMemSet(LLVMBuilderRef B, LLVMValueRef Ptr, + LLVMValueRef Val, LLVMValueRef Len, + unsigned Align); +/** + * Creates and inserts a memcpy between the specified pointers. + * + * @see llvm::IRRBuilder::CreateMemCpy() + */ +LLVMValueRef LLVMBuildMemCpy(LLVMBuilderRef B, + LLVMValueRef Dst, unsigned DstAlign, + LLVMValueRef Src, unsigned SrcAlign, + LLVMValueRef Size); +/** + * Creates and inserts a memmove between the specified pointers. + * + * @see llvm::IRRBuilder::CreateMemMove() + */ +LLVMValueRef LLVMBuildMemMove(LLVMBuilderRef B, + LLVMValueRef Dst, unsigned DstAlign, + LLVMValueRef Src, unsigned SrcAlign, + LLVMValueRef Size); + +LLVMValueRef LLVMBuildAlloca(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name); +LLVMValueRef LLVMBuildArrayAlloca(LLVMBuilderRef, LLVMTypeRef Ty, + LLVMValueRef Val, const char *Name); +LLVMValueRef LLVMBuildFree(LLVMBuilderRef, LLVMValueRef PointerVal); +// LLVMBuildLoad is deprecated in favor of LLVMBuildLoad2, in preparation for +// opaque pointer types. +LLVMValueRef LLVMBuildLoad(LLVMBuilderRef, LLVMValueRef PointerVal, + const char *Name); +LLVMValueRef LLVMBuildLoad2(LLVMBuilderRef, LLVMTypeRef Ty, + LLVMValueRef PointerVal, const char *Name); +LLVMValueRef LLVMBuildStore(LLVMBuilderRef, LLVMValueRef Val, LLVMValueRef Ptr); +// LLVMBuildGEP, LLVMBuildInBoundsGEP, and LLVMBuildStructGEP are deprecated in +// favor of LLVMBuild*GEP2, in preparation for opaque pointer types. +LLVMValueRef LLVMBuildGEP(LLVMBuilderRef B, LLVMValueRef Pointer, + LLVMValueRef *Indices, unsigned NumIndices, + const char *Name); +LLVMValueRef LLVMBuildInBoundsGEP(LLVMBuilderRef B, LLVMValueRef Pointer, + LLVMValueRef *Indices, unsigned NumIndices, + const char *Name); +LLVMValueRef LLVMBuildStructGEP(LLVMBuilderRef B, LLVMValueRef Pointer, + unsigned Idx, const char *Name); +LLVMValueRef LLVMBuildGEP2(LLVMBuilderRef B, LLVMTypeRef Ty, + LLVMValueRef Pointer, LLVMValueRef *Indices, + unsigned NumIndices, const char *Name); +LLVMValueRef LLVMBuildInBoundsGEP2(LLVMBuilderRef B, LLVMTypeRef Ty, + LLVMValueRef Pointer, LLVMValueRef *Indices, + unsigned NumIndices, const char *Name); +LLVMValueRef LLVMBuildStructGEP2(LLVMBuilderRef B, LLVMTypeRef Ty, + LLVMValueRef Pointer, unsigned Idx, + const char *Name); +LLVMValueRef LLVMBuildGlobalString(LLVMBuilderRef B, const char *Str, + const char *Name); +LLVMValueRef LLVMBuildGlobalStringPtr(LLVMBuilderRef B, const char *Str, + const char *Name); +LLVMBool LLVMGetVolatile(LLVMValueRef MemoryAccessInst); +void LLVMSetVolatile(LLVMValueRef MemoryAccessInst, LLVMBool IsVolatile); +LLVMAtomicOrdering LLVMGetOrdering(LLVMValueRef MemoryAccessInst); +void LLVMSetOrdering(LLVMValueRef MemoryAccessInst, LLVMAtomicOrdering Ordering); + +/* Casts */ +LLVMValueRef LLVMBuildTrunc(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildZExt(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildSExt(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildFPToUI(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildFPToSI(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildUIToFP(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildSIToFP(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildFPTrunc(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildFPExt(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildPtrToInt(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildIntToPtr(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildBitCast(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildAddrSpaceCast(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildZExtOrBitCast(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildSExtOrBitCast(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildTruncOrBitCast(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildCast(LLVMBuilderRef B, LLVMOpcode Op, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildPointerCast(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); +LLVMValueRef LLVMBuildIntCast2(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, LLVMBool IsSigned, + const char *Name); +LLVMValueRef LLVMBuildFPCast(LLVMBuilderRef, LLVMValueRef Val, + LLVMTypeRef DestTy, const char *Name); + +/** Deprecated: This cast is always signed. Use LLVMBuildIntCast2 instead. */ +LLVMValueRef LLVMBuildIntCast(LLVMBuilderRef, LLVMValueRef Val, /*Signed cast!*/ + LLVMTypeRef DestTy, const char *Name); + +/* Comparisons */ +LLVMValueRef LLVMBuildICmp(LLVMBuilderRef, LLVMIntPredicate Op, + LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); +LLVMValueRef LLVMBuildFCmp(LLVMBuilderRef, LLVMRealPredicate Op, + LLVMValueRef LHS, LLVMValueRef RHS, + const char *Name); + +/* Miscellaneous instructions */ +LLVMValueRef LLVMBuildPhi(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name); +// LLVMBuildCall is deprecated in favor of LLVMBuildCall2, in preparation for +// opaque pointer types. +LLVMValueRef LLVMBuildCall(LLVMBuilderRef, LLVMValueRef Fn, + LLVMValueRef *Args, unsigned NumArgs, + const char *Name); +LLVMValueRef LLVMBuildCall2(LLVMBuilderRef, LLVMTypeRef, LLVMValueRef Fn, + LLVMValueRef *Args, unsigned NumArgs, + const char *Name); +LLVMValueRef LLVMBuildSelect(LLVMBuilderRef, LLVMValueRef If, + LLVMValueRef Then, LLVMValueRef Else, + const char *Name); +LLVMValueRef LLVMBuildVAArg(LLVMBuilderRef, LLVMValueRef List, LLVMTypeRef Ty, + const char *Name); +LLVMValueRef LLVMBuildExtractElement(LLVMBuilderRef, LLVMValueRef VecVal, + LLVMValueRef Index, const char *Name); +LLVMValueRef LLVMBuildInsertElement(LLVMBuilderRef, LLVMValueRef VecVal, + LLVMValueRef EltVal, LLVMValueRef Index, + const char *Name); +LLVMValueRef LLVMBuildShuffleVector(LLVMBuilderRef, LLVMValueRef V1, + LLVMValueRef V2, LLVMValueRef Mask, + const char *Name); +LLVMValueRef LLVMBuildExtractValue(LLVMBuilderRef, LLVMValueRef AggVal, + unsigned Index, const char *Name); +LLVMValueRef LLVMBuildInsertValue(LLVMBuilderRef, LLVMValueRef AggVal, + LLVMValueRef EltVal, unsigned Index, + const char *Name); + +LLVMValueRef LLVMBuildIsNull(LLVMBuilderRef, LLVMValueRef Val, + const char *Name); +LLVMValueRef LLVMBuildIsNotNull(LLVMBuilderRef, LLVMValueRef Val, + const char *Name); +LLVMValueRef LLVMBuildPtrDiff(LLVMBuilderRef, LLVMValueRef LHS, + LLVMValueRef RHS, const char *Name); +LLVMValueRef LLVMBuildFence(LLVMBuilderRef B, LLVMAtomicOrdering ordering, + LLVMBool singleThread, const char *Name); +LLVMValueRef LLVMBuildAtomicRMW(LLVMBuilderRef B, LLVMAtomicRMWBinOp op, + LLVMValueRef PTR, LLVMValueRef Val, + LLVMAtomicOrdering ordering, + LLVMBool singleThread); +LLVMValueRef LLVMBuildAtomicCmpXchg(LLVMBuilderRef B, LLVMValueRef Ptr, + LLVMValueRef Cmp, LLVMValueRef New, + LLVMAtomicOrdering SuccessOrdering, + LLVMAtomicOrdering FailureOrdering, + LLVMBool SingleThread); + +LLVMBool LLVMIsAtomicSingleThread(LLVMValueRef AtomicInst); +void LLVMSetAtomicSingleThread(LLVMValueRef AtomicInst, LLVMBool SingleThread); + +LLVMAtomicOrdering LLVMGetCmpXchgSuccessOrdering(LLVMValueRef CmpXchgInst); +void LLVMSetCmpXchgSuccessOrdering(LLVMValueRef CmpXchgInst, + LLVMAtomicOrdering Ordering); +LLVMAtomicOrdering LLVMGetCmpXchgFailureOrdering(LLVMValueRef CmpXchgInst); +void LLVMSetCmpXchgFailureOrdering(LLVMValueRef CmpXchgInst, + LLVMAtomicOrdering Ordering); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreModuleProvider Module Providers + * + * @{ + */ + +/** + * Changes the type of M so it can be passed to FunctionPassManagers and the + * JIT. They take ModuleProviders for historical reasons. + */ +LLVMModuleProviderRef +LLVMCreateModuleProviderForExistingModule(LLVMModuleRef M); + +/** + * Destroys the module M. + */ +void LLVMDisposeModuleProvider(LLVMModuleProviderRef M); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreMemoryBuffers Memory Buffers + * + * @{ + */ + +LLVMBool LLVMCreateMemoryBufferWithContentsOfFile(const char *Path, + LLVMMemoryBufferRef *OutMemBuf, + char **OutMessage); +LLVMBool LLVMCreateMemoryBufferWithSTDIN(LLVMMemoryBufferRef *OutMemBuf, + char **OutMessage); +LLVMMemoryBufferRef LLVMCreateMemoryBufferWithMemoryRange(const char *InputData, + size_t InputDataLength, + const char *BufferName, + LLVMBool RequiresNullTerminator); +LLVMMemoryBufferRef LLVMCreateMemoryBufferWithMemoryRangeCopy(const char *InputData, + size_t InputDataLength, + const char *BufferName); +const char *LLVMGetBufferStart(LLVMMemoryBufferRef MemBuf); +size_t LLVMGetBufferSize(LLVMMemoryBufferRef MemBuf); +void LLVMDisposeMemoryBuffer(LLVMMemoryBufferRef MemBuf); + +/** + * @} + */ + +/** + * @defgroup LLVMCCorePassRegistry Pass Registry + * + * @{ + */ + +/** Return the global pass registry, for use with initialization functions. + @see llvm::PassRegistry::getPassRegistry */ +LLVMPassRegistryRef LLVMGetGlobalPassRegistry(void); + +/** + * @} + */ + +/** + * @defgroup LLVMCCorePassManagers Pass Managers + * + * @{ + */ + +/** Constructs a new whole-module pass pipeline. This type of pipeline is + suitable for link-time optimization and whole-module transformations. + @see llvm::PassManager::PassManager */ +LLVMPassManagerRef LLVMCreatePassManager(void); + +/** Constructs a new function-by-function pass pipeline over the module + provider. It does not take ownership of the module provider. This type of + pipeline is suitable for code generation and JIT compilation tasks. + @see llvm::FunctionPassManager::FunctionPassManager */ +LLVMPassManagerRef LLVMCreateFunctionPassManagerForModule(LLVMModuleRef M); + +/** Deprecated: Use LLVMCreateFunctionPassManagerForModule instead. */ +LLVMPassManagerRef LLVMCreateFunctionPassManager(LLVMModuleProviderRef MP); + +/** Initializes, executes on the provided module, and finalizes all of the + passes scheduled in the pass manager. Returns 1 if any of the passes + modified the module, 0 otherwise. + @see llvm::PassManager::run(Module&) */ +LLVMBool LLVMRunPassManager(LLVMPassManagerRef PM, LLVMModuleRef M); + +/** Initializes all of the function passes scheduled in the function pass + manager. Returns 1 if any of the passes modified the module, 0 otherwise. + @see llvm::FunctionPassManager::doInitialization */ +LLVMBool LLVMInitializeFunctionPassManager(LLVMPassManagerRef FPM); + +/** Executes all of the function passes scheduled in the function pass manager + on the provided function. Returns 1 if any of the passes modified the + function, false otherwise. + @see llvm::FunctionPassManager::run(Function&) */ +LLVMBool LLVMRunFunctionPassManager(LLVMPassManagerRef FPM, LLVMValueRef F); + +/** Finalizes all of the function passes scheduled in the function pass + manager. Returns 1 if any of the passes modified the module, 0 otherwise. + @see llvm::FunctionPassManager::doFinalization */ +LLVMBool LLVMFinalizeFunctionPassManager(LLVMPassManagerRef FPM); + +/** Frees the memory of a pass pipeline. For function pipelines, does not free + the module provider. + @see llvm::PassManagerBase::~PassManagerBase. */ +void LLVMDisposePassManager(LLVMPassManagerRef PM); + +/** + * @} + */ + +/** + * @defgroup LLVMCCoreThreading Threading + * + * Handle the structures needed to make LLVM safe for multithreading. + * + * @{ + */ + +/** Deprecated: Multi-threading can only be enabled/disabled with the compile + time define LLVM_ENABLE_THREADS. This function always returns + LLVMIsMultithreaded(). */ +LLVMBool LLVMStartMultithreaded(void); + +/** Deprecated: Multi-threading can only be enabled/disabled with the compile + time define LLVM_ENABLE_THREADS. */ +void LLVMStopMultithreaded(void); + +/** Check whether LLVM is executing in thread-safe mode or not. + @see llvm::llvm_is_multithreaded */ +LLVMBool LLVMIsMultithreaded(void); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* LLVM_C_CORE_H */ diff --git a/src/llvm-c/DataTypes.h b/src/llvm-c/DataTypes.h new file mode 100644 index 000000000..893b22b49 --- /dev/null +++ b/src/llvm-c/DataTypes.h @@ -0,0 +1,90 @@ +/*===-- include/llvm-c/DataTypes.h - Define fixed size types ------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file contains definitions to figure out the size of _HOST_ data types.*| +|* This file is important because different host OS's define different macros,*| +|* which makes portability tough. This file exports the following *| +|* definitions: *| +|* *| +|* [u]int(32|64)_t : typedefs for signed and unsigned 32/64 bit system types*| +|* [U]INT(8|16|32|64)_(MIN|MAX) : Constants for the min and max values. *| +|* *| +|* No library is required when using these functions. *| +|* *| +|*===----------------------------------------------------------------------===*/ + +/* Please leave this file C-compatible. */ + +#ifndef LLVM_C_DATATYPES_H +#define LLVM_C_DATATYPES_H + +#ifdef __cplusplus +#include +#else +#include +#endif + +#include +#include + +#ifndef _MSC_VER + +#if !defined(UINT32_MAX) +# error "The standard header is not C++11 compliant. Must #define "\ + "__STDC_LIMIT_MACROS before #including llvm-c/DataTypes.h" +#endif + +#if !defined(UINT32_C) +# error "The standard header is not C++11 compliant. Must #define "\ + "__STDC_CONSTANT_MACROS before #including llvm-c/DataTypes.h" +#endif + +/* Note that includes , if this is a C99 system. */ +#include + +#ifdef _AIX +// GCC is strict about defining large constants: they must have LL modifier. +#undef INT64_MAX +#undef INT64_MIN +#endif + +#else /* _MSC_VER */ +#ifdef __cplusplus +#include +#include +#else +#include +#include +#endif +#include + +#if defined(_WIN64) +typedef signed __int64 ssize_t; +#else +typedef signed int ssize_t; +#endif /* _WIN64 */ + +#endif /* _MSC_VER */ + +/* Set defaults for constants which we cannot find. */ +#if !defined(INT64_MAX) +# define INT64_MAX 9223372036854775807LL +#endif +#if !defined(INT64_MIN) +# define INT64_MIN ((-INT64_MAX)-1) +#endif +#if !defined(UINT64_MAX) +# define UINT64_MAX 0xffffffffffffffffULL +#endif + +#ifndef HUGE_VALF +#define HUGE_VALF (float)HUGE_VAL +#endif + +#endif /* LLVM_C_DATATYPES_H */ diff --git a/src/llvm-c/DebugInfo.h b/src/llvm-c/DebugInfo.h new file mode 100644 index 000000000..33c8110a8 --- /dev/null +++ b/src/llvm-c/DebugInfo.h @@ -0,0 +1,1315 @@ +//===------------ DebugInfo.h - LLVM C API Debug Info API -----------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// This file declares the C API endpoints for generating DWARF Debug Info +/// +/// Note: This interface is experimental. It is *NOT* stable, and may be +/// changed without warning. +/// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_C_DEBUGINFO_H +#define LLVM_C_DEBUGINFO_H + +#include "llvm-c/Core.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Debug info flags. + */ +typedef enum { + LLVMDIFlagZero = 0, + LLVMDIFlagPrivate = 1, + LLVMDIFlagProtected = 2, + LLVMDIFlagPublic = 3, + LLVMDIFlagFwdDecl = 1 << 2, + LLVMDIFlagAppleBlock = 1 << 3, + LLVMDIFlagBlockByrefStruct = 1 << 4, + LLVMDIFlagVirtual = 1 << 5, + LLVMDIFlagArtificial = 1 << 6, + LLVMDIFlagExplicit = 1 << 7, + LLVMDIFlagPrototyped = 1 << 8, + LLVMDIFlagObjcClassComplete = 1 << 9, + LLVMDIFlagObjectPointer = 1 << 10, + LLVMDIFlagVector = 1 << 11, + LLVMDIFlagStaticMember = 1 << 12, + LLVMDIFlagLValueReference = 1 << 13, + LLVMDIFlagRValueReference = 1 << 14, + LLVMDIFlagReserved = 1 << 15, + LLVMDIFlagSingleInheritance = 1 << 16, + LLVMDIFlagMultipleInheritance = 2 << 16, + LLVMDIFlagVirtualInheritance = 3 << 16, + LLVMDIFlagIntroducedVirtual = 1 << 18, + LLVMDIFlagBitField = 1 << 19, + LLVMDIFlagNoReturn = 1 << 20, + LLVMDIFlagTypePassByValue = 1 << 22, + LLVMDIFlagTypePassByReference = 1 << 23, + LLVMDIFlagEnumClass = 1 << 24, + LLVMDIFlagFixedEnum = LLVMDIFlagEnumClass, // Deprecated. + LLVMDIFlagThunk = 1 << 25, + LLVMDIFlagNonTrivial = 1 << 26, + LLVMDIFlagBigEndian = 1 << 27, + LLVMDIFlagLittleEndian = 1 << 28, + LLVMDIFlagIndirectVirtualBase = (1 << 2) | (1 << 5), + LLVMDIFlagAccessibility = LLVMDIFlagPrivate | LLVMDIFlagProtected | + LLVMDIFlagPublic, + LLVMDIFlagPtrToMemberRep = LLVMDIFlagSingleInheritance | + LLVMDIFlagMultipleInheritance | + LLVMDIFlagVirtualInheritance +} LLVMDIFlags; + +/** + * Source languages known by DWARF. + */ +typedef enum { + LLVMDWARFSourceLanguageC89, + LLVMDWARFSourceLanguageC, + LLVMDWARFSourceLanguageAda83, + LLVMDWARFSourceLanguageC_plus_plus, + LLVMDWARFSourceLanguageCobol74, + LLVMDWARFSourceLanguageCobol85, + LLVMDWARFSourceLanguageFortran77, + LLVMDWARFSourceLanguageFortran90, + LLVMDWARFSourceLanguagePascal83, + LLVMDWARFSourceLanguageModula2, + // New in DWARF v3: + LLVMDWARFSourceLanguageJava, + LLVMDWARFSourceLanguageC99, + LLVMDWARFSourceLanguageAda95, + LLVMDWARFSourceLanguageFortran95, + LLVMDWARFSourceLanguagePLI, + LLVMDWARFSourceLanguageObjC, + LLVMDWARFSourceLanguageObjC_plus_plus, + LLVMDWARFSourceLanguageUPC, + LLVMDWARFSourceLanguageD, + // New in DWARF v4: + LLVMDWARFSourceLanguagePython, + // New in DWARF v5: + LLVMDWARFSourceLanguageOpenCL, + LLVMDWARFSourceLanguageGo, + LLVMDWARFSourceLanguageModula3, + LLVMDWARFSourceLanguageHaskell, + LLVMDWARFSourceLanguageC_plus_plus_03, + LLVMDWARFSourceLanguageC_plus_plus_11, + LLVMDWARFSourceLanguageOCaml, + LLVMDWARFSourceLanguageRust, + LLVMDWARFSourceLanguageC11, + LLVMDWARFSourceLanguageSwift, + LLVMDWARFSourceLanguageJulia, + LLVMDWARFSourceLanguageDylan, + LLVMDWARFSourceLanguageC_plus_plus_14, + LLVMDWARFSourceLanguageFortran03, + LLVMDWARFSourceLanguageFortran08, + LLVMDWARFSourceLanguageRenderScript, + LLVMDWARFSourceLanguageBLISS, + // Vendor extensions: + LLVMDWARFSourceLanguageMips_Assembler, + LLVMDWARFSourceLanguageGOOGLE_RenderScript, + LLVMDWARFSourceLanguageBORLAND_Delphi +} LLVMDWARFSourceLanguage; + +/** + * The amount of debug information to emit. + */ +typedef enum { + LLVMDWARFEmissionNone = 0, + LLVMDWARFEmissionFull, + LLVMDWARFEmissionLineTablesOnly +} LLVMDWARFEmissionKind; + +/** + * The kind of metadata nodes. + */ +enum { + LLVMMDStringMetadataKind, + LLVMConstantAsMetadataMetadataKind, + LLVMLocalAsMetadataMetadataKind, + LLVMDistinctMDOperandPlaceholderMetadataKind, + LLVMMDTupleMetadataKind, + LLVMDILocationMetadataKind, + LLVMDIExpressionMetadataKind, + LLVMDIGlobalVariableExpressionMetadataKind, + LLVMGenericDINodeMetadataKind, + LLVMDISubrangeMetadataKind, + LLVMDIEnumeratorMetadataKind, + LLVMDIBasicTypeMetadataKind, + LLVMDIDerivedTypeMetadataKind, + LLVMDICompositeTypeMetadataKind, + LLVMDISubroutineTypeMetadataKind, + LLVMDIFileMetadataKind, + LLVMDICompileUnitMetadataKind, + LLVMDISubprogramMetadataKind, + LLVMDILexicalBlockMetadataKind, + LLVMDILexicalBlockFileMetadataKind, + LLVMDINamespaceMetadataKind, + LLVMDIModuleMetadataKind, + LLVMDITemplateTypeParameterMetadataKind, + LLVMDITemplateValueParameterMetadataKind, + LLVMDIGlobalVariableMetadataKind, + LLVMDILocalVariableMetadataKind, + LLVMDILabelMetadataKind, + LLVMDIObjCPropertyMetadataKind, + LLVMDIImportedEntityMetadataKind, + LLVMDIMacroMetadataKind, + LLVMDIMacroFileMetadataKind, + LLVMDICommonBlockMetadataKind +}; +typedef unsigned LLVMMetadataKind; + +/** + * An LLVM DWARF type encoding. + */ +typedef unsigned LLVMDWARFTypeEncoding; + +/** + * The current debug metadata version number. + */ +unsigned LLVMDebugMetadataVersion(void); + +/** + * The version of debug metadata that's present in the provided \c Module. + */ +unsigned LLVMGetModuleDebugMetadataVersion(LLVMModuleRef Module); + +/** + * Strip debug info in the module if it exists. + * To do this, we remove all calls to the debugger intrinsics and any named + * metadata for debugging. We also remove debug locations for instructions. + * Return true if module is modified. + */ +LLVMBool LLVMStripModuleDebugInfo(LLVMModuleRef Module); + +/** + * Construct a builder for a module, and do not allow for unresolved nodes + * attached to the module. + */ +LLVMDIBuilderRef LLVMCreateDIBuilderDisallowUnresolved(LLVMModuleRef M); + +/** + * Construct a builder for a module and collect unresolved nodes attached + * to the module in order to resolve cycles during a call to + * \c LLVMDIBuilderFinalize. + */ +LLVMDIBuilderRef LLVMCreateDIBuilder(LLVMModuleRef M); + +/** + * Deallocates the \c DIBuilder and everything it owns. + * @note You must call \c LLVMDIBuilderFinalize before this + */ +void LLVMDisposeDIBuilder(LLVMDIBuilderRef Builder); + +/** + * Construct any deferred debug info descriptors. + */ +void LLVMDIBuilderFinalize(LLVMDIBuilderRef Builder); + +/** + * A CompileUnit provides an anchor for all debugging + * information generated during this instance of compilation. + * \param Lang Source programming language, eg. + * \c LLVMDWARFSourceLanguageC99 + * \param FileRef File info. + * \param Producer Identify the producer of debugging information + * and code. Usually this is a compiler + * version string. + * \param ProducerLen The length of the C string passed to \c Producer. + * \param isOptimized A boolean flag which indicates whether optimization + * is enabled or not. + * \param Flags This string lists command line options. This + * string is directly embedded in debug info + * output which may be used by a tool + * analyzing generated debugging information. + * \param FlagsLen The length of the C string passed to \c Flags. + * \param RuntimeVer This indicates runtime version for languages like + * Objective-C. + * \param SplitName The name of the file that we'll split debug info + * out into. + * \param SplitNameLen The length of the C string passed to \c SplitName. + * \param Kind The kind of debug information to generate. + * \param DWOId The DWOId if this is a split skeleton compile unit. + * \param SplitDebugInlining Whether to emit inline debug info. + * \param DebugInfoForProfiling Whether to emit extra debug info for + * profile collection. + */ +LLVMMetadataRef LLVMDIBuilderCreateCompileUnit( + LLVMDIBuilderRef Builder, LLVMDWARFSourceLanguage Lang, + LLVMMetadataRef FileRef, const char *Producer, size_t ProducerLen, + LLVMBool isOptimized, const char *Flags, size_t FlagsLen, + unsigned RuntimeVer, const char *SplitName, size_t SplitNameLen, + LLVMDWARFEmissionKind Kind, unsigned DWOId, LLVMBool SplitDebugInlining, + LLVMBool DebugInfoForProfiling); + +/** + * Create a file descriptor to hold debugging information for a file. + * \param Builder The \c DIBuilder. + * \param Filename File name. + * \param FilenameLen The length of the C string passed to \c Filename. + * \param Directory Directory. + * \param DirectoryLen The length of the C string passed to \c Directory. + */ +LLVMMetadataRef +LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const char *Filename, + size_t FilenameLen, const char *Directory, + size_t DirectoryLen); + +/** + * Creates a new descriptor for a module with the specified parent scope. + * \param Builder The \c DIBuilder. + * \param ParentScope The parent scope containing this module declaration. + * \param Name Module name. + * \param NameLen The length of the C string passed to \c Name. + * \param ConfigMacros A space-separated shell-quoted list of -D macro + definitions as they would appear on a command line. + * \param ConfigMacrosLen The length of the C string passed to \c ConfigMacros. + * \param IncludePath The path to the module map file. + * \param IncludePathLen The length of the C string passed to \c IncludePath. + * \param ISysRoot The Clang system root (value of -isysroot). + * \param ISysRootLen The length of the C string passed to \c ISysRoot. + */ +LLVMMetadataRef +LLVMDIBuilderCreateModule(LLVMDIBuilderRef Builder, LLVMMetadataRef ParentScope, + const char *Name, size_t NameLen, + const char *ConfigMacros, size_t ConfigMacrosLen, + const char *IncludePath, size_t IncludePathLen, + const char *ISysRoot, size_t ISysRootLen); + +/** + * Creates a new descriptor for a namespace with the specified parent scope. + * \param Builder The \c DIBuilder. + * \param ParentScope The parent scope containing this module declaration. + * \param Name NameSpace name. + * \param NameLen The length of the C string passed to \c Name. + * \param ExportSymbols Whether or not the namespace exports symbols, e.g. + * this is true of C++ inline namespaces. + */ +LLVMMetadataRef +LLVMDIBuilderCreateNameSpace(LLVMDIBuilderRef Builder, + LLVMMetadataRef ParentScope, + const char *Name, size_t NameLen, + LLVMBool ExportSymbols); + +/** + * Create a new descriptor for the specified subprogram. + * \param Builder The \c DIBuilder. + * \param Scope Function scope. + * \param Name Function name. + * \param NameLen Length of enumeration name. + * \param LinkageName Mangled function name. + * \param LinkageNameLen Length of linkage name. + * \param File File where this variable is defined. + * \param LineNo Line number. + * \param Ty Function type. + * \param IsLocalToUnit True if this function is not externally visible. + * \param IsDefinition True if this is a function definition. + * \param ScopeLine Set to the beginning of the scope this starts + * \param Flags E.g.: \c LLVMDIFlagLValueReference. These flags are + * used to emit dwarf attributes. + * \param IsOptimized True if optimization is ON. + */ +LLVMMetadataRef LLVMDIBuilderCreateFunction( + LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, + size_t NameLen, const char *LinkageName, size_t LinkageNameLen, + LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty, + LLVMBool IsLocalToUnit, LLVMBool IsDefinition, + unsigned ScopeLine, LLVMDIFlags Flags, LLVMBool IsOptimized); + +/** + * Create a descriptor for a lexical block with the specified parent context. + * \param Builder The \c DIBuilder. + * \param Scope Parent lexical block. + * \param File Source file. + * \param Line The line in the source file. + * \param Column The column in the source file. + */ +LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock( + LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, + LLVMMetadataRef File, unsigned Line, unsigned Column); + +/** + * Create a descriptor for a lexical block with a new file attached. + * \param Builder The \c DIBuilder. + * \param Scope Lexical block. + * \param File Source file. + * \param Discriminator DWARF path discriminator value. + */ +LLVMMetadataRef +LLVMDIBuilderCreateLexicalBlockFile(LLVMDIBuilderRef Builder, + LLVMMetadataRef Scope, + LLVMMetadataRef File, + unsigned Discriminator); + +/** + * Create a descriptor for an imported namespace. Suitable for e.g. C++ + * using declarations. + * \param Builder The \c DIBuilder. + * \param Scope The scope this module is imported into + * \param File File where the declaration is located. + * \param Line Line number of the declaration. + */ +LLVMMetadataRef +LLVMDIBuilderCreateImportedModuleFromNamespace(LLVMDIBuilderRef Builder, + LLVMMetadataRef Scope, + LLVMMetadataRef NS, + LLVMMetadataRef File, + unsigned Line); + +/** + * Create a descriptor for an imported module that aliases another + * imported entity descriptor. + * \param Builder The \c DIBuilder. + * \param Scope The scope this module is imported into + * \param ImportedEntity Previous imported entity to alias. + * \param File File where the declaration is located. + * \param Line Line number of the declaration. + */ +LLVMMetadataRef +LLVMDIBuilderCreateImportedModuleFromAlias(LLVMDIBuilderRef Builder, + LLVMMetadataRef Scope, + LLVMMetadataRef ImportedEntity, + LLVMMetadataRef File, + unsigned Line); + +/** + * Create a descriptor for an imported module. + * \param Builder The \c DIBuilder. + * \param Scope The scope this module is imported into + * \param M The module being imported here + * \param File File where the declaration is located. + * \param Line Line number of the declaration. + */ +LLVMMetadataRef +LLVMDIBuilderCreateImportedModuleFromModule(LLVMDIBuilderRef Builder, + LLVMMetadataRef Scope, + LLVMMetadataRef M, + LLVMMetadataRef File, + unsigned Line); + +/** + * Create a descriptor for an imported function, type, or variable. Suitable + * for e.g. FORTRAN-style USE declarations. + * \param Builder The DIBuilder. + * \param Scope The scope this module is imported into. + * \param Decl The declaration (or definition) of a function, type, + or variable. + * \param File File where the declaration is located. + * \param Line Line number of the declaration. + * \param Name A name that uniquely identifies this imported declaration. + * \param NameLen The length of the C string passed to \c Name. + */ +LLVMMetadataRef +LLVMDIBuilderCreateImportedDeclaration(LLVMDIBuilderRef Builder, + LLVMMetadataRef Scope, + LLVMMetadataRef Decl, + LLVMMetadataRef File, + unsigned Line, + const char *Name, size_t NameLen); + +/** + * Creates a new DebugLocation that describes a source location. + * \param Line The line in the source file. + * \param Column The column in the source file. + * \param Scope The scope in which the location resides. + * \param InlinedAt The scope where this location was inlined, if at all. + * (optional). + * \note If the item to which this location is attached cannot be + * attributed to a source line, pass 0 for the line and column. + */ +LLVMMetadataRef +LLVMDIBuilderCreateDebugLocation(LLVMContextRef Ctx, unsigned Line, + unsigned Column, LLVMMetadataRef Scope, + LLVMMetadataRef InlinedAt); + +/** + * Get the line number of this debug location. + * \param Location The debug location. + * + * @see DILocation::getLine() + */ +unsigned LLVMDILocationGetLine(LLVMMetadataRef Location); + +/** + * Get the column number of this debug location. + * \param Location The debug location. + * + * @see DILocation::getColumn() + */ +unsigned LLVMDILocationGetColumn(LLVMMetadataRef Location); + +/** + * Get the local scope associated with this debug location. + * \param Location The debug location. + * + * @see DILocation::getScope() + */ +LLVMMetadataRef LLVMDILocationGetScope(LLVMMetadataRef Location); + +/** + * Get the "inline at" location associated with this debug location. + * \param Location The debug location. + * + * @see DILocation::getInlinedAt() + */ +LLVMMetadataRef LLVMDILocationGetInlinedAt(LLVMMetadataRef Location); + +/** + * Get the metadata of the file associated with a given scope. + * \param Scope The scope object. + * + * @see DIScope::getFile() + */ +LLVMMetadataRef LLVMDIScopeGetFile(LLVMMetadataRef Scope); + +/** + * Get the directory of a given file. + * \param File The file object. + * \param Len The length of the returned string. + * + * @see DIFile::getDirectory() + */ +const char *LLVMDIFileGetDirectory(LLVMMetadataRef File, unsigned *Len); + +/** + * Get the name of a given file. + * \param File The file object. + * \param Len The length of the returned string. + * + * @see DIFile::getFilename() + */ +const char *LLVMDIFileGetFilename(LLVMMetadataRef File, unsigned *Len); + +/** + * Get the source of a given file. + * \param File The file object. + * \param Len The length of the returned string. + * + * @see DIFile::getSource() + */ +const char *LLVMDIFileGetSource(LLVMMetadataRef File, unsigned *Len); + +/** + * Create a type array. + * \param Builder The DIBuilder. + * \param Data The type elements. + * \param NumElements Number of type elements. + */ +LLVMMetadataRef LLVMDIBuilderGetOrCreateTypeArray(LLVMDIBuilderRef Builder, + LLVMMetadataRef *Data, + size_t NumElements); + +/** + * Create subroutine type. + * \param Builder The DIBuilder. + * \param File The file in which the subroutine resides. + * \param ParameterTypes An array of subroutine parameter types. This + * includes return type at 0th index. + * \param NumParameterTypes The number of parameter types in \c ParameterTypes + * \param Flags E.g.: \c LLVMDIFlagLValueReference. + * These flags are used to emit dwarf attributes. + */ +LLVMMetadataRef +LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Builder, + LLVMMetadataRef File, + LLVMMetadataRef *ParameterTypes, + unsigned NumParameterTypes, + LLVMDIFlags Flags); + +/** + * Create debugging information entry for an enumerator. + * @param Builder The DIBuilder. + * @param Name Enumerator name. + * @param NameLen Length of enumerator name. + * @param Value Enumerator value. + * @param IsUnsigned True if the value is unsigned. + */ +LLVMMetadataRef LLVMDIBuilderCreateEnumerator(LLVMDIBuilderRef Builder, + const char *Name, size_t NameLen, + int64_t Value, + LLVMBool IsUnsigned); + +/** + * Create debugging information entry for an enumeration. + * \param Builder The DIBuilder. + * \param Scope Scope in which this enumeration is defined. + * \param Name Enumeration name. + * \param NameLen Length of enumeration name. + * \param File File where this member is defined. + * \param LineNumber Line number. + * \param SizeInBits Member size. + * \param AlignInBits Member alignment. + * \param Elements Enumeration elements. + * \param NumElements Number of enumeration elements. + * \param ClassTy Underlying type of a C++11/ObjC fixed enum. + */ +LLVMMetadataRef LLVMDIBuilderCreateEnumerationType( + LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, + size_t NameLen, LLVMMetadataRef File, unsigned LineNumber, + uint64_t SizeInBits, uint32_t AlignInBits, LLVMMetadataRef *Elements, + unsigned NumElements, LLVMMetadataRef ClassTy); + +/** + * Create debugging information entry for a union. + * \param Builder The DIBuilder. + * \param Scope Scope in which this union is defined. + * \param Name Union name. + * \param NameLen Length of union name. + * \param File File where this member is defined. + * \param LineNumber Line number. + * \param SizeInBits Member size. + * \param AlignInBits Member alignment. + * \param Flags Flags to encode member attribute, e.g. private + * \param Elements Union elements. + * \param NumElements Number of union elements. + * \param RunTimeLang Optional parameter, Objective-C runtime version. + * \param UniqueId A unique identifier for the union. + * \param UniqueIdLen Length of unique identifier. + */ +LLVMMetadataRef LLVMDIBuilderCreateUnionType( + LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, + size_t NameLen, LLVMMetadataRef File, unsigned LineNumber, + uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags, + LLVMMetadataRef *Elements, unsigned NumElements, unsigned RunTimeLang, + const char *UniqueId, size_t UniqueIdLen); + + +/** + * Create debugging information entry for an array. + * \param Builder The DIBuilder. + * \param Size Array size. + * \param AlignInBits Alignment. + * \param Ty Element type. + * \param Subscripts Subscripts. + * \param NumSubscripts Number of subscripts. + */ +LLVMMetadataRef +LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Builder, uint64_t Size, + uint32_t AlignInBits, LLVMMetadataRef Ty, + LLVMMetadataRef *Subscripts, + unsigned NumSubscripts); + +/** + * Create debugging information entry for a vector type. + * \param Builder The DIBuilder. + * \param Size Vector size. + * \param AlignInBits Alignment. + * \param Ty Element type. + * \param Subscripts Subscripts. + * \param NumSubscripts Number of subscripts. + */ +LLVMMetadataRef +LLVMDIBuilderCreateVectorType(LLVMDIBuilderRef Builder, uint64_t Size, + uint32_t AlignInBits, LLVMMetadataRef Ty, + LLVMMetadataRef *Subscripts, + unsigned NumSubscripts); + +/** + * Create a DWARF unspecified type. + * \param Builder The DIBuilder. + * \param Name The unspecified type's name. + * \param NameLen Length of type name. + */ +LLVMMetadataRef +LLVMDIBuilderCreateUnspecifiedType(LLVMDIBuilderRef Builder, const char *Name, + size_t NameLen); + +/** + * Create debugging information entry for a basic + * type. + * \param Builder The DIBuilder. + * \param Name Type name. + * \param NameLen Length of type name. + * \param SizeInBits Size of the type. + * \param Encoding DWARF encoding code, e.g. \c LLVMDWARFTypeEncoding_float. + * \param Flags Flags to encode optional attribute like endianity + */ +LLVMMetadataRef +LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Builder, const char *Name, + size_t NameLen, uint64_t SizeInBits, + LLVMDWARFTypeEncoding Encoding, + LLVMDIFlags Flags); + +/** + * Create debugging information entry for a pointer. + * \param Builder The DIBuilder. + * \param PointeeTy Type pointed by this pointer. + * \param SizeInBits Size. + * \param AlignInBits Alignment. (optional, pass 0 to ignore) + * \param AddressSpace DWARF address space. (optional, pass 0 to ignore) + * \param Name Pointer type name. (optional) + * \param NameLen Length of pointer type name. (optional) + */ +LLVMMetadataRef LLVMDIBuilderCreatePointerType( + LLVMDIBuilderRef Builder, LLVMMetadataRef PointeeTy, + uint64_t SizeInBits, uint32_t AlignInBits, unsigned AddressSpace, + const char *Name, size_t NameLen); + +/** + * Create debugging information entry for a struct. + * \param Builder The DIBuilder. + * \param Scope Scope in which this struct is defined. + * \param Name Struct name. + * \param NameLen Struct name length. + * \param File File where this member is defined. + * \param LineNumber Line number. + * \param SizeInBits Member size. + * \param AlignInBits Member alignment. + * \param Flags Flags to encode member attribute, e.g. private + * \param Elements Struct elements. + * \param NumElements Number of struct elements. + * \param RunTimeLang Optional parameter, Objective-C runtime version. + * \param VTableHolder The object containing the vtable for the struct. + * \param UniqueId A unique identifier for the struct. + * \param UniqueIdLen Length of the unique identifier for the struct. + */ +LLVMMetadataRef LLVMDIBuilderCreateStructType( + LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, + size_t NameLen, LLVMMetadataRef File, unsigned LineNumber, + uint64_t SizeInBits, uint32_t AlignInBits, LLVMDIFlags Flags, + LLVMMetadataRef DerivedFrom, LLVMMetadataRef *Elements, + unsigned NumElements, unsigned RunTimeLang, LLVMMetadataRef VTableHolder, + const char *UniqueId, size_t UniqueIdLen); + +/** + * Create debugging information entry for a member. + * \param Builder The DIBuilder. + * \param Scope Member scope. + * \param Name Member name. + * \param NameLen Length of member name. + * \param File File where this member is defined. + * \param LineNo Line number. + * \param SizeInBits Member size. + * \param AlignInBits Member alignment. + * \param OffsetInBits Member offset. + * \param Flags Flags to encode member attribute, e.g. private + * \param Ty Parent type. + */ +LLVMMetadataRef LLVMDIBuilderCreateMemberType( + LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, + size_t NameLen, LLVMMetadataRef File, unsigned LineNo, + uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits, + LLVMDIFlags Flags, LLVMMetadataRef Ty); + +/** + * Create debugging information entry for a + * C++ static data member. + * \param Builder The DIBuilder. + * \param Scope Member scope. + * \param Name Member name. + * \param NameLen Length of member name. + * \param File File where this member is declared. + * \param LineNumber Line number. + * \param Type Type of the static member. + * \param Flags Flags to encode member attribute, e.g. private. + * \param ConstantVal Const initializer of the member. + * \param AlignInBits Member alignment. + */ +LLVMMetadataRef +LLVMDIBuilderCreateStaticMemberType( + LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, + size_t NameLen, LLVMMetadataRef File, unsigned LineNumber, + LLVMMetadataRef Type, LLVMDIFlags Flags, LLVMValueRef ConstantVal, + uint32_t AlignInBits); + +/** + * Create debugging information entry for a pointer to member. + * \param Builder The DIBuilder. + * \param PointeeType Type pointed to by this pointer. + * \param ClassType Type for which this pointer points to members of. + * \param SizeInBits Size. + * \param AlignInBits Alignment. + * \param Flags Flags. + */ +LLVMMetadataRef +LLVMDIBuilderCreateMemberPointerType(LLVMDIBuilderRef Builder, + LLVMMetadataRef PointeeType, + LLVMMetadataRef ClassType, + uint64_t SizeInBits, + uint32_t AlignInBits, + LLVMDIFlags Flags); +/** + * Create debugging information entry for Objective-C instance variable. + * \param Builder The DIBuilder. + * \param Name Member name. + * \param NameLen The length of the C string passed to \c Name. + * \param File File where this member is defined. + * \param LineNo Line number. + * \param SizeInBits Member size. + * \param AlignInBits Member alignment. + * \param OffsetInBits Member offset. + * \param Flags Flags to encode member attribute, e.g. private + * \param Ty Parent type. + * \param PropertyNode Property associated with this ivar. + */ +LLVMMetadataRef +LLVMDIBuilderCreateObjCIVar(LLVMDIBuilderRef Builder, + const char *Name, size_t NameLen, + LLVMMetadataRef File, unsigned LineNo, + uint64_t SizeInBits, uint32_t AlignInBits, + uint64_t OffsetInBits, LLVMDIFlags Flags, + LLVMMetadataRef Ty, LLVMMetadataRef PropertyNode); + +/** + * Create debugging information entry for Objective-C property. + * \param Builder The DIBuilder. + * \param Name Property name. + * \param NameLen The length of the C string passed to \c Name. + * \param File File where this property is defined. + * \param LineNo Line number. + * \param GetterName Name of the Objective C property getter selector. + * \param GetterNameLen The length of the C string passed to \c GetterName. + * \param SetterName Name of the Objective C property setter selector. + * \param SetterNameLen The length of the C string passed to \c SetterName. + * \param PropertyAttributes Objective C property attributes. + * \param Ty Type. + */ +LLVMMetadataRef +LLVMDIBuilderCreateObjCProperty(LLVMDIBuilderRef Builder, + const char *Name, size_t NameLen, + LLVMMetadataRef File, unsigned LineNo, + const char *GetterName, size_t GetterNameLen, + const char *SetterName, size_t SetterNameLen, + unsigned PropertyAttributes, + LLVMMetadataRef Ty); + +/** + * Create a uniqued DIType* clone with FlagObjectPointer and FlagArtificial set. + * \param Builder The DIBuilder. + * \param Type The underlying type to which this pointer points. + */ +LLVMMetadataRef +LLVMDIBuilderCreateObjectPointerType(LLVMDIBuilderRef Builder, + LLVMMetadataRef Type); + +/** + * Create debugging information entry for a qualified + * type, e.g. 'const int'. + * \param Builder The DIBuilder. + * \param Tag Tag identifying type, + * e.g. LLVMDWARFTypeQualifier_volatile_type + * \param Type Base Type. + */ +LLVMMetadataRef +LLVMDIBuilderCreateQualifiedType(LLVMDIBuilderRef Builder, unsigned Tag, + LLVMMetadataRef Type); + +/** + * Create debugging information entry for a c++ + * style reference or rvalue reference type. + * \param Builder The DIBuilder. + * \param Tag Tag identifying type, + * \param Type Base Type. + */ +LLVMMetadataRef +LLVMDIBuilderCreateReferenceType(LLVMDIBuilderRef Builder, unsigned Tag, + LLVMMetadataRef Type); + +/** + * Create C++11 nullptr type. + * \param Builder The DIBuilder. + */ +LLVMMetadataRef +LLVMDIBuilderCreateNullPtrType(LLVMDIBuilderRef Builder); + +/** + * Create debugging information entry for a typedef. + * \param Builder The DIBuilder. + * \param Type Original type. + * \param Name Typedef name. + * \param File File where this type is defined. + * \param LineNo Line number. + * \param Scope The surrounding context for the typedef. + */ +LLVMMetadataRef +LLVMDIBuilderCreateTypedef(LLVMDIBuilderRef Builder, LLVMMetadataRef Type, + const char *Name, size_t NameLen, + LLVMMetadataRef File, unsigned LineNo, + LLVMMetadataRef Scope); + +/** + * Create debugging information entry to establish inheritance relationship + * between two types. + * \param Builder The DIBuilder. + * \param Ty Original type. + * \param BaseTy Base type. Ty is inherits from base. + * \param BaseOffset Base offset. + * \param VBPtrOffset Virtual base pointer offset. + * \param Flags Flags to describe inheritance attribute, e.g. private + */ +LLVMMetadataRef +LLVMDIBuilderCreateInheritance(LLVMDIBuilderRef Builder, + LLVMMetadataRef Ty, LLVMMetadataRef BaseTy, + uint64_t BaseOffset, uint32_t VBPtrOffset, + LLVMDIFlags Flags); + +/** + * Create a permanent forward-declared type. + * \param Builder The DIBuilder. + * \param Tag A unique tag for this type. + * \param Name Type name. + * \param NameLen Length of type name. + * \param Scope Type scope. + * \param File File where this type is defined. + * \param Line Line number where this type is defined. + * \param RuntimeLang Indicates runtime version for languages like + * Objective-C. + * \param SizeInBits Member size. + * \param AlignInBits Member alignment. + * \param UniqueIdentifier A unique identifier for the type. + * \param UniqueIdentifierLen Length of the unique identifier. + */ +LLVMMetadataRef LLVMDIBuilderCreateForwardDecl( + LLVMDIBuilderRef Builder, unsigned Tag, const char *Name, + size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line, + unsigned RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits, + const char *UniqueIdentifier, size_t UniqueIdentifierLen); + +/** + * Create a temporary forward-declared type. + * \param Builder The DIBuilder. + * \param Tag A unique tag for this type. + * \param Name Type name. + * \param NameLen Length of type name. + * \param Scope Type scope. + * \param File File where this type is defined. + * \param Line Line number where this type is defined. + * \param RuntimeLang Indicates runtime version for languages like + * Objective-C. + * \param SizeInBits Member size. + * \param AlignInBits Member alignment. + * \param Flags Flags. + * \param UniqueIdentifier A unique identifier for the type. + * \param UniqueIdentifierLen Length of the unique identifier. + */ +LLVMMetadataRef +LLVMDIBuilderCreateReplaceableCompositeType( + LLVMDIBuilderRef Builder, unsigned Tag, const char *Name, + size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line, + unsigned RuntimeLang, uint64_t SizeInBits, uint32_t AlignInBits, + LLVMDIFlags Flags, const char *UniqueIdentifier, + size_t UniqueIdentifierLen); + +/** + * Create debugging information entry for a bit field member. + * \param Builder The DIBuilder. + * \param Scope Member scope. + * \param Name Member name. + * \param NameLen Length of member name. + * \param File File where this member is defined. + * \param LineNumber Line number. + * \param SizeInBits Member size. + * \param OffsetInBits Member offset. + * \param StorageOffsetInBits Member storage offset. + * \param Flags Flags to encode member attribute. + * \param Type Parent type. + */ +LLVMMetadataRef +LLVMDIBuilderCreateBitFieldMemberType(LLVMDIBuilderRef Builder, + LLVMMetadataRef Scope, + const char *Name, size_t NameLen, + LLVMMetadataRef File, unsigned LineNumber, + uint64_t SizeInBits, + uint64_t OffsetInBits, + uint64_t StorageOffsetInBits, + LLVMDIFlags Flags, LLVMMetadataRef Type); + +/** + * Create debugging information entry for a class. + * \param Scope Scope in which this class is defined. + * \param Name Class name. + * \param NameLen The length of the C string passed to \c Name. + * \param File File where this member is defined. + * \param LineNumber Line number. + * \param SizeInBits Member size. + * \param AlignInBits Member alignment. + * \param OffsetInBits Member offset. + * \param Flags Flags to encode member attribute, e.g. private. + * \param DerivedFrom Debug info of the base class of this type. + * \param Elements Class members. + * \param NumElements Number of class elements. + * \param VTableHolder Debug info of the base class that contains vtable + * for this type. This is used in + * DW_AT_containing_type. See DWARF documentation + * for more info. + * \param TemplateParamsNode Template type parameters. + * \param UniqueIdentifier A unique identifier for the type. + * \param UniqueIdentifierLen Length of the unique identifier. + */ +LLVMMetadataRef LLVMDIBuilderCreateClassType(LLVMDIBuilderRef Builder, + LLVMMetadataRef Scope, const char *Name, size_t NameLen, + LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits, + uint32_t AlignInBits, uint64_t OffsetInBits, LLVMDIFlags Flags, + LLVMMetadataRef DerivedFrom, + LLVMMetadataRef *Elements, unsigned NumElements, + LLVMMetadataRef VTableHolder, LLVMMetadataRef TemplateParamsNode, + const char *UniqueIdentifier, size_t UniqueIdentifierLen); + +/** + * Create a uniqued DIType* clone with FlagArtificial set. + * \param Builder The DIBuilder. + * \param Type The underlying type. + */ +LLVMMetadataRef +LLVMDIBuilderCreateArtificialType(LLVMDIBuilderRef Builder, + LLVMMetadataRef Type); + +/** + * Get the name of this DIType. + * \param DType The DIType. + * \param Length The length of the returned string. + * + * @see DIType::getName() + */ +const char *LLVMDITypeGetName(LLVMMetadataRef DType, size_t *Length); + +/** + * Get the size of this DIType in bits. + * \param DType The DIType. + * + * @see DIType::getSizeInBits() + */ +uint64_t LLVMDITypeGetSizeInBits(LLVMMetadataRef DType); + +/** + * Get the offset of this DIType in bits. + * \param DType The DIType. + * + * @see DIType::getOffsetInBits() + */ +uint64_t LLVMDITypeGetOffsetInBits(LLVMMetadataRef DType); + +/** + * Get the alignment of this DIType in bits. + * \param DType The DIType. + * + * @see DIType::getAlignInBits() + */ +uint32_t LLVMDITypeGetAlignInBits(LLVMMetadataRef DType); + +/** + * Get the source line where this DIType is declared. + * \param DType The DIType. + * + * @see DIType::getLine() + */ +unsigned LLVMDITypeGetLine(LLVMMetadataRef DType); + +/** + * Get the flags associated with this DIType. + * \param DType The DIType. + * + * @see DIType::getFlags() + */ +LLVMDIFlags LLVMDITypeGetFlags(LLVMMetadataRef DType); + +/** + * Create a descriptor for a value range. + * \param Builder The DIBuilder. + * \param LowerBound Lower bound of the subrange, e.g. 0 for C, 1 for Fortran. + * \param Count Count of elements in the subrange. + */ +LLVMMetadataRef LLVMDIBuilderGetOrCreateSubrange(LLVMDIBuilderRef Builder, + int64_t LowerBound, + int64_t Count); + +/** + * Create an array of DI Nodes. + * \param Builder The DIBuilder. + * \param Data The DI Node elements. + * \param NumElements Number of DI Node elements. + */ +LLVMMetadataRef LLVMDIBuilderGetOrCreateArray(LLVMDIBuilderRef Builder, + LLVMMetadataRef *Data, + size_t NumElements); + +/** + * Create a new descriptor for the specified variable which has a complex + * address expression for its address. + * \param Builder The DIBuilder. + * \param Addr An array of complex address operations. + * \param Length Length of the address operation array. + */ +LLVMMetadataRef LLVMDIBuilderCreateExpression(LLVMDIBuilderRef Builder, + int64_t *Addr, size_t Length); + +/** + * Create a new descriptor for the specified variable that does not have an + * address, but does have a constant value. + * \param Builder The DIBuilder. + * \param Value The constant value. + */ +LLVMMetadataRef +LLVMDIBuilderCreateConstantValueExpression(LLVMDIBuilderRef Builder, + int64_t Value); + +/** + * Create a new descriptor for the specified variable. + * \param Scope Variable scope. + * \param Name Name of the variable. + * \param NameLen The length of the C string passed to \c Name. + * \param Linkage Mangled name of the variable. + * \param LinkLen The length of the C string passed to \c Linkage. + * \param File File where this variable is defined. + * \param LineNo Line number. + * \param Ty Variable Type. + * \param LocalToUnit Boolean flag indicate whether this variable is + * externally visible or not. + * \param Expr The location of the global relative to the attached + * GlobalVariable. + * \param Decl Reference to the corresponding declaration. + * variables. + * \param AlignInBits Variable alignment(or 0 if no alignment attr was + * specified) + */ +LLVMMetadataRef LLVMDIBuilderCreateGlobalVariableExpression( + LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, + size_t NameLen, const char *Linkage, size_t LinkLen, LLVMMetadataRef File, + unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit, + LLVMMetadataRef Expr, LLVMMetadataRef Decl, uint32_t AlignInBits); + +/** + * Retrieves the \c DIVariable associated with this global variable expression. + * \param GVE The global variable expression. + * + * @see llvm::DIGlobalVariableExpression::getVariable() + */ +LLVMMetadataRef LLVMDIGlobalVariableExpressionGetVariable(LLVMMetadataRef GVE); + +/** + * Retrieves the \c DIExpression associated with this global variable expression. + * \param GVE The global variable expression. + * + * @see llvm::DIGlobalVariableExpression::getExpression() + */ +LLVMMetadataRef LLVMDIGlobalVariableExpressionGetExpression( + LLVMMetadataRef GVE); + +/** + * Get the metadata of the file associated with a given variable. + * \param Var The variable object. + * + * @see DIVariable::getFile() + */ +LLVMMetadataRef LLVMDIVariableGetFile(LLVMMetadataRef Var); + +/** + * Get the metadata of the scope associated with a given variable. + * \param Var The variable object. + * + * @see DIVariable::getScope() + */ +LLVMMetadataRef LLVMDIVariableGetScope(LLVMMetadataRef Var); + +/** + * Get the source line where this \c DIVariable is declared. + * \param Var The DIVariable. + * + * @see DIVariable::getLine() + */ +unsigned LLVMDIVariableGetLine(LLVMMetadataRef Var); + +/** + * Create a new temporary \c MDNode. Suitable for use in constructing cyclic + * \c MDNode structures. A temporary \c MDNode is not uniqued, may be RAUW'd, + * and must be manually deleted with \c LLVMDisposeTemporaryMDNode. + * \param Ctx The context in which to construct the temporary node. + * \param Data The metadata elements. + * \param NumElements Number of metadata elements. + */ +LLVMMetadataRef LLVMTemporaryMDNode(LLVMContextRef Ctx, LLVMMetadataRef *Data, + size_t NumElements); + +/** + * Deallocate a temporary node. + * + * Calls \c replaceAllUsesWith(nullptr) before deleting, so any remaining + * references will be reset. + * \param TempNode The temporary metadata node. + */ +void LLVMDisposeTemporaryMDNode(LLVMMetadataRef TempNode); + +/** + * Replace all uses of temporary metadata. + * \param TempTargetMetadata The temporary metadata node. + * \param Replacement The replacement metadata node. + */ +void LLVMMetadataReplaceAllUsesWith(LLVMMetadataRef TempTargetMetadata, + LLVMMetadataRef Replacement); + +/** + * Create a new descriptor for the specified global variable that is temporary + * and meant to be RAUWed. + * \param Scope Variable scope. + * \param Name Name of the variable. + * \param NameLen The length of the C string passed to \c Name. + * \param Linkage Mangled name of the variable. + * \param LnkLen The length of the C string passed to \c Linkage. + * \param File File where this variable is defined. + * \param LineNo Line number. + * \param Ty Variable Type. + * \param LocalToUnit Boolean flag indicate whether this variable is + * externally visible or not. + * \param Decl Reference to the corresponding declaration. + * \param AlignInBits Variable alignment(or 0 if no alignment attr was + * specified) + */ +LLVMMetadataRef LLVMDIBuilderCreateTempGlobalVariableFwdDecl( + LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, + size_t NameLen, const char *Linkage, size_t LnkLen, LLVMMetadataRef File, + unsigned LineNo, LLVMMetadataRef Ty, LLVMBool LocalToUnit, + LLVMMetadataRef Decl, uint32_t AlignInBits); + +/** + * Insert a new llvm.dbg.declare intrinsic call before the given instruction. + * \param Builder The DIBuilder. + * \param Storage The storage of the variable to declare. + * \param VarInfo The variable's debug info descriptor. + * \param Expr A complex location expression for the variable. + * \param DebugLoc Debug info location. + * \param Instr Instruction acting as a location for the new intrinsic. + */ +LLVMValueRef LLVMDIBuilderInsertDeclareBefore( + LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, + LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMValueRef Instr); + +/** + * Insert a new llvm.dbg.declare intrinsic call at the end of the given basic + * block. If the basic block has a terminator instruction, the intrinsic is + * inserted before that terminator instruction. + * \param Builder The DIBuilder. + * \param Storage The storage of the variable to declare. + * \param VarInfo The variable's debug info descriptor. + * \param Expr A complex location expression for the variable. + * \param DebugLoc Debug info location. + * \param Block Basic block acting as a location for the new intrinsic. + */ +LLVMValueRef LLVMDIBuilderInsertDeclareAtEnd( + LLVMDIBuilderRef Builder, LLVMValueRef Storage, LLVMMetadataRef VarInfo, + LLVMMetadataRef Expr, LLVMMetadataRef DebugLoc, LLVMBasicBlockRef Block); + +/** + * Insert a new llvm.dbg.value intrinsic call before the given instruction. + * \param Builder The DIBuilder. + * \param Val The value of the variable. + * \param VarInfo The variable's debug info descriptor. + * \param Expr A complex location expression for the variable. + * \param DebugLoc Debug info location. + * \param Instr Instruction acting as a location for the new intrinsic. + */ +LLVMValueRef LLVMDIBuilderInsertDbgValueBefore(LLVMDIBuilderRef Builder, + LLVMValueRef Val, + LLVMMetadataRef VarInfo, + LLVMMetadataRef Expr, + LLVMMetadataRef DebugLoc, + LLVMValueRef Instr); + +/** + * Insert a new llvm.dbg.value intrinsic call at the end of the given basic + * block. If the basic block has a terminator instruction, the intrinsic is + * inserted before that terminator instruction. + * \param Builder The DIBuilder. + * \param Val The value of the variable. + * \param VarInfo The variable's debug info descriptor. + * \param Expr A complex location expression for the variable. + * \param DebugLoc Debug info location. + * \param Block Basic block acting as a location for the new intrinsic. + */ +LLVMValueRef LLVMDIBuilderInsertDbgValueAtEnd(LLVMDIBuilderRef Builder, + LLVMValueRef Val, + LLVMMetadataRef VarInfo, + LLVMMetadataRef Expr, + LLVMMetadataRef DebugLoc, + LLVMBasicBlockRef Block); + +/** + * Create a new descriptor for a local auto variable. + * \param Builder The DIBuilder. + * \param Scope The local scope the variable is declared in. + * \param Name Variable name. + * \param NameLen Length of variable name. + * \param File File where this variable is defined. + * \param LineNo Line number. + * \param Ty Metadata describing the type of the variable. + * \param AlwaysPreserve If true, this descriptor will survive optimizations. + * \param Flags Flags. + * \param AlignInBits Variable alignment. + */ +LLVMMetadataRef LLVMDIBuilderCreateAutoVariable( + LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, + size_t NameLen, LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty, + LLVMBool AlwaysPreserve, LLVMDIFlags Flags, uint32_t AlignInBits); + +/** + * Create a new descriptor for a function parameter variable. + * \param Builder The DIBuilder. + * \param Scope The local scope the variable is declared in. + * \param Name Variable name. + * \param NameLen Length of variable name. + * \param ArgNo Unique argument number for this variable; starts at 1. + * \param File File where this variable is defined. + * \param LineNo Line number. + * \param Ty Metadata describing the type of the variable. + * \param AlwaysPreserve If true, this descriptor will survive optimizations. + * \param Flags Flags. + */ +LLVMMetadataRef LLVMDIBuilderCreateParameterVariable( + LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, + size_t NameLen, unsigned ArgNo, LLVMMetadataRef File, unsigned LineNo, + LLVMMetadataRef Ty, LLVMBool AlwaysPreserve, LLVMDIFlags Flags); + +/** + * Get the metadata of the subprogram attached to a function. + * + * @see llvm::Function::getSubprogram() + */ +LLVMMetadataRef LLVMGetSubprogram(LLVMValueRef Func); + +/** + * Set the subprogram attached to a function. + * + * @see llvm::Function::setSubprogram() + */ +void LLVMSetSubprogram(LLVMValueRef Func, LLVMMetadataRef SP); + +/** + * Get the line associated with a given subprogram. + * \param Subprogram The subprogram object. + * + * @see DISubprogram::getLine() + */ +unsigned LLVMDISubprogramGetLine(LLVMMetadataRef Subprogram); + +/** + * Get the debug location for the given instruction. + * + * @see llvm::Instruction::getDebugLoc() + */ +LLVMMetadataRef LLVMInstructionGetDebugLoc(LLVMValueRef Inst); + +/** + * Set the debug location for the given instruction. + * + * To clear the location metadata of the given instruction, pass NULL to \p Loc. + * + * @see llvm::Instruction::setDebugLoc() + */ +void LLVMInstructionSetDebugLoc(LLVMValueRef Inst, LLVMMetadataRef Loc); + +/** + * Obtain the enumerated type of a Metadata instance. + * + * @see llvm::Metadata::getMetadataID() + */ +LLVMMetadataKind LLVMGetMetadataKind(LLVMMetadataRef Metadata); + +#ifdef __cplusplus +} /* end extern "C" */ +#endif + +#endif diff --git a/src/llvm-c/Disassembler.h b/src/llvm-c/Disassembler.h new file mode 100644 index 000000000..3adcc3c47 --- /dev/null +++ b/src/llvm-c/Disassembler.h @@ -0,0 +1,113 @@ +/*===-- llvm-c/Disassembler.h - Disassembler Public C Interface ---*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header provides a public interface to a disassembler library. *| +|* LLVM provides an implementation of this interface. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_DISASSEMBLER_H +#define LLVM_C_DISASSEMBLER_H + +#include "llvm-c/DisassemblerTypes.h" + +/** + * @defgroup LLVMCDisassembler Disassembler + * @ingroup LLVMC + * + * @{ + */ + +#ifdef __cplusplus +extern "C" { +#endif /* !defined(__cplusplus) */ + +/** + * Create a disassembler for the TripleName. Symbolic disassembly is supported + * by passing a block of information in the DisInfo parameter and specifying the + * TagType and callback functions as described above. These can all be passed + * as NULL. If successful, this returns a disassembler context. If not, it + * returns NULL. This function is equivalent to calling + * LLVMCreateDisasmCPUFeatures() with an empty CPU name and feature set. + */ +LLVMDisasmContextRef LLVMCreateDisasm(const char *TripleName, void *DisInfo, + int TagType, LLVMOpInfoCallback GetOpInfo, + LLVMSymbolLookupCallback SymbolLookUp); + +/** + * Create a disassembler for the TripleName and a specific CPU. Symbolic + * disassembly is supported by passing a block of information in the DisInfo + * parameter and specifying the TagType and callback functions as described + * above. These can all be passed * as NULL. If successful, this returns a + * disassembler context. If not, it returns NULL. This function is equivalent + * to calling LLVMCreateDisasmCPUFeatures() with an empty feature set. + */ +LLVMDisasmContextRef LLVMCreateDisasmCPU(const char *Triple, const char *CPU, + void *DisInfo, int TagType, + LLVMOpInfoCallback GetOpInfo, + LLVMSymbolLookupCallback SymbolLookUp); + +/** + * Create a disassembler for the TripleName, a specific CPU and specific feature + * string. Symbolic disassembly is supported by passing a block of information + * in the DisInfo parameter and specifying the TagType and callback functions as + * described above. These can all be passed * as NULL. If successful, this + * returns a disassembler context. If not, it returns NULL. + */ +LLVMDisasmContextRef +LLVMCreateDisasmCPUFeatures(const char *Triple, const char *CPU, + const char *Features, void *DisInfo, int TagType, + LLVMOpInfoCallback GetOpInfo, + LLVMSymbolLookupCallback SymbolLookUp); + +/** + * Set the disassembler's options. Returns 1 if it can set the Options and 0 + * otherwise. + */ +int LLVMSetDisasmOptions(LLVMDisasmContextRef DC, uint64_t Options); + +/* The option to produce marked up assembly. */ +#define LLVMDisassembler_Option_UseMarkup 1 +/* The option to print immediates as hex. */ +#define LLVMDisassembler_Option_PrintImmHex 2 +/* The option use the other assembler printer variant */ +#define LLVMDisassembler_Option_AsmPrinterVariant 4 +/* The option to set comment on instructions */ +#define LLVMDisassembler_Option_SetInstrComments 8 + /* The option to print latency information alongside instructions */ +#define LLVMDisassembler_Option_PrintLatency 16 + +/** + * Dispose of a disassembler context. + */ +void LLVMDisasmDispose(LLVMDisasmContextRef DC); + +/** + * Disassemble a single instruction using the disassembler context specified in + * the parameter DC. The bytes of the instruction are specified in the + * parameter Bytes, and contains at least BytesSize number of bytes. The + * instruction is at the address specified by the PC parameter. If a valid + * instruction can be disassembled, its string is returned indirectly in + * OutString whose size is specified in the parameter OutStringSize. This + * function returns the number of bytes in the instruction or zero if there was + * no valid instruction. + */ +size_t LLVMDisasmInstruction(LLVMDisasmContextRef DC, uint8_t *Bytes, + uint64_t BytesSize, uint64_t PC, + char *OutString, size_t OutStringSize); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* !defined(__cplusplus) */ + +#endif /* LLVM_C_DISASSEMBLER_H */ diff --git a/src/llvm-c/DisassemblerTypes.h b/src/llvm-c/DisassemblerTypes.h new file mode 100644 index 000000000..389e5ee45 --- /dev/null +++ b/src/llvm-c/DisassemblerTypes.h @@ -0,0 +1,160 @@ +/*===-- llvm-c/DisassemblerTypedefs.h -----------------------------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_DISASSEMBLER_TYPES_H +#define LLVM_DISASSEMBLER_TYPES_H + +#include "llvm-c/DataTypes.h" +#ifdef __cplusplus +#include +#else +#include +#endif + +/** + * An opaque reference to a disassembler context. + */ +typedef void *LLVMDisasmContextRef; + +/** + * The type for the operand information call back function. This is called to + * get the symbolic information for an operand of an instruction. Typically + * this is from the relocation information, symbol table, etc. That block of + * information is saved when the disassembler context is created and passed to + * the call back in the DisInfo parameter. The instruction containing operand + * is at the PC parameter. For some instruction sets, there can be more than + * one operand with symbolic information. To determine the symbolic operand + * information for each operand, the bytes for the specific operand in the + * instruction are specified by the Offset parameter and its byte widith is the + * size parameter. For instructions sets with fixed widths and one symbolic + * operand per instruction, the Offset parameter will be zero and Size parameter + * will be the instruction width. The information is returned in TagBuf and is + * Triple specific with its specific information defined by the value of + * TagType for that Triple. If symbolic information is returned the function + * returns 1, otherwise it returns 0. + */ +typedef int (*LLVMOpInfoCallback)(void *DisInfo, uint64_t PC, + uint64_t Offset, uint64_t Size, + int TagType, void *TagBuf); + +/** + * The initial support in LLVM MC for the most general form of a relocatable + * expression is "AddSymbol - SubtractSymbol + Offset". For some Darwin targets + * this full form is encoded in the relocation information so that AddSymbol and + * SubtractSymbol can be link edited independent of each other. Many other + * platforms only allow a relocatable expression of the form AddSymbol + Offset + * to be encoded. + * + * The LLVMOpInfoCallback() for the TagType value of 1 uses the struct + * LLVMOpInfo1. The value of the relocatable expression for the operand, + * including any PC adjustment, is passed in to the call back in the Value + * field. The symbolic information about the operand is returned using all + * the fields of the structure with the Offset of the relocatable expression + * returned in the Value field. It is possible that some symbols in the + * relocatable expression were assembly temporary symbols, for example + * "Ldata - LpicBase + constant", and only the Values of the symbols without + * symbol names are present in the relocation information. The VariantKind + * type is one of the Target specific #defines below and is used to print + * operands like "_foo@GOT", ":lower16:_foo", etc. + */ +struct LLVMOpInfoSymbol1 { + uint64_t Present; /* 1 if this symbol is present */ + const char *Name; /* symbol name if not NULL */ + uint64_t Value; /* symbol value if name is NULL */ +}; + +struct LLVMOpInfo1 { + struct LLVMOpInfoSymbol1 AddSymbol; + struct LLVMOpInfoSymbol1 SubtractSymbol; + uint64_t Value; + uint64_t VariantKind; +}; + +/** + * The operand VariantKinds for symbolic disassembly. + */ +#define LLVMDisassembler_VariantKind_None 0 /* all targets */ + +/** + * The ARM target VariantKinds. + */ +#define LLVMDisassembler_VariantKind_ARM_HI16 1 /* :upper16: */ +#define LLVMDisassembler_VariantKind_ARM_LO16 2 /* :lower16: */ + +/** + * The ARM64 target VariantKinds. + */ +#define LLVMDisassembler_VariantKind_ARM64_PAGE 1 /* @page */ +#define LLVMDisassembler_VariantKind_ARM64_PAGEOFF 2 /* @pageoff */ +#define LLVMDisassembler_VariantKind_ARM64_GOTPAGE 3 /* @gotpage */ +#define LLVMDisassembler_VariantKind_ARM64_GOTPAGEOFF 4 /* @gotpageoff */ +#define LLVMDisassembler_VariantKind_ARM64_TLVP 5 /* @tvlppage */ +#define LLVMDisassembler_VariantKind_ARM64_TLVOFF 6 /* @tvlppageoff */ + +/** + * The type for the symbol lookup function. This may be called by the + * disassembler for things like adding a comment for a PC plus a constant + * offset load instruction to use a symbol name instead of a load address value. + * It is passed the block information is saved when the disassembler context is + * created and the ReferenceValue to look up as a symbol. If no symbol is found + * for the ReferenceValue NULL is returned. The ReferenceType of the + * instruction is passed indirectly as is the PC of the instruction in + * ReferencePC. If the output reference can be determined its type is returned + * indirectly in ReferenceType along with ReferenceName if any, or that is set + * to NULL. + */ +typedef const char *(*LLVMSymbolLookupCallback)(void *DisInfo, + uint64_t ReferenceValue, + uint64_t *ReferenceType, + uint64_t ReferencePC, + const char **ReferenceName); +/** + * The reference types on input and output. + */ +/* No input reference type or no output reference type. */ +#define LLVMDisassembler_ReferenceType_InOut_None 0 + +/* The input reference is from a branch instruction. */ +#define LLVMDisassembler_ReferenceType_In_Branch 1 +/* The input reference is from a PC relative load instruction. */ +#define LLVMDisassembler_ReferenceType_In_PCrel_Load 2 + +/* The input reference is from an ARM64::ADRP instruction. */ +#define LLVMDisassembler_ReferenceType_In_ARM64_ADRP 0x100000001 +/* The input reference is from an ARM64::ADDXri instruction. */ +#define LLVMDisassembler_ReferenceType_In_ARM64_ADDXri 0x100000002 +/* The input reference is from an ARM64::LDRXui instruction. */ +#define LLVMDisassembler_ReferenceType_In_ARM64_LDRXui 0x100000003 +/* The input reference is from an ARM64::LDRXl instruction. */ +#define LLVMDisassembler_ReferenceType_In_ARM64_LDRXl 0x100000004 +/* The input reference is from an ARM64::ADR instruction. */ +#define LLVMDisassembler_ReferenceType_In_ARM64_ADR 0x100000005 + +/* The output reference is to as symbol stub. */ +#define LLVMDisassembler_ReferenceType_Out_SymbolStub 1 +/* The output reference is to a symbol address in a literal pool. */ +#define LLVMDisassembler_ReferenceType_Out_LitPool_SymAddr 2 +/* The output reference is to a cstring address in a literal pool. */ +#define LLVMDisassembler_ReferenceType_Out_LitPool_CstrAddr 3 + +/* The output reference is to a Objective-C CoreFoundation string. */ +#define LLVMDisassembler_ReferenceType_Out_Objc_CFString_Ref 4 +/* The output reference is to a Objective-C message. */ +#define LLVMDisassembler_ReferenceType_Out_Objc_Message 5 +/* The output reference is to a Objective-C message ref. */ +#define LLVMDisassembler_ReferenceType_Out_Objc_Message_Ref 6 +/* The output reference is to a Objective-C selector ref. */ +#define LLVMDisassembler_ReferenceType_Out_Objc_Selector_Ref 7 +/* The output reference is to a Objective-C class ref. */ +#define LLVMDisassembler_ReferenceType_Out_Objc_Class_Ref 8 + +/* The output reference is to a C++ symbol name. */ +#define LLVMDisassembler_ReferenceType_DeMangled_Name 9 + +#endif diff --git a/src/llvm-c/Error.h b/src/llvm-c/Error.h new file mode 100644 index 000000000..52943063c --- /dev/null +++ b/src/llvm-c/Error.h @@ -0,0 +1,69 @@ +/*===------- llvm-c/Error.h - llvm::Error class C Interface -------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file defines the C interface to LLVM's Error class. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_ERROR_H +#define LLVM_C_ERROR_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define LLVMErrorSuccess 0 + +/** + * Opaque reference to an error instance. Null serves as the 'success' value. + */ +typedef struct LLVMOpaqueError *LLVMErrorRef; + +/** + * Error type identifier. + */ +typedef const void *LLVMErrorTypeId; + +/** + * Returns the type id for the given error instance, which must be a failure + * value (i.e. non-null). + */ +LLVMErrorTypeId LLVMGetErrorTypeId(LLVMErrorRef Err); + +/** + * Dispose of the given error without handling it. This operation consumes the + * error, and the given LLVMErrorRef value is not usable once this call returns. + * Note: This method *only* needs to be called if the error is not being passed + * to some other consuming operation, e.g. LLVMGetErrorMessage. + */ +void LLVMConsumeError(LLVMErrorRef Err); + +/** + * Returns the given string's error message. This operation consumes the error, + * and the given LLVMErrorRef value is not usable once this call returns. + * The caller is responsible for disposing of the string by calling + * LLVMDisposeErrorMessage. + */ +char *LLVMGetErrorMessage(LLVMErrorRef Err); + +/** + * Dispose of the given error message. + */ +void LLVMDisposeErrorMessage(char *ErrMsg); + +/** + * Returns the type id for llvm StringError. + */ +LLVMErrorTypeId LLVMGetStringErrorTypeId(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/ErrorHandling.h b/src/llvm-c/ErrorHandling.h new file mode 100644 index 000000000..4927349d8 --- /dev/null +++ b/src/llvm-c/ErrorHandling.h @@ -0,0 +1,49 @@ +/*===-- llvm-c/ErrorHandling.h - Error Handling C Interface -------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file defines the C interface to LLVM's error handling mechanism. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_ERROR_HANDLING_H +#define LLVM_C_ERROR_HANDLING_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*LLVMFatalErrorHandler)(const char *Reason); + +/** + * Install a fatal error handler. By default, if LLVM detects a fatal error, it + * will call exit(1). This may not be appropriate in many contexts. For example, + * doing exit(1) will bypass many crash reporting/tracing system tools. This + * function allows you to install a callback that will be invoked prior to the + * call to exit(1). + */ +void LLVMInstallFatalErrorHandler(LLVMFatalErrorHandler Handler); + +/** + * Reset the fatal error handler. This resets LLVM's fatal error handling + * behavior to the default. + */ +void LLVMResetFatalErrorHandler(void); + +/** + * Enable LLVM's built-in stack trace code. This intercepts the OS's crash + * signals and prints which component of LLVM you were in at the time if the + * crash. + */ +void LLVMEnablePrettyStackTrace(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/ExecutionEngine.h b/src/llvm-c/ExecutionEngine.h new file mode 100644 index 000000000..ef714cd06 --- /dev/null +++ b/src/llvm-c/ExecutionEngine.h @@ -0,0 +1,200 @@ +/*===-- llvm-c/ExecutionEngine.h - ExecutionEngine Lib C Iface --*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMExecutionEngine.o, which *| +|* implements various analyses of the LLVM IR. *| +|* *| +|* Many exotic languages can interoperate with C code but have a harder time *| +|* with C++ due to name mangling. So in addition to C, this interface enables *| +|* tools written in such languages. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_EXECUTIONENGINE_H +#define LLVM_C_EXECUTIONENGINE_H + +#include "llvm-c/Target.h" +#include "llvm-c/TargetMachine.h" +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCExecutionEngine Execution Engine + * @ingroup LLVMC + * + * @{ + */ + +void LLVMLinkInMCJIT(void); +void LLVMLinkInInterpreter(void); + +typedef struct LLVMOpaqueGenericValue *LLVMGenericValueRef; +typedef struct LLVMOpaqueExecutionEngine *LLVMExecutionEngineRef; +typedef struct LLVMOpaqueMCJITMemoryManager *LLVMMCJITMemoryManagerRef; + +struct LLVMMCJITCompilerOptions { + unsigned OptLevel; + LLVMCodeModel CodeModel; + LLVMBool NoFramePointerElim; + LLVMBool EnableFastISel; + LLVMMCJITMemoryManagerRef MCJMM; +}; + +/*===-- Operations on generic values --------------------------------------===*/ + +LLVMGenericValueRef LLVMCreateGenericValueOfInt(LLVMTypeRef Ty, + unsigned long long N, + LLVMBool IsSigned); + +LLVMGenericValueRef LLVMCreateGenericValueOfPointer(void *P); + +LLVMGenericValueRef LLVMCreateGenericValueOfFloat(LLVMTypeRef Ty, double N); + +unsigned LLVMGenericValueIntWidth(LLVMGenericValueRef GenValRef); + +unsigned long long LLVMGenericValueToInt(LLVMGenericValueRef GenVal, + LLVMBool IsSigned); + +void *LLVMGenericValueToPointer(LLVMGenericValueRef GenVal); + +double LLVMGenericValueToFloat(LLVMTypeRef TyRef, LLVMGenericValueRef GenVal); + +void LLVMDisposeGenericValue(LLVMGenericValueRef GenVal); + +/*===-- Operations on execution engines -----------------------------------===*/ + +LLVMBool LLVMCreateExecutionEngineForModule(LLVMExecutionEngineRef *OutEE, + LLVMModuleRef M, + char **OutError); + +LLVMBool LLVMCreateInterpreterForModule(LLVMExecutionEngineRef *OutInterp, + LLVMModuleRef M, + char **OutError); + +LLVMBool LLVMCreateJITCompilerForModule(LLVMExecutionEngineRef *OutJIT, + LLVMModuleRef M, + unsigned OptLevel, + char **OutError); + +void LLVMInitializeMCJITCompilerOptions( + struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions); + +/** + * Create an MCJIT execution engine for a module, with the given options. It is + * the responsibility of the caller to ensure that all fields in Options up to + * the given SizeOfOptions are initialized. It is correct to pass a smaller + * value of SizeOfOptions that omits some fields. The canonical way of using + * this is: + * + * LLVMMCJITCompilerOptions options; + * LLVMInitializeMCJITCompilerOptions(&options, sizeof(options)); + * ... fill in those options you care about + * LLVMCreateMCJITCompilerForModule(&jit, mod, &options, sizeof(options), + * &error); + * + * Note that this is also correct, though possibly suboptimal: + * + * LLVMCreateMCJITCompilerForModule(&jit, mod, 0, 0, &error); + */ +LLVMBool LLVMCreateMCJITCompilerForModule( + LLVMExecutionEngineRef *OutJIT, LLVMModuleRef M, + struct LLVMMCJITCompilerOptions *Options, size_t SizeOfOptions, + char **OutError); + +void LLVMDisposeExecutionEngine(LLVMExecutionEngineRef EE); + +void LLVMRunStaticConstructors(LLVMExecutionEngineRef EE); + +void LLVMRunStaticDestructors(LLVMExecutionEngineRef EE); + +int LLVMRunFunctionAsMain(LLVMExecutionEngineRef EE, LLVMValueRef F, + unsigned ArgC, const char * const *ArgV, + const char * const *EnvP); + +LLVMGenericValueRef LLVMRunFunction(LLVMExecutionEngineRef EE, LLVMValueRef F, + unsigned NumArgs, + LLVMGenericValueRef *Args); + +void LLVMFreeMachineCodeForFunction(LLVMExecutionEngineRef EE, LLVMValueRef F); + +void LLVMAddModule(LLVMExecutionEngineRef EE, LLVMModuleRef M); + +LLVMBool LLVMRemoveModule(LLVMExecutionEngineRef EE, LLVMModuleRef M, + LLVMModuleRef *OutMod, char **OutError); + +LLVMBool LLVMFindFunction(LLVMExecutionEngineRef EE, const char *Name, + LLVMValueRef *OutFn); + +void *LLVMRecompileAndRelinkFunction(LLVMExecutionEngineRef EE, + LLVMValueRef Fn); + +LLVMTargetDataRef LLVMGetExecutionEngineTargetData(LLVMExecutionEngineRef EE); +LLVMTargetMachineRef +LLVMGetExecutionEngineTargetMachine(LLVMExecutionEngineRef EE); + +void LLVMAddGlobalMapping(LLVMExecutionEngineRef EE, LLVMValueRef Global, + void* Addr); + +void *LLVMGetPointerToGlobal(LLVMExecutionEngineRef EE, LLVMValueRef Global); + +uint64_t LLVMGetGlobalValueAddress(LLVMExecutionEngineRef EE, const char *Name); + +uint64_t LLVMGetFunctionAddress(LLVMExecutionEngineRef EE, const char *Name); + +/*===-- Operations on memory managers -------------------------------------===*/ + +typedef uint8_t *(*LLVMMemoryManagerAllocateCodeSectionCallback)( + void *Opaque, uintptr_t Size, unsigned Alignment, unsigned SectionID, + const char *SectionName); +typedef uint8_t *(*LLVMMemoryManagerAllocateDataSectionCallback)( + void *Opaque, uintptr_t Size, unsigned Alignment, unsigned SectionID, + const char *SectionName, LLVMBool IsReadOnly); +typedef LLVMBool (*LLVMMemoryManagerFinalizeMemoryCallback)( + void *Opaque, char **ErrMsg); +typedef void (*LLVMMemoryManagerDestroyCallback)(void *Opaque); + +/** + * Create a simple custom MCJIT memory manager. This memory manager can + * intercept allocations in a module-oblivious way. This will return NULL + * if any of the passed functions are NULL. + * + * @param Opaque An opaque client object to pass back to the callbacks. + * @param AllocateCodeSection Allocate a block of memory for executable code. + * @param AllocateDataSection Allocate a block of memory for data. + * @param FinalizeMemory Set page permissions and flush cache. Return 0 on + * success, 1 on error. + */ +LLVMMCJITMemoryManagerRef LLVMCreateSimpleMCJITMemoryManager( + void *Opaque, + LLVMMemoryManagerAllocateCodeSectionCallback AllocateCodeSection, + LLVMMemoryManagerAllocateDataSectionCallback AllocateDataSection, + LLVMMemoryManagerFinalizeMemoryCallback FinalizeMemory, + LLVMMemoryManagerDestroyCallback Destroy); + +void LLVMDisposeMCJITMemoryManager(LLVMMCJITMemoryManagerRef MM); + +/*===-- JIT Event Listener functions -------------------------------------===*/ + +LLVMJITEventListenerRef LLVMCreateGDBRegistrationListener(void); +LLVMJITEventListenerRef LLVMCreateIntelJITEventListener(void); +LLVMJITEventListenerRef LLVMCreateOProfileJITEventListener(void); +LLVMJITEventListenerRef LLVMCreatePerfJITEventListener(void); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* defined(__cplusplus) */ + +#endif diff --git a/src/llvm-c/IRReader.h b/src/llvm-c/IRReader.h new file mode 100644 index 000000000..4d0b696e9 --- /dev/null +++ b/src/llvm-c/IRReader.h @@ -0,0 +1,40 @@ +/*===-- llvm-c/IRReader.h - IR Reader C Interface -----------------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file defines the C interface to the IR Reader. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_IRREADER_H +#define LLVM_C_IRREADER_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Read LLVM IR from a memory buffer and convert it into an in-memory Module + * object. Returns 0 on success. + * Optionally returns a human-readable description of any errors that + * occurred during parsing IR. OutMessage must be disposed with + * LLVMDisposeMessage. + * + * @see llvm::ParseIR() + */ +LLVMBool LLVMParseIRInContext(LLVMContextRef ContextRef, + LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM, + char **OutMessage); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/Initialization.h b/src/llvm-c/Initialization.h new file mode 100644 index 000000000..36c41dbd8 --- /dev/null +++ b/src/llvm-c/Initialization.h @@ -0,0 +1,56 @@ +/*===-- llvm-c/Initialization.h - Initialization C Interface ------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to LLVM initialization routines, *| +|* which must be called before you can use the functionality provided by *| +|* the corresponding LLVM library. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_INITIALIZATION_H +#define LLVM_C_INITIALIZATION_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCInitialization Initialization Routines + * @ingroup LLVMC + * + * This module contains routines used to initialize the LLVM system. + * + * @{ + */ + +void LLVMInitializeCore(LLVMPassRegistryRef R); +void LLVMInitializeTransformUtils(LLVMPassRegistryRef R); +void LLVMInitializeScalarOpts(LLVMPassRegistryRef R); +void LLVMInitializeObjCARCOpts(LLVMPassRegistryRef R); +void LLVMInitializeVectorization(LLVMPassRegistryRef R); +void LLVMInitializeInstCombine(LLVMPassRegistryRef R); +void LLVMInitializeAggressiveInstCombiner(LLVMPassRegistryRef R); +void LLVMInitializeIPO(LLVMPassRegistryRef R); +void LLVMInitializeInstrumentation(LLVMPassRegistryRef R); +void LLVMInitializeAnalysis(LLVMPassRegistryRef R); +void LLVMInitializeIPA(LLVMPassRegistryRef R); +void LLVMInitializeCodeGen(LLVMPassRegistryRef R); +void LLVMInitializeTarget(LLVMPassRegistryRef R); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/LinkTimeOptimizer.h b/src/llvm-c/LinkTimeOptimizer.h new file mode 100644 index 000000000..19b4f5cf7 --- /dev/null +++ b/src/llvm-c/LinkTimeOptimizer.h @@ -0,0 +1,68 @@ +//===-- llvm/LinkTimeOptimizer.h - LTO Public C Interface -------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This header provides a C API to use the LLVM link time optimization +// library. This is intended to be used by linkers which are C-only in +// their implementation for performing LTO. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_C_LINKTIMEOPTIMIZER_H +#define LLVM_C_LINKTIMEOPTIMIZER_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCLinkTimeOptimizer Link Time Optimization + * @ingroup LLVMC + * + * @{ + */ + + /// This provides a dummy type for pointers to the LTO object. + typedef void* llvm_lto_t; + + /// This provides a C-visible enumerator to manage status codes. + /// This should map exactly onto the C++ enumerator LTOStatus. + typedef enum llvm_lto_status { + LLVM_LTO_UNKNOWN, + LLVM_LTO_OPT_SUCCESS, + LLVM_LTO_READ_SUCCESS, + LLVM_LTO_READ_FAILURE, + LLVM_LTO_WRITE_FAILURE, + LLVM_LTO_NO_TARGET, + LLVM_LTO_NO_WORK, + LLVM_LTO_MODULE_MERGE_FAILURE, + LLVM_LTO_ASM_FAILURE, + + // Added C-specific error codes + LLVM_LTO_NULL_OBJECT + } llvm_lto_status_t; + + /// This provides C interface to initialize link time optimizer. This allows + /// linker to use dlopen() interface to dynamically load LinkTimeOptimizer. + /// extern "C" helps, because dlopen() interface uses name to find the symbol. + extern llvm_lto_t llvm_create_optimizer(void); + extern void llvm_destroy_optimizer(llvm_lto_t lto); + + extern llvm_lto_status_t llvm_read_object_file + (llvm_lto_t lto, const char* input_filename); + extern llvm_lto_status_t llvm_optimize_modules + (llvm_lto_t lto, const char* output_filename); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/Linker.h b/src/llvm-c/Linker.h new file mode 100644 index 000000000..908513041 --- /dev/null +++ b/src/llvm-c/Linker.h @@ -0,0 +1,41 @@ +/*===-- llvm-c/Linker.h - Module Linker C Interface -------------*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file defines the C interface to the module/file/archive linker. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_LINKER_H +#define LLVM_C_LINKER_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* This enum is provided for backwards-compatibility only. It has no effect. */ +typedef enum { + LLVMLinkerDestroySource = 0, /* This is the default behavior. */ + LLVMLinkerPreserveSource_Removed = 1 /* This option has been deprecated and + should not be used. */ +} LLVMLinkerMode; + +/* Links the source module into the destination module. The source module is + * destroyed. + * The return value is true if an error occurred, false otherwise. + * Use the diagnostic handler to get any diagnostic message. +*/ +LLVMBool LLVMLinkModules2(LLVMModuleRef Dest, LLVMModuleRef Src); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/Object.h b/src/llvm-c/Object.h new file mode 100644 index 000000000..1f6501c8e --- /dev/null +++ b/src/llvm-c/Object.h @@ -0,0 +1,233 @@ +/*===-- llvm-c/Object.h - Object Lib C Iface --------------------*- C++ -*-===*/ +/* */ +/* Part of the LLVM Project, under the Apache License v2.0 with LLVM */ +/* Exceptions. */ +/* See https://llvm.org/LICENSE.txt for license information. */ +/* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception */ +/* */ +/*===----------------------------------------------------------------------===*/ +/* */ +/* This header declares the C interface to libLLVMObject.a, which */ +/* implements object file reading and writing. */ +/* */ +/* Many exotic languages can interoperate with C code but have a harder time */ +/* with C++ due to name mangling. So in addition to C, this interface enables */ +/* tools written in such languages. */ +/* */ +/*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_OBJECT_H +#define LLVM_C_OBJECT_H + +#include "llvm-c/Types.h" +#include "Config/llvm-config.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCObject Object file reading and writing + * @ingroup LLVMC + * + * @{ + */ + +// Opaque type wrappers +typedef struct LLVMOpaqueSectionIterator *LLVMSectionIteratorRef; +typedef struct LLVMOpaqueSymbolIterator *LLVMSymbolIteratorRef; +typedef struct LLVMOpaqueRelocationIterator *LLVMRelocationIteratorRef; + +typedef enum { + LLVMBinaryTypeArchive, /**< Archive file. */ + LLVMBinaryTypeMachOUniversalBinary, /**< Mach-O Universal Binary file. */ + LLVMBinaryTypeCOFFImportFile, /**< COFF Import file. */ + LLVMBinaryTypeIR, /**< LLVM IR. */ + LLVMBinaryTypeWinRes, /**< Windows resource (.res) file. */ + LLVMBinaryTypeCOFF, /**< COFF Object file. */ + LLVMBinaryTypeELF32L, /**< ELF 32-bit, little endian. */ + LLVMBinaryTypeELF32B, /**< ELF 32-bit, big endian. */ + LLVMBinaryTypeELF64L, /**< ELF 64-bit, little endian. */ + LLVMBinaryTypeELF64B, /**< ELF 64-bit, big endian. */ + LLVMBinaryTypeMachO32L, /**< MachO 32-bit, little endian. */ + LLVMBinaryTypeMachO32B, /**< MachO 32-bit, big endian. */ + LLVMBinaryTypeMachO64L, /**< MachO 64-bit, little endian. */ + LLVMBinaryTypeMachO64B, /**< MachO 64-bit, big endian. */ + LLVMBinaryTypeWasm, /**< Web Assembly. */ +} LLVMBinaryType; + +/** + * Create a binary file from the given memory buffer. + * + * The exact type of the binary file will be inferred automatically, and the + * appropriate implementation selected. The context may be NULL except if + * the resulting file is an LLVM IR file. + * + * The memory buffer is not consumed by this function. It is the responsibilty + * of the caller to free it with \c LLVMDisposeMemoryBuffer. + * + * If NULL is returned, the \p ErrorMessage parameter is populated with the + * error's description. It is then the caller's responsibility to free this + * message by calling \c LLVMDisposeMessage. + * + * @see llvm::object::createBinary + */ +LLVMBinaryRef LLVMCreateBinary(LLVMMemoryBufferRef MemBuf, + LLVMContextRef Context, + char **ErrorMessage); + +/** + * Dispose of a binary file. + * + * The binary file does not own its backing buffer. It is the responsibilty + * of the caller to free it with \c LLVMDisposeMemoryBuffer. + */ +void LLVMDisposeBinary(LLVMBinaryRef BR); + +/** + * Retrieves a copy of the memory buffer associated with this object file. + * + * The returned buffer is merely a shallow copy and does not own the actual + * backing buffer of the binary. Nevertheless, it is the responsibility of the + * caller to free it with \c LLVMDisposeMemoryBuffer. + * + * @see llvm::object::getMemoryBufferRef + */ +LLVMMemoryBufferRef LLVMBinaryCopyMemoryBuffer(LLVMBinaryRef BR); + +/** + * Retrieve the specific type of a binary. + * + * @see llvm::object::Binary::getType + */ +LLVMBinaryType LLVMBinaryGetType(LLVMBinaryRef BR); + +/* + * For a Mach-O universal binary file, retrieves the object file corresponding + * to the given architecture if it is present as a slice. + * + * If NULL is returned, the \p ErrorMessage parameter is populated with the + * error's description. It is then the caller's responsibility to free this + * message by calling \c LLVMDisposeMessage. + * + * It is the responsiblity of the caller to free the returned object file by + * calling \c LLVMDisposeBinary. + */ +LLVMBinaryRef LLVMMachOUniversalBinaryCopyObjectForArch(LLVMBinaryRef BR, + const char *Arch, + size_t ArchLen, + char **ErrorMessage); + +/** + * Retrieve a copy of the section iterator for this object file. + * + * If there are no sections, the result is NULL. + * + * The returned iterator is merely a shallow copy. Nevertheless, it is + * the responsibility of the caller to free it with + * \c LLVMDisposeSectionIterator. + * + * @see llvm::object::sections() + */ +LLVMSectionIteratorRef LLVMObjectFileCopySectionIterator(LLVMBinaryRef BR); + +/** + * Returns whether the given section iterator is at the end. + * + * @see llvm::object::section_end + */ +LLVMBool LLVMObjectFileIsSectionIteratorAtEnd(LLVMBinaryRef BR, + LLVMSectionIteratorRef SI); + +/** + * Retrieve a copy of the symbol iterator for this object file. + * + * If there are no symbols, the result is NULL. + * + * The returned iterator is merely a shallow copy. Nevertheless, it is + * the responsibility of the caller to free it with + * \c LLVMDisposeSymbolIterator. + * + * @see llvm::object::symbols() + */ +LLVMSymbolIteratorRef LLVMObjectFileCopySymbolIterator(LLVMBinaryRef BR); + +/** + * Returns whether the given symbol iterator is at the end. + * + * @see llvm::object::symbol_end + */ +LLVMBool LLVMObjectFileIsSymbolIteratorAtEnd(LLVMBinaryRef BR, + LLVMSymbolIteratorRef SI); + +void LLVMDisposeSectionIterator(LLVMSectionIteratorRef SI); + +void LLVMMoveToNextSection(LLVMSectionIteratorRef SI); +void LLVMMoveToContainingSection(LLVMSectionIteratorRef Sect, + LLVMSymbolIteratorRef Sym); + +// ObjectFile Symbol iterators +void LLVMDisposeSymbolIterator(LLVMSymbolIteratorRef SI); +void LLVMMoveToNextSymbol(LLVMSymbolIteratorRef SI); + +// SectionRef accessors +const char *LLVMGetSectionName(LLVMSectionIteratorRef SI); +uint64_t LLVMGetSectionSize(LLVMSectionIteratorRef SI); +const char *LLVMGetSectionContents(LLVMSectionIteratorRef SI); +uint64_t LLVMGetSectionAddress(LLVMSectionIteratorRef SI); +LLVMBool LLVMGetSectionContainsSymbol(LLVMSectionIteratorRef SI, + LLVMSymbolIteratorRef Sym); + +// Section Relocation iterators +LLVMRelocationIteratorRef LLVMGetRelocations(LLVMSectionIteratorRef Section); +void LLVMDisposeRelocationIterator(LLVMRelocationIteratorRef RI); +LLVMBool LLVMIsRelocationIteratorAtEnd(LLVMSectionIteratorRef Section, + LLVMRelocationIteratorRef RI); +void LLVMMoveToNextRelocation(LLVMRelocationIteratorRef RI); + + +// SymbolRef accessors +const char *LLVMGetSymbolName(LLVMSymbolIteratorRef SI); +uint64_t LLVMGetSymbolAddress(LLVMSymbolIteratorRef SI); +uint64_t LLVMGetSymbolSize(LLVMSymbolIteratorRef SI); + +// RelocationRef accessors +uint64_t LLVMGetRelocationOffset(LLVMRelocationIteratorRef RI); +LLVMSymbolIteratorRef LLVMGetRelocationSymbol(LLVMRelocationIteratorRef RI); +uint64_t LLVMGetRelocationType(LLVMRelocationIteratorRef RI); +// NOTE: Caller takes ownership of returned string of the two +// following functions. +const char *LLVMGetRelocationTypeName(LLVMRelocationIteratorRef RI); +const char *LLVMGetRelocationValueString(LLVMRelocationIteratorRef RI); + +/** Deprecated: Use LLVMBinaryRef instead. */ +typedef struct LLVMOpaqueObjectFile *LLVMObjectFileRef; + +/** Deprecated: Use LLVMCreateBinary instead. */ +LLVMObjectFileRef LLVMCreateObjectFile(LLVMMemoryBufferRef MemBuf); + +/** Deprecated: Use LLVMDisposeBinary instead. */ +void LLVMDisposeObjectFile(LLVMObjectFileRef ObjectFile); + +/** Deprecated: Use LLVMObjectFileCopySectionIterator instead. */ +LLVMSectionIteratorRef LLVMGetSections(LLVMObjectFileRef ObjectFile); + +/** Deprecated: Use LLVMObjectFileIsSectionIteratorAtEnd instead. */ +LLVMBool LLVMIsSectionIteratorAtEnd(LLVMObjectFileRef ObjectFile, + LLVMSectionIteratorRef SI); + +/** Deprecated: Use LLVMObjectFileCopySymbolIterator instead. */ +LLVMSymbolIteratorRef LLVMGetSymbols(LLVMObjectFileRef ObjectFile); + +/** Deprecated: Use LLVMObjectFileIsSymbolIteratorAtEnd instead. */ +LLVMBool LLVMIsSymbolIteratorAtEnd(LLVMObjectFileRef ObjectFile, + LLVMSymbolIteratorRef SI); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* defined(__cplusplus) */ + +#endif diff --git a/src/llvm-c/OrcBindings.h b/src/llvm-c/OrcBindings.h new file mode 100644 index 000000000..9e92371b5 --- /dev/null +++ b/src/llvm-c/OrcBindings.h @@ -0,0 +1,172 @@ +/*===----------- llvm-c/OrcBindings.h - Orc Lib C Iface ---------*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMOrcJIT.a, which implements *| +|* JIT compilation of LLVM IR. *| +|* *| +|* Many exotic languages can interoperate with C code but have a harder time *| +|* with C++ due to name mangling. So in addition to C, this interface enables *| +|* tools written in such languages. *| +|* *| +|* Note: This interface is experimental. It is *NOT* stable, and may be *| +|* changed without warning. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_ORCBINDINGS_H +#define LLVM_C_ORCBINDINGS_H + +#include "llvm-c/Error.h" +#include "llvm-c/Object.h" +#include "llvm-c/TargetMachine.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct LLVMOrcOpaqueJITStack *LLVMOrcJITStackRef; +typedef uint64_t LLVMOrcModuleHandle; +typedef uint64_t LLVMOrcTargetAddress; +typedef uint64_t (*LLVMOrcSymbolResolverFn)(const char *Name, void *LookupCtx); +typedef uint64_t (*LLVMOrcLazyCompileCallbackFn)(LLVMOrcJITStackRef JITStack, + void *CallbackCtx); + +/** + * Create an ORC JIT stack. + * + * The client owns the resulting stack, and must call OrcDisposeInstance(...) + * to destroy it and free its memory. The JIT stack will take ownership of the + * TargetMachine, which will be destroyed when the stack is destroyed. The + * client should not attempt to dispose of the Target Machine, or it will result + * in a double-free. + */ +LLVMOrcJITStackRef LLVMOrcCreateInstance(LLVMTargetMachineRef TM); + +/** + * Get the error message for the most recent error (if any). + * + * This message is owned by the ORC JIT Stack and will be freed when the stack + * is disposed of by LLVMOrcDisposeInstance. + */ +const char *LLVMOrcGetErrorMsg(LLVMOrcJITStackRef JITStack); + +/** + * Mangle the given symbol. + * Memory will be allocated for MangledSymbol to hold the result. The client + */ +void LLVMOrcGetMangledSymbol(LLVMOrcJITStackRef JITStack, char **MangledSymbol, + const char *Symbol); + +/** + * Dispose of a mangled symbol. + */ +void LLVMOrcDisposeMangledSymbol(char *MangledSymbol); + +/** + * Create a lazy compile callback. + */ +LLVMErrorRef LLVMOrcCreateLazyCompileCallback( + LLVMOrcJITStackRef JITStack, LLVMOrcTargetAddress *RetAddr, + LLVMOrcLazyCompileCallbackFn Callback, void *CallbackCtx); + +/** + * Create a named indirect call stub. + */ +LLVMErrorRef LLVMOrcCreateIndirectStub(LLVMOrcJITStackRef JITStack, + const char *StubName, + LLVMOrcTargetAddress InitAddr); + +/** + * Set the pointer for the given indirect stub. + */ +LLVMErrorRef LLVMOrcSetIndirectStubPointer(LLVMOrcJITStackRef JITStack, + const char *StubName, + LLVMOrcTargetAddress NewAddr); + +/** + * Add module to be eagerly compiled. + */ +LLVMErrorRef LLVMOrcAddEagerlyCompiledIR(LLVMOrcJITStackRef JITStack, + LLVMOrcModuleHandle *RetHandle, + LLVMModuleRef Mod, + LLVMOrcSymbolResolverFn SymbolResolver, + void *SymbolResolverCtx); + +/** + * Add module to be lazily compiled one function at a time. + */ +LLVMErrorRef LLVMOrcAddLazilyCompiledIR(LLVMOrcJITStackRef JITStack, + LLVMOrcModuleHandle *RetHandle, + LLVMModuleRef Mod, + LLVMOrcSymbolResolverFn SymbolResolver, + void *SymbolResolverCtx); + +/** + * Add an object file. + * + * This method takes ownership of the given memory buffer and attempts to add + * it to the JIT as an object file. + * Clients should *not* dispose of the 'Obj' argument: the JIT will manage it + * from this call onwards. + */ +LLVMErrorRef LLVMOrcAddObjectFile(LLVMOrcJITStackRef JITStack, + LLVMOrcModuleHandle *RetHandle, + LLVMMemoryBufferRef Obj, + LLVMOrcSymbolResolverFn SymbolResolver, + void *SymbolResolverCtx); + +/** + * Remove a module set from the JIT. + * + * This works for all modules that can be added via OrcAdd*, including object + * files. + */ +LLVMErrorRef LLVMOrcRemoveModule(LLVMOrcJITStackRef JITStack, + LLVMOrcModuleHandle H); + +/** + * Get symbol address from JIT instance. + */ +LLVMErrorRef LLVMOrcGetSymbolAddress(LLVMOrcJITStackRef JITStack, + LLVMOrcTargetAddress *RetAddr, + const char *SymbolName); + +/** + * Get symbol address from JIT instance, searching only the specified + * handle. + */ +LLVMErrorRef LLVMOrcGetSymbolAddressIn(LLVMOrcJITStackRef JITStack, + LLVMOrcTargetAddress *RetAddr, + LLVMOrcModuleHandle H, + const char *SymbolName); + +/** + * Dispose of an ORC JIT stack. + */ +LLVMErrorRef LLVMOrcDisposeInstance(LLVMOrcJITStackRef JITStack); + +/** + * Register a JIT Event Listener. + * + * A NULL listener is ignored. + */ +void LLVMOrcRegisterJITEventListener(LLVMOrcJITStackRef JITStack, LLVMJITEventListenerRef L); + +/** + * Unegister a JIT Event Listener. + * + * A NULL listener is ignored. + */ +void LLVMOrcUnregisterJITEventListener(LLVMOrcJITStackRef JITStack, LLVMJITEventListenerRef L); + +#ifdef __cplusplus +} +#endif /* extern "C" */ + +#endif /* LLVM_C_ORCBINDINGS_H */ diff --git a/src/llvm-c/Remarks.h b/src/llvm-c/Remarks.h new file mode 100644 index 000000000..88eb5120c --- /dev/null +++ b/src/llvm-c/Remarks.h @@ -0,0 +1,329 @@ +/*===-- llvm-c/Remarks.h - Remarks Public C Interface -------------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header provides a public interface to a remark diagnostics library. *| +|* LLVM provides an implementation of this interface. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_REMARKS_H +#define LLVM_C_REMARKS_H + +#include "llvm-c/Types.h" +#ifdef __cplusplus +#include +extern "C" { +#else +#include +#endif /* !defined(__cplusplus) */ + +/** + * @defgroup LLVMCREMARKS Remarks + * @ingroup LLVMC + * + * @{ + */ + +#define REMARKS_API_VERSION 0 + +/** + * The type of the emitted remark. + */ +enum LLVMRemarkType { + LLVMRemarkTypeUnknown, + LLVMRemarkTypePassed, + LLVMRemarkTypeMissed, + LLVMRemarkTypeAnalysis, + LLVMRemarkTypeAnalysisFPCommute, + LLVMRemarkTypeAnalysisAliasing, + LLVMRemarkTypeFailure +}; + +/** + * String containing a buffer and a length. The buffer is not guaranteed to be + * zero-terminated. + * + * \since REMARKS_API_VERSION=0 + */ +typedef struct LLVMRemarkOpaqueString *LLVMRemarkStringRef; + +/** + * Returns the buffer holding the string. + * + * \since REMARKS_API_VERSION=0 + */ +extern const char *LLVMRemarkStringGetData(LLVMRemarkStringRef String); + +/** + * Returns the size of the string. + * + * \since REMARKS_API_VERSION=0 + */ +extern uint32_t LLVMRemarkStringGetLen(LLVMRemarkStringRef String); + +/** + * DebugLoc containing File, Line and Column. + * + * \since REMARKS_API_VERSION=0 + */ +typedef struct LLVMRemarkOpaqueDebugLoc *LLVMRemarkDebugLocRef; + +/** + * Return the path to the source file for a debug location. + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMRemarkStringRef +LLVMRemarkDebugLocGetSourceFilePath(LLVMRemarkDebugLocRef DL); + +/** + * Return the line in the source file for a debug location. + * + * \since REMARKS_API_VERSION=0 + */ +extern uint32_t LLVMRemarkDebugLocGetSourceLine(LLVMRemarkDebugLocRef DL); + +/** + * Return the column in the source file for a debug location. + * + * \since REMARKS_API_VERSION=0 + */ +extern uint32_t LLVMRemarkDebugLocGetSourceColumn(LLVMRemarkDebugLocRef DL); + +/** + * Element of the "Args" list. The key might give more information about what + * the semantics of the value are, e.g. "Callee" will tell you that the value + * is a symbol that names a function. + * + * \since REMARKS_API_VERSION=0 + */ +typedef struct LLVMRemarkOpaqueArg *LLVMRemarkArgRef; + +/** + * Returns the key of an argument. The key defines what the value is, and the + * same key can appear multiple times in the list of arguments. + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMRemarkStringRef LLVMRemarkArgGetKey(LLVMRemarkArgRef Arg); + +/** + * Returns the value of an argument. This is a string that can contain newlines. + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMRemarkStringRef LLVMRemarkArgGetValue(LLVMRemarkArgRef Arg); + +/** + * Returns the debug location that is attached to the value of this argument. + * + * If there is no debug location, the return value will be `NULL`. + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMRemarkDebugLocRef LLVMRemarkArgGetDebugLoc(LLVMRemarkArgRef Arg); + +/** + * A remark emitted by the compiler. + * + * \since REMARKS_API_VERSION=0 + */ +typedef struct LLVMRemarkOpaqueEntry *LLVMRemarkEntryRef; + +/** + * Free the resources used by the remark entry. + * + * \since REMARKS_API_VERSION=0 + */ +extern void LLVMRemarkEntryDispose(LLVMRemarkEntryRef Remark); + +/** + * The type of the remark. For example, it can allow users to only keep the + * missed optimizations from the compiler. + * + * \since REMARKS_API_VERSION=0 + */ +extern enum LLVMRemarkType LLVMRemarkEntryGetType(LLVMRemarkEntryRef Remark); + +/** + * Get the name of the pass that emitted this remark. + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMRemarkStringRef +LLVMRemarkEntryGetPassName(LLVMRemarkEntryRef Remark); + +/** + * Get an identifier of the remark. + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMRemarkStringRef +LLVMRemarkEntryGetRemarkName(LLVMRemarkEntryRef Remark); + +/** + * Get the name of the function being processed when the remark was emitted. + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMRemarkStringRef +LLVMRemarkEntryGetFunctionName(LLVMRemarkEntryRef Remark); + +/** + * Returns the debug location that is attached to this remark. + * + * If there is no debug location, the return value will be `NULL`. + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMRemarkDebugLocRef +LLVMRemarkEntryGetDebugLoc(LLVMRemarkEntryRef Remark); + +/** + * Return the hotness of the remark. + * + * A hotness of `0` means this value is not set. + * + * \since REMARKS_API_VERSION=0 + */ +extern uint64_t LLVMRemarkEntryGetHotness(LLVMRemarkEntryRef Remark); + +/** + * The number of arguments the remark holds. + * + * \since REMARKS_API_VERSION=0 + */ +extern uint32_t LLVMRemarkEntryGetNumArgs(LLVMRemarkEntryRef Remark); + +/** + * Get a new iterator to iterate over a remark's argument. + * + * If there are no arguments in \p Remark, the return value will be `NULL`. + * + * The lifetime of the returned value is bound to the lifetime of \p Remark. + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMRemarkArgRef LLVMRemarkEntryGetFirstArg(LLVMRemarkEntryRef Remark); + +/** + * Get the next argument in \p Remark from the position of \p It. + * + * Returns `NULL` if there are no more arguments available. + * + * The lifetime of the returned value is bound to the lifetime of \p Remark. + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMRemarkArgRef LLVMRemarkEntryGetNextArg(LLVMRemarkArgRef It, + LLVMRemarkEntryRef Remark); + +typedef struct LLVMRemarkOpaqueParser *LLVMRemarkParserRef; + +/** + * Creates a remark parser that can be used to parse the buffer located in \p + * Buf of size \p Size bytes. + * + * \p Buf cannot be `NULL`. + * + * This function should be paired with LLVMRemarkParserDispose() to avoid + * leaking resources. + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMRemarkParserRef LLVMRemarkParserCreateYAML(const void *Buf, + uint64_t Size); + +/** + * Returns the next remark in the file. + * + * The value pointed to by the return value needs to be disposed using a call to + * LLVMRemarkEntryDispose(). + * + * All the entries in the returned value that are of LLVMRemarkStringRef type + * will become invalidated once a call to LLVMRemarkParserDispose is made. + * + * If the parser reaches the end of the buffer, the return value will be `NULL`. + * + * In the case of an error, the return value will be `NULL`, and: + * + * 1) LLVMRemarkParserHasError() will return `1`. + * + * 2) LLVMRemarkParserGetErrorMessage() will return a descriptive error + * message. + * + * An error may occur if: + * + * 1) An argument is invalid. + * + * 2) There is a parsing error. This can occur on things like malformed YAML. + * + * 3) There is a Remark semantic error. This can occur on well-formed files with + * missing or extra fields. + * + * Here is a quick example of the usage: + * + * ``` + * LLVMRemarkParserRef Parser = LLVMRemarkParserCreateYAML(Buf, Size); + * LLVMRemarkEntryRef Remark = NULL; + * while ((Remark = LLVMRemarkParserGetNext(Parser))) { + * // use Remark + * LLVMRemarkEntryDispose(Remark); // Release memory. + * } + * bool HasError = LLVMRemarkParserHasError(Parser); + * LLVMRemarkParserDispose(Parser); + * ``` + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMRemarkEntryRef LLVMRemarkParserGetNext(LLVMRemarkParserRef Parser); + +/** + * Returns `1` if the parser encountered an error while parsing the buffer. + * + * \since REMARKS_API_VERSION=0 + */ +extern LLVMBool LLVMRemarkParserHasError(LLVMRemarkParserRef Parser); + +/** + * Returns a null-terminated string containing an error message. + * + * In case of no error, the result is `NULL`. + * + * The memory of the string is bound to the lifetime of \p Parser. If + * LLVMRemarkParserDispose() is called, the memory of the string will be + * released. + * + * \since REMARKS_API_VERSION=0 + */ +extern const char *LLVMRemarkParserGetErrorMessage(LLVMRemarkParserRef Parser); + +/** + * Releases all the resources used by \p Parser. + * + * \since REMARKS_API_VERSION=0 + */ +extern void LLVMRemarkParserDispose(LLVMRemarkParserRef Parser); + +/** + * Returns the version of the remarks library. + * + * \since REMARKS_API_VERSION=0 + */ +extern uint32_t LLVMRemarkVersion(void); + +/** + * @} // endgoup LLVMCREMARKS + */ + +#ifdef __cplusplus +} +#endif /* !defined(__cplusplus) */ + +#endif /* LLVM_C_REMARKS_H */ diff --git a/src/llvm-c/Support.h b/src/llvm-c/Support.h new file mode 100644 index 000000000..097f78424 --- /dev/null +++ b/src/llvm-c/Support.h @@ -0,0 +1,65 @@ +/*===-- llvm-c/Support.h - Support C Interface --------------------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file defines the C interface to the LLVM support library. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_SUPPORT_H +#define LLVM_C_SUPPORT_H + +#include "llvm-c/DataTypes.h" +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * This function permanently loads the dynamic library at the given path. + * It is safe to call this function multiple times for the same library. + * + * @see sys::DynamicLibrary::LoadLibraryPermanently() + */ +LLVMBool LLVMLoadLibraryPermanently(const char* Filename); + +/** + * This function parses the given arguments using the LLVM command line parser. + * Note that the only stable thing about this function is its signature; you + * cannot rely on any particular set of command line arguments being interpreted + * the same way across LLVM versions. + * + * @see llvm::cl::ParseCommandLineOptions() + */ +void LLVMParseCommandLineOptions(int argc, const char *const *argv, + const char *Overview); + +/** + * This function will search through all previously loaded dynamic + * libraries for the symbol \p symbolName. If it is found, the address of + * that symbol is returned. If not, null is returned. + * + * @see sys::DynamicLibrary::SearchForAddressOfSymbol() + */ +void *LLVMSearchForAddressOfSymbol(const char *symbolName); + +/** + * This functions permanently adds the symbol \p symbolName with the + * value \p symbolValue. These symbols are searched before any + * libraries. + * + * @see sys::DynamicLibrary::AddSymbol() + */ +void LLVMAddSymbol(const char *symbolName, void *symbolValue); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/Target.h b/src/llvm-c/Target.h new file mode 100644 index 000000000..e0d0c0b29 --- /dev/null +++ b/src/llvm-c/Target.h @@ -0,0 +1,295 @@ +/*===-- llvm-c/Target.h - Target Lib C Iface --------------------*- C++ -*-===*/ +/* */ +/* Part of the LLVM Project, under the Apache License v2.0 with LLVM */ +/* Exceptions. */ +/* See https://llvm.org/LICENSE.txt for license information. */ +/* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception */ +/* */ +/*===----------------------------------------------------------------------===*/ +/* */ +/* This header declares the C interface to libLLVMTarget.a, which */ +/* implements target information. */ +/* */ +/* Many exotic languages can interoperate with C code but have a harder time */ +/* with C++ due to name mangling. So in addition to C, this interface enables */ +/* tools written in such languages. */ +/* */ +/*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_TARGET_H +#define LLVM_C_TARGET_H + +#include "Types.h" +#include "Config/llvm-config.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCTarget Target information + * @ingroup LLVMC + * + * @{ + */ + +enum LLVMByteOrdering { LLVMBigEndian, LLVMLittleEndian }; + +typedef struct LLVMOpaqueTargetData *LLVMTargetDataRef; +typedef struct LLVMOpaqueTargetLibraryInfotData *LLVMTargetLibraryInfoRef; + +/* Declare all of the target-initialization functions that are available. */ +#define LLVM_TARGET(TargetName) \ + void LLVMInitialize##TargetName##TargetInfo(void); +#include "Config/Targets.def" +#undef LLVM_TARGET /* Explicit undef to make SWIG happier */ + +#define LLVM_TARGET(TargetName) void LLVMInitialize##TargetName##Target(void); +#include "Config/Targets.def" +#undef LLVM_TARGET /* Explicit undef to make SWIG happier */ + +#define LLVM_TARGET(TargetName) \ + void LLVMInitialize##TargetName##TargetMC(void); +#include "Config/Targets.def" +#undef LLVM_TARGET /* Explicit undef to make SWIG happier */ + +/* Declare all of the available assembly printer initialization functions. */ +#define LLVM_ASM_PRINTER(TargetName) \ + void LLVMInitialize##TargetName##AsmPrinter(void); +#include "Config/AsmPrinters.def" +#undef LLVM_ASM_PRINTER /* Explicit undef to make SWIG happier */ + +/* Declare all of the available assembly parser initialization functions. */ +#define LLVM_ASM_PARSER(TargetName) \ + void LLVMInitialize##TargetName##AsmParser(void); +#include "Config/AsmParsers.def" +#undef LLVM_ASM_PARSER /* Explicit undef to make SWIG happier */ + +/* Declare all of the available disassembler initialization functions. */ +#define LLVM_DISASSEMBLER(TargetName) \ + void LLVMInitialize##TargetName##Disassembler(void); +#include "Config/Disassemblers.def" +#undef LLVM_DISASSEMBLER /* Explicit undef to make SWIG happier */ + +/** LLVMInitializeAllTargetInfos - The main program should call this function if + it wants access to all available targets that LLVM is configured to + support. */ +static inline void LLVMInitializeAllTargetInfos(void) { +#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetInfo(); +#include "Config/Targets.def" +#undef LLVM_TARGET /* Explicit undef to make SWIG happier */ +} + +/** LLVMInitializeAllTargets - The main program should call this function if it + wants to link in all available targets that LLVM is configured to + support. */ +static inline void LLVMInitializeAllTargets(void) { +#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##Target(); +#include "Config/Targets.def" +#undef LLVM_TARGET /* Explicit undef to make SWIG happier */ +} + +/** LLVMInitializeAllTargetMCs - The main program should call this function if + it wants access to all available target MC that LLVM is configured to + support. */ +static inline void LLVMInitializeAllTargetMCs(void) { +#define LLVM_TARGET(TargetName) LLVMInitialize##TargetName##TargetMC(); +#include "Config/Targets.def" +#undef LLVM_TARGET /* Explicit undef to make SWIG happier */ +} + +/** LLVMInitializeAllAsmPrinters - The main program should call this function if + it wants all asm printers that LLVM is configured to support, to make them + available via the TargetRegistry. */ +static inline void LLVMInitializeAllAsmPrinters(void) { +#define LLVM_ASM_PRINTER(TargetName) LLVMInitialize##TargetName##AsmPrinter(); +#include "Config/AsmPrinters.def" +#undef LLVM_ASM_PRINTER /* Explicit undef to make SWIG happier */ +} + +/** LLVMInitializeAllAsmParsers - The main program should call this function if + it wants all asm parsers that LLVM is configured to support, to make them + available via the TargetRegistry. */ +static inline void LLVMInitializeAllAsmParsers(void) { +#define LLVM_ASM_PARSER(TargetName) LLVMInitialize##TargetName##AsmParser(); +#include "Config/AsmParsers.def" +#undef LLVM_ASM_PARSER /* Explicit undef to make SWIG happier */ +} + +/** LLVMInitializeAllDisassemblers - The main program should call this function + if it wants all disassemblers that LLVM is configured to support, to make + them available via the TargetRegistry. */ +static inline void LLVMInitializeAllDisassemblers(void) { +#define LLVM_DISASSEMBLER(TargetName) \ + LLVMInitialize##TargetName##Disassembler(); +#include "Config/Disassemblers.def" +#undef LLVM_DISASSEMBLER /* Explicit undef to make SWIG happier */ +} + +/** LLVMInitializeNativeTarget - The main program should call this function to + initialize the native target corresponding to the host. This is useful + for JIT applications to ensure that the target gets linked in correctly. */ +static inline LLVMBool LLVMInitializeNativeTarget(void) { + /* If we have a native target, initialize it to ensure it is linked in. */ +#ifdef LLVM_NATIVE_TARGET + LLVM_NATIVE_TARGETINFO(); + LLVM_NATIVE_TARGET(); + LLVM_NATIVE_TARGETMC(); + return 0; +#else + return 1; +#endif +} + +/** LLVMInitializeNativeTargetAsmParser - The main program should call this + function to initialize the parser for the native target corresponding to the + host. */ +static inline LLVMBool LLVMInitializeNativeAsmParser(void) { +#ifdef LLVM_NATIVE_ASMPARSER + LLVM_NATIVE_ASMPARSER(); + return 0; +#else + return 1; +#endif +} + +/** LLVMInitializeNativeTargetAsmPrinter - The main program should call this + function to initialize the printer for the native target corresponding to + the host. */ +static inline LLVMBool LLVMInitializeNativeAsmPrinter(void) { +#ifdef LLVM_NATIVE_ASMPRINTER + LLVM_NATIVE_ASMPRINTER(); + return 0; +#else + return 1; +#endif +} + +/** LLVMInitializeNativeTargetDisassembler - The main program should call this + function to initialize the disassembler for the native target corresponding + to the host. */ +static inline LLVMBool LLVMInitializeNativeDisassembler(void) { +#ifdef LLVM_NATIVE_DISASSEMBLER + LLVM_NATIVE_DISASSEMBLER(); + return 0; +#else + return 1; +#endif +} + +/*===-- Target Data -------------------------------------------------------===*/ + +/** + * Obtain the data layout for a module. + * + * @see Module::getDataLayout() + */ +LLVMTargetDataRef LLVMGetModuleDataLayout(LLVMModuleRef M); + +/** + * Set the data layout for a module. + * + * @see Module::setDataLayout() + */ +void LLVMSetModuleDataLayout(LLVMModuleRef M, LLVMTargetDataRef DL); + +/** Creates target data from a target layout string. + See the constructor llvm::DataLayout::DataLayout. */ +LLVMTargetDataRef LLVMCreateTargetData(const char *StringRep); + +/** Deallocates a TargetData. + See the destructor llvm::DataLayout::~DataLayout. */ +void LLVMDisposeTargetData(LLVMTargetDataRef TD); + +/** Adds target library information to a pass manager. This does not take + ownership of the target library info. + See the method llvm::PassManagerBase::add. */ +void LLVMAddTargetLibraryInfo(LLVMTargetLibraryInfoRef TLI, + LLVMPassManagerRef PM); + +/** Converts target data to a target layout string. The string must be disposed + with LLVMDisposeMessage. + See the constructor llvm::DataLayout::DataLayout. */ +char *LLVMCopyStringRepOfTargetData(LLVMTargetDataRef TD); + +/** Returns the byte order of a target, either LLVMBigEndian or + LLVMLittleEndian. + See the method llvm::DataLayout::isLittleEndian. */ +enum LLVMByteOrdering LLVMByteOrder(LLVMTargetDataRef TD); + +/** Returns the pointer size in bytes for a target. + See the method llvm::DataLayout::getPointerSize. */ +unsigned LLVMPointerSize(LLVMTargetDataRef TD); + +/** Returns the pointer size in bytes for a target for a specified + address space. + See the method llvm::DataLayout::getPointerSize. */ +unsigned LLVMPointerSizeForAS(LLVMTargetDataRef TD, unsigned AS); + +/** Returns the integer type that is the same size as a pointer on a target. + See the method llvm::DataLayout::getIntPtrType. */ +LLVMTypeRef LLVMIntPtrType(LLVMTargetDataRef TD); + +/** Returns the integer type that is the same size as a pointer on a target. + This version allows the address space to be specified. + See the method llvm::DataLayout::getIntPtrType. */ +LLVMTypeRef LLVMIntPtrTypeForAS(LLVMTargetDataRef TD, unsigned AS); + +/** Returns the integer type that is the same size as a pointer on a target. + See the method llvm::DataLayout::getIntPtrType. */ +LLVMTypeRef LLVMIntPtrTypeInContext(LLVMContextRef C, LLVMTargetDataRef TD); + +/** Returns the integer type that is the same size as a pointer on a target. + This version allows the address space to be specified. + See the method llvm::DataLayout::getIntPtrType. */ +LLVMTypeRef LLVMIntPtrTypeForASInContext(LLVMContextRef C, LLVMTargetDataRef TD, + unsigned AS); + +/** Computes the size of a type in bytes for a target. + See the method llvm::DataLayout::getTypeSizeInBits. */ +unsigned long long LLVMSizeOfTypeInBits(LLVMTargetDataRef TD, LLVMTypeRef Ty); + +/** Computes the storage size of a type in bytes for a target. + See the method llvm::DataLayout::getTypeStoreSize. */ +unsigned long long LLVMStoreSizeOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty); + +/** Computes the ABI size of a type in bytes for a target. + See the method llvm::DataLayout::getTypeAllocSize. */ +unsigned long long LLVMABISizeOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty); + +/** Computes the ABI alignment of a type in bytes for a target. + See the method llvm::DataLayout::getTypeABISize. */ +unsigned LLVMABIAlignmentOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty); + +/** Computes the call frame alignment of a type in bytes for a target. + See the method llvm::DataLayout::getTypeABISize. */ +unsigned LLVMCallFrameAlignmentOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty); + +/** Computes the preferred alignment of a type in bytes for a target. + See the method llvm::DataLayout::getTypeABISize. */ +unsigned LLVMPreferredAlignmentOfType(LLVMTargetDataRef TD, LLVMTypeRef Ty); + +/** Computes the preferred alignment of a global variable in bytes for a target. + See the method llvm::DataLayout::getPreferredAlignment. */ +unsigned LLVMPreferredAlignmentOfGlobal(LLVMTargetDataRef TD, + LLVMValueRef GlobalVar); + +/** Computes the structure element that contains the byte offset for a target. + See the method llvm::StructLayout::getElementContainingOffset. */ +unsigned LLVMElementAtOffset(LLVMTargetDataRef TD, LLVMTypeRef StructTy, + unsigned long long Offset); + +/** Computes the byte offset of the indexed struct element for a target. + See the method llvm::StructLayout::getElementContainingOffset. */ +unsigned long long LLVMOffsetOfElement(LLVMTargetDataRef TD, + LLVMTypeRef StructTy, unsigned Element); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* defined(__cplusplus) */ + +#endif diff --git a/src/llvm-c/TargetMachine.h b/src/llvm-c/TargetMachine.h new file mode 100644 index 000000000..28d7c0968 --- /dev/null +++ b/src/llvm-c/TargetMachine.h @@ -0,0 +1,163 @@ +/*===-- llvm-c/TargetMachine.h - Target Machine Library C Interface - C++ -*-=*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to the Target and TargetMachine *| +|* classes, which can be used to generate assembly or object files. *| +|* *| +|* Many exotic languages can interoperate with C code but have a harder time *| +|* with C++ due to name mangling. So in addition to C, this interface enables *| +|* tools written in such languages. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_TARGETMACHINE_H +#define LLVM_C_TARGETMACHINE_H + +#include "llvm-c/Target.h" +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif +typedef struct LLVMOpaqueTargetMachine *LLVMTargetMachineRef; +typedef struct LLVMTarget *LLVMTargetRef; + +typedef enum { + LLVMCodeGenLevelNone, + LLVMCodeGenLevelLess, + LLVMCodeGenLevelDefault, + LLVMCodeGenLevelAggressive +} LLVMCodeGenOptLevel; + +typedef enum { + LLVMRelocDefault, + LLVMRelocStatic, + LLVMRelocPIC, + LLVMRelocDynamicNoPic, + LLVMRelocROPI, + LLVMRelocRWPI, + LLVMRelocROPI_RWPI +} LLVMRelocMode; + +typedef enum { + LLVMCodeModelDefault, + LLVMCodeModelJITDefault, + LLVMCodeModelTiny, + LLVMCodeModelSmall, + LLVMCodeModelKernel, + LLVMCodeModelMedium, + LLVMCodeModelLarge +} LLVMCodeModel; + +typedef enum { + LLVMAssemblyFile, + LLVMObjectFile +} LLVMCodeGenFileType; + +/** Returns the first llvm::Target in the registered targets list. */ +LLVMTargetRef LLVMGetFirstTarget(void); +/** Returns the next llvm::Target given a previous one (or null if there's none) */ +LLVMTargetRef LLVMGetNextTarget(LLVMTargetRef T); + +/*===-- Target ------------------------------------------------------------===*/ +/** Finds the target corresponding to the given name and stores it in \p T. + Returns 0 on success. */ +LLVMTargetRef LLVMGetTargetFromName(const char *Name); + +/** Finds the target corresponding to the given triple and stores it in \p T. + Returns 0 on success. Optionally returns any error in ErrorMessage. + Use LLVMDisposeMessage to dispose the message. */ +LLVMBool LLVMGetTargetFromTriple(const char* Triple, LLVMTargetRef *T, + char **ErrorMessage); + +/** Returns the name of a target. See llvm::Target::getName */ +const char *LLVMGetTargetName(LLVMTargetRef T); + +/** Returns the description of a target. See llvm::Target::getDescription */ +const char *LLVMGetTargetDescription(LLVMTargetRef T); + +/** Returns if the target has a JIT */ +LLVMBool LLVMTargetHasJIT(LLVMTargetRef T); + +/** Returns if the target has a TargetMachine associated */ +LLVMBool LLVMTargetHasTargetMachine(LLVMTargetRef T); + +/** Returns if the target as an ASM backend (required for emitting output) */ +LLVMBool LLVMTargetHasAsmBackend(LLVMTargetRef T); + +/*===-- Target Machine ----------------------------------------------------===*/ +/** Creates a new llvm::TargetMachine. See llvm::Target::createTargetMachine */ +LLVMTargetMachineRef LLVMCreateTargetMachine(LLVMTargetRef T, + const char *Triple, const char *CPU, const char *Features, + LLVMCodeGenOptLevel Level, LLVMRelocMode Reloc, LLVMCodeModel CodeModel); + +/** Dispose the LLVMTargetMachineRef instance generated by + LLVMCreateTargetMachine. */ +void LLVMDisposeTargetMachine(LLVMTargetMachineRef T); + +/** Returns the Target used in a TargetMachine */ +LLVMTargetRef LLVMGetTargetMachineTarget(LLVMTargetMachineRef T); + +/** Returns the triple used creating this target machine. See + llvm::TargetMachine::getTriple. The result needs to be disposed with + LLVMDisposeMessage. */ +char *LLVMGetTargetMachineTriple(LLVMTargetMachineRef T); + +/** Returns the cpu used creating this target machine. See + llvm::TargetMachine::getCPU. The result needs to be disposed with + LLVMDisposeMessage. */ +char *LLVMGetTargetMachineCPU(LLVMTargetMachineRef T); + +/** Returns the feature string used creating this target machine. See + llvm::TargetMachine::getFeatureString. The result needs to be disposed with + LLVMDisposeMessage. */ +char *LLVMGetTargetMachineFeatureString(LLVMTargetMachineRef T); + +/** Create a DataLayout based on the targetMachine. */ +LLVMTargetDataRef LLVMCreateTargetDataLayout(LLVMTargetMachineRef T); + +/** Set the target machine's ASM verbosity. */ +void LLVMSetTargetMachineAsmVerbosity(LLVMTargetMachineRef T, + LLVMBool VerboseAsm); + +/** Emits an asm or object file for the given module to the filename. This + wraps several c++ only classes (among them a file stream). Returns any + error in ErrorMessage. Use LLVMDisposeMessage to dispose the message. */ +LLVMBool LLVMTargetMachineEmitToFile(LLVMTargetMachineRef T, LLVMModuleRef M, + char *Filename, LLVMCodeGenFileType codegen, char **ErrorMessage); + +/** Compile the LLVM IR stored in \p M and store the result in \p OutMemBuf. */ +LLVMBool LLVMTargetMachineEmitToMemoryBuffer(LLVMTargetMachineRef T, LLVMModuleRef M, + LLVMCodeGenFileType codegen, char** ErrorMessage, LLVMMemoryBufferRef *OutMemBuf); + +/*===-- Triple ------------------------------------------------------------===*/ +/** Get a triple for the host machine as a string. The result needs to be + disposed with LLVMDisposeMessage. */ +char* LLVMGetDefaultTargetTriple(void); + +/** Normalize a target triple. The result needs to be disposed with + LLVMDisposeMessage. */ +char* LLVMNormalizeTargetTriple(const char* triple); + +/** Get the host CPU as a string. The result needs to be disposed with + LLVMDisposeMessage. */ +char* LLVMGetHostCPUName(void); + +/** Get the host CPU's features as a string. The result needs to be disposed + with LLVMDisposeMessage. */ +char* LLVMGetHostCPUFeatures(void); + +/** Adds the target-specific analysis passes to the pass manager. */ +void LLVMAddAnalysisPasses(LLVMTargetMachineRef T, LLVMPassManagerRef PM); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/Transforms/AggressiveInstCombine.h b/src/llvm-c/Transforms/AggressiveInstCombine.h new file mode 100644 index 000000000..c0b0141c3 --- /dev/null +++ b/src/llvm-c/Transforms/AggressiveInstCombine.h @@ -0,0 +1,43 @@ +/*===-- AggressiveInstCombine.h ---------------------------------*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMAggressiveInstCombine.a, *| +|* which combines instructions to form fewer, simple IR instructions. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_TRANSFORMS_AGGRESSIVEINSTCOMBINE_H +#define LLVM_C_TRANSFORMS_AGGRESSIVEINSTCOMBINE_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCTransformsAggressiveInstCombine Aggressive Instruction Combining transformations + * @ingroup LLVMCTransforms + * + * @{ + */ + +/** See llvm::createAggressiveInstCombinerPass function. */ +void LLVMAddAggressiveInstCombinerPass(LLVMPassManagerRef PM); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* defined(__cplusplus) */ + +#endif + diff --git a/src/llvm-c/Transforms/Coroutines.h b/src/llvm-c/Transforms/Coroutines.h new file mode 100644 index 000000000..227e7cf0a --- /dev/null +++ b/src/llvm-c/Transforms/Coroutines.h @@ -0,0 +1,55 @@ +/*===-- Coroutines.h - Coroutines Library C Interface -----------*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMCoroutines.a, which *| +|* implements various scalar transformations of the LLVM IR. *| +|* *| +|* Many exotic languages can interoperate with C code but have a harder time *| +|* with C++ due to name mangling. So in addition to C, this interface enables *| +|* tools written in such languages. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_TRANSFORMS_COROUTINES_H +#define LLVM_C_TRANSFORMS_COROUTINES_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCTransformsCoroutines Coroutine transformations + * @ingroup LLVMCTransforms + * + * @{ + */ + +/** See llvm::createCoroEarlyPass function. */ +void LLVMAddCoroEarlyPass(LLVMPassManagerRef PM); + +/** See llvm::createCoroSplitPass function. */ +void LLVMAddCoroSplitPass(LLVMPassManagerRef PM); + +/** See llvm::createCoroElidePass function. */ +void LLVMAddCoroElidePass(LLVMPassManagerRef PM); + +/** See llvm::createCoroCleanupPass function. */ +void LLVMAddCoroCleanupPass(LLVMPassManagerRef PM); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* defined(__cplusplus) */ + +#endif diff --git a/src/llvm-c/Transforms/IPO.h b/src/llvm-c/Transforms/IPO.h new file mode 100644 index 000000000..7a82ed464 --- /dev/null +++ b/src/llvm-c/Transforms/IPO.h @@ -0,0 +1,84 @@ +/*===-- IPO.h - Interprocedural Transformations C Interface -----*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMIPO.a, which implements *| +|* various interprocedural transformations of the LLVM IR. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_TRANSFORMS_IPO_H +#define LLVM_C_TRANSFORMS_IPO_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCTransformsIPO Interprocedural transformations + * @ingroup LLVMCTransforms + * + * @{ + */ + +/** See llvm::createArgumentPromotionPass function. */ +void LLVMAddArgumentPromotionPass(LLVMPassManagerRef PM); + +/** See llvm::createConstantMergePass function. */ +void LLVMAddConstantMergePass(LLVMPassManagerRef PM); + +/** See llvm::createCalledValuePropagationPass function. */ +void LLVMAddCalledValuePropagationPass(LLVMPassManagerRef PM); + +/** See llvm::createDeadArgEliminationPass function. */ +void LLVMAddDeadArgEliminationPass(LLVMPassManagerRef PM); + +/** See llvm::createFunctionAttrsPass function. */ +void LLVMAddFunctionAttrsPass(LLVMPassManagerRef PM); + +/** See llvm::createFunctionInliningPass function. */ +void LLVMAddFunctionInliningPass(LLVMPassManagerRef PM); + +/** See llvm::createAlwaysInlinerPass function. */ +void LLVMAddAlwaysInlinerPass(LLVMPassManagerRef PM); + +/** See llvm::createGlobalDCEPass function. */ +void LLVMAddGlobalDCEPass(LLVMPassManagerRef PM); + +/** See llvm::createGlobalOptimizerPass function. */ +void LLVMAddGlobalOptimizerPass(LLVMPassManagerRef PM); + +/** See llvm::createIPConstantPropagationPass function. */ +void LLVMAddIPConstantPropagationPass(LLVMPassManagerRef PM); + +/** See llvm::createPruneEHPass function. */ +void LLVMAddPruneEHPass(LLVMPassManagerRef PM); + +/** See llvm::createIPSCCPPass function. */ +void LLVMAddIPSCCPPass(LLVMPassManagerRef PM); + +/** See llvm::createInternalizePass function. */ +void LLVMAddInternalizePass(LLVMPassManagerRef, unsigned AllButMain); + +/** See llvm::createStripDeadPrototypesPass function. */ +void LLVMAddStripDeadPrototypesPass(LLVMPassManagerRef PM); + +/** See llvm::createStripSymbolsPass function. */ +void LLVMAddStripSymbolsPass(LLVMPassManagerRef PM); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* defined(__cplusplus) */ + +#endif diff --git a/src/llvm-c/Transforms/InstCombine.h b/src/llvm-c/Transforms/InstCombine.h new file mode 100644 index 000000000..166f278d9 --- /dev/null +++ b/src/llvm-c/Transforms/InstCombine.h @@ -0,0 +1,43 @@ +/*===-- Scalar.h - Scalar Transformation Library C Interface ----*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMInstCombine.a, which *| +|* combines instructions to form fewer, simple IR instructions. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_TRANSFORMS_INSTCOMBINE_H +#define LLVM_C_TRANSFORMS_INSTCOMBINE_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCTransformsInstCombine Instruction Combining transformations + * @ingroup LLVMCTransforms + * + * @{ + */ + +/** See llvm::createInstructionCombiningPass function. */ +void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* defined(__cplusplus) */ + +#endif + diff --git a/src/llvm-c/Transforms/PassManagerBuilder.h b/src/llvm-c/Transforms/PassManagerBuilder.h new file mode 100644 index 000000000..d164c00d4 --- /dev/null +++ b/src/llvm-c/Transforms/PassManagerBuilder.h @@ -0,0 +1,90 @@ +/*===-- llvm-c/Transform/PassManagerBuilder.h - PMB C Interface ---*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to the PassManagerBuilder class. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H +#define LLVM_C_TRANSFORMS_PASSMANAGERBUILDER_H + +#include "llvm-c/Types.h" + +typedef struct LLVMOpaquePassManagerBuilder *LLVMPassManagerBuilderRef; + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCTransformsPassManagerBuilder Pass manager builder + * @ingroup LLVMCTransforms + * + * @{ + */ + +/** See llvm::PassManagerBuilder. */ +LLVMPassManagerBuilderRef LLVMPassManagerBuilderCreate(void); +void LLVMPassManagerBuilderDispose(LLVMPassManagerBuilderRef PMB); + +/** See llvm::PassManagerBuilder::OptLevel. */ +void +LLVMPassManagerBuilderSetOptLevel(LLVMPassManagerBuilderRef PMB, + unsigned OptLevel); + +/** See llvm::PassManagerBuilder::SizeLevel. */ +void +LLVMPassManagerBuilderSetSizeLevel(LLVMPassManagerBuilderRef PMB, + unsigned SizeLevel); + +/** See llvm::PassManagerBuilder::DisableUnitAtATime. */ +void +LLVMPassManagerBuilderSetDisableUnitAtATime(LLVMPassManagerBuilderRef PMB, + LLVMBool Value); + +/** See llvm::PassManagerBuilder::DisableUnrollLoops. */ +void +LLVMPassManagerBuilderSetDisableUnrollLoops(LLVMPassManagerBuilderRef PMB, + LLVMBool Value); + +/** See llvm::PassManagerBuilder::DisableSimplifyLibCalls */ +void +LLVMPassManagerBuilderSetDisableSimplifyLibCalls(LLVMPassManagerBuilderRef PMB, + LLVMBool Value); + +/** See llvm::PassManagerBuilder::Inliner. */ +void +LLVMPassManagerBuilderUseInlinerWithThreshold(LLVMPassManagerBuilderRef PMB, + unsigned Threshold); + +/** See llvm::PassManagerBuilder::populateFunctionPassManager. */ +void +LLVMPassManagerBuilderPopulateFunctionPassManager(LLVMPassManagerBuilderRef PMB, + LLVMPassManagerRef PM); + +/** See llvm::PassManagerBuilder::populateModulePassManager. */ +void +LLVMPassManagerBuilderPopulateModulePassManager(LLVMPassManagerBuilderRef PMB, + LLVMPassManagerRef PM); + +/** See llvm::PassManagerBuilder::populateLTOPassManager. */ +void LLVMPassManagerBuilderPopulateLTOPassManager(LLVMPassManagerBuilderRef PMB, + LLVMPassManagerRef PM, + LLVMBool Internalize, + LLVMBool RunInliner); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/Transforms/Scalar.h b/src/llvm-c/Transforms/Scalar.h new file mode 100644 index 000000000..031cf98b2 --- /dev/null +++ b/src/llvm-c/Transforms/Scalar.h @@ -0,0 +1,167 @@ +/*===-- Scalar.h - Scalar Transformation Library C Interface ----*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMScalarOpts.a, which *| +|* implements various scalar transformations of the LLVM IR. *| +|* *| +|* Many exotic languages can interoperate with C code but have a harder time *| +|* with C++ due to name mangling. So in addition to C, this interface enables *| +|* tools written in such languages. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_TRANSFORMS_SCALAR_H +#define LLVM_C_TRANSFORMS_SCALAR_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCTransformsScalar Scalar transformations + * @ingroup LLVMCTransforms + * + * @{ + */ + +/** See llvm::createAggressiveDCEPass function. */ +void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM); + +/** See llvm::createBitTrackingDCEPass function. */ +void LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM); + +/** See llvm::createAlignmentFromAssumptionsPass function. */ +void LLVMAddAlignmentFromAssumptionsPass(LLVMPassManagerRef PM); + +/** See llvm::createCFGSimplificationPass function. */ +void LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM); + +/** See llvm::createDeadStoreEliminationPass function. */ +void LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM); + +/** See llvm::createScalarizerPass function. */ +void LLVMAddScalarizerPass(LLVMPassManagerRef PM); + +/** See llvm::createMergedLoadStoreMotionPass function. */ +void LLVMAddMergedLoadStoreMotionPass(LLVMPassManagerRef PM); + +/** See llvm::createGVNPass function. */ +void LLVMAddGVNPass(LLVMPassManagerRef PM); + +/** See llvm::createGVNPass function. */ +void LLVMAddNewGVNPass(LLVMPassManagerRef PM); + +/** See llvm::createIndVarSimplifyPass function. */ +void LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM); + +/** See llvm::createInstructionCombiningPass function. */ +void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM); + +/** See llvm::createJumpThreadingPass function. */ +void LLVMAddJumpThreadingPass(LLVMPassManagerRef PM); + +/** See llvm::createLICMPass function. */ +void LLVMAddLICMPass(LLVMPassManagerRef PM); + +/** See llvm::createLoopDeletionPass function. */ +void LLVMAddLoopDeletionPass(LLVMPassManagerRef PM); + +/** See llvm::createLoopIdiomPass function */ +void LLVMAddLoopIdiomPass(LLVMPassManagerRef PM); + +/** See llvm::createLoopRotatePass function. */ +void LLVMAddLoopRotatePass(LLVMPassManagerRef PM); + +/** See llvm::createLoopRerollPass function. */ +void LLVMAddLoopRerollPass(LLVMPassManagerRef PM); + +/** See llvm::createLoopUnrollPass function. */ +void LLVMAddLoopUnrollPass(LLVMPassManagerRef PM); + +/** See llvm::createLoopUnrollAndJamPass function. */ +void LLVMAddLoopUnrollAndJamPass(LLVMPassManagerRef PM); + +/** See llvm::createLoopUnswitchPass function. */ +void LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM); + +/** See llvm::createLowerAtomicPass function. */ +void LLVMAddLowerAtomicPass(LLVMPassManagerRef PM); + +/** See llvm::createMemCpyOptPass function. */ +void LLVMAddMemCpyOptPass(LLVMPassManagerRef PM); + +/** See llvm::createPartiallyInlineLibCallsPass function. */ +void LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM); + +/** See llvm::createReassociatePass function. */ +void LLVMAddReassociatePass(LLVMPassManagerRef PM); + +/** See llvm::createSCCPPass function. */ +void LLVMAddSCCPPass(LLVMPassManagerRef PM); + +/** See llvm::createSROAPass function. */ +void LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM); + +/** See llvm::createSROAPass function. */ +void LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM); + +/** See llvm::createSROAPass function. */ +void LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM, + int Threshold); + +/** See llvm::createSimplifyLibCallsPass function. */ +void LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM); + +/** See llvm::createTailCallEliminationPass function. */ +void LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM); + +/** See llvm::createConstantPropagationPass function. */ +void LLVMAddConstantPropagationPass(LLVMPassManagerRef PM); + +/** See llvm::demotePromoteMemoryToRegisterPass function. */ +void LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM); + +/** See llvm::createVerifierPass function. */ +void LLVMAddVerifierPass(LLVMPassManagerRef PM); + +/** See llvm::createCorrelatedValuePropagationPass function */ +void LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM); + +/** See llvm::createEarlyCSEPass function */ +void LLVMAddEarlyCSEPass(LLVMPassManagerRef PM); + +/** See llvm::createEarlyCSEPass function */ +void LLVMAddEarlyCSEMemSSAPass(LLVMPassManagerRef PM); + +/** See llvm::createLowerExpectIntrinsicPass function */ +void LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM); + +/** See llvm::createTypeBasedAliasAnalysisPass function */ +void LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM); + +/** See llvm::createScopedNoAliasAAPass function */ +void LLVMAddScopedNoAliasAAPass(LLVMPassManagerRef PM); + +/** See llvm::createBasicAliasAnalysisPass function */ +void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM); + +/** See llvm::createUnifyFunctionExitNodesPass function */ +void LLVMAddUnifyFunctionExitNodesPass(LLVMPassManagerRef PM); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* defined(__cplusplus) */ + +#endif diff --git a/src/llvm-c/Transforms/Utils.h b/src/llvm-c/Transforms/Utils.h new file mode 100644 index 000000000..63594abfa --- /dev/null +++ b/src/llvm-c/Transforms/Utils.h @@ -0,0 +1,53 @@ +/*===-- Utils.h - Transformation Utils Library C Interface ------*- C++ -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMTransformUtils.a, which *| +|* implements various transformation utilities of the LLVM IR. *| +|* *| +|* Many exotic languages can interoperate with C code but have a harder time *| +|* with C++ due to name mangling. So in addition to C, this interface enables *| +|* tools written in such languages. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_TRANSFORMS_UTILS_H +#define LLVM_C_TRANSFORMS_UTILS_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCTransformsUtils Transformation Utilities + * @ingroup LLVMCTransforms + * + * @{ + */ + +/** See llvm::createLowerSwitchPass function. */ +void LLVMAddLowerSwitchPass(LLVMPassManagerRef PM); + +/** See llvm::createPromoteMemoryToRegisterPass function. */ +void LLVMAddPromoteMemoryToRegisterPass(LLVMPassManagerRef PM); + +/** See llvm::createAddDiscriminatorsPass function. */ +void LLVMAddAddDiscriminatorsPass(LLVMPassManagerRef PM); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* defined(__cplusplus) */ + +#endif + diff --git a/src/llvm-c/Transforms/Vectorize.h b/src/llvm-c/Transforms/Vectorize.h new file mode 100644 index 000000000..e383481fe --- /dev/null +++ b/src/llvm-c/Transforms/Vectorize.h @@ -0,0 +1,50 @@ +/*===---------------------------Vectorize.h --------------------- -*- C -*-===*\ +|*===----------- Vectorization Transformation Library C Interface ---------===*| +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface to libLLVMVectorize.a, which *| +|* implements various vectorization transformations of the LLVM IR. *| +|* *| +|* Many exotic languages can interoperate with C code but have a harder time *| +|* with C++ due to name mangling. So in addition to C, this interface enables *| +|* tools written in such languages. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_TRANSFORMS_VECTORIZE_H +#define LLVM_C_TRANSFORMS_VECTORIZE_H + +#include "llvm-c/Types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCTransformsVectorize Vectorization transformations + * @ingroup LLVMCTransforms + * + * @{ + */ + +/** See llvm::createLoopVectorizePass function. */ +void LLVMAddLoopVectorizePass(LLVMPassManagerRef PM); + +/** See llvm::createSLPVectorizerPass function. */ +void LLVMAddSLPVectorizePass(LLVMPassManagerRef PM); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif /* defined(__cplusplus) */ + +#endif diff --git a/src/llvm-c/Types.h b/src/llvm-c/Types.h new file mode 100644 index 000000000..612c7d3ef --- /dev/null +++ b/src/llvm-c/Types.h @@ -0,0 +1,179 @@ +/*===-- llvm-c/Support.h - C Interface Types declarations ---------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This file defines types used by the C interface to LLVM. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_TYPES_H +#define LLVM_C_TYPES_H + +#include "llvm-c/DataTypes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup LLVMCSupportTypes Types and Enumerations + * + * @{ + */ + +typedef int LLVMBool; + +/* Opaque types. */ + +/** + * LLVM uses a polymorphic type hierarchy which C cannot represent, therefore + * parameters must be passed as base types. Despite the declared types, most + * of the functions provided operate only on branches of the type hierarchy. + * The declared parameter names are descriptive and specify which type is + * required. Additionally, each type hierarchy is documented along with the + * functions that operate upon it. For more detail, refer to LLVM's C++ code. + * If in doubt, refer to Core.cpp, which performs parameter downcasts in the + * form unwrap(Param). + */ + +/** + * Used to pass regions of memory through LLVM interfaces. + * + * @see llvm::MemoryBuffer + */ +typedef struct LLVMOpaqueMemoryBuffer *LLVMMemoryBufferRef; + +/** + * The top-level container for all LLVM global data. See the LLVMContext class. + */ +typedef struct LLVMOpaqueContext *LLVMContextRef; + +/** + * The top-level container for all other LLVM Intermediate Representation (IR) + * objects. + * + * @see llvm::Module + */ +typedef struct LLVMOpaqueModule *LLVMModuleRef; + +/** + * Each value in the LLVM IR has a type, an LLVMTypeRef. + * + * @see llvm::Type + */ +typedef struct LLVMOpaqueType *LLVMTypeRef; + +/** + * Represents an individual value in LLVM IR. + * + * This models llvm::Value. + */ +typedef struct LLVMOpaqueValue *LLVMValueRef; + +/** + * Represents a basic block of instructions in LLVM IR. + * + * This models llvm::BasicBlock. + */ +typedef struct LLVMOpaqueBasicBlock *LLVMBasicBlockRef; + +/** + * Represents an LLVM Metadata. + * + * This models llvm::Metadata. + */ +typedef struct LLVMOpaqueMetadata *LLVMMetadataRef; + +/** + * Represents an LLVM Named Metadata Node. + * + * This models llvm::NamedMDNode. + */ +typedef struct LLVMOpaqueNamedMDNode *LLVMNamedMDNodeRef; + +/** + * Represents an entry in a Global Object's metadata attachments. + * + * This models std::pair + */ +typedef struct LLVMOpaqueValueMetadataEntry LLVMValueMetadataEntry; + +/** + * Represents an LLVM basic block builder. + * + * This models llvm::IRBuilder. + */ +typedef struct LLVMOpaqueBuilder *LLVMBuilderRef; + +/** + * Represents an LLVM debug info builder. + * + * This models llvm::DIBuilder. + */ +typedef struct LLVMOpaqueDIBuilder *LLVMDIBuilderRef; + +/** + * Interface used to provide a module to JIT or interpreter. + * This is now just a synonym for llvm::Module, but we have to keep using the + * different type to keep binary compatibility. + */ +typedef struct LLVMOpaqueModuleProvider *LLVMModuleProviderRef; + +/** @see llvm::PassManagerBase */ +typedef struct LLVMOpaquePassManager *LLVMPassManagerRef; + +/** @see llvm::PassRegistry */ +typedef struct LLVMOpaquePassRegistry *LLVMPassRegistryRef; + +/** + * Used to get the users and usees of a Value. + * + * @see llvm::Use */ +typedef struct LLVMOpaqueUse *LLVMUseRef; + +/** + * Used to represent an attributes. + * + * @see llvm::Attribute + */ +typedef struct LLVMOpaqueAttributeRef *LLVMAttributeRef; + +/** + * @see llvm::DiagnosticInfo + */ +typedef struct LLVMOpaqueDiagnosticInfo *LLVMDiagnosticInfoRef; + +/** + * @see llvm::Comdat + */ +typedef struct LLVMComdat *LLVMComdatRef; + +/** + * @see llvm::Module::ModuleFlagEntry + */ +typedef struct LLVMOpaqueModuleFlagEntry LLVMModuleFlagEntry; + +/** + * @see llvm::JITEventListener + */ +typedef struct LLVMOpaqueJITEventListener *LLVMJITEventListenerRef; + +/** + * @see llvm::object::Binary + */ +typedef struct LLVMOpaqueBinary *LLVMBinaryRef; + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/llvm-c/lto.h b/src/llvm-c/lto.h new file mode 100644 index 000000000..2467722b1 --- /dev/null +++ b/src/llvm-c/lto.h @@ -0,0 +1,899 @@ +/*===-- llvm-c/lto.h - LTO Public C Interface ---------------------*- C -*-===*\ +|* *| +|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| +|* Exceptions. *| +|* See https://llvm.org/LICENSE.txt for license information. *| +|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header provides public interface to an abstract link time optimization*| +|* library. LLVM provides an implementation of this interface for use with *| +|* llvm bitcode files. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_LTO_H +#define LLVM_C_LTO_H + +#ifdef __cplusplus +#include +#else +#include +#endif +#include + +#ifndef __cplusplus +#if !defined(_MSC_VER) +#include +typedef bool lto_bool_t; +#else +/* MSVC in particular does not have anything like _Bool or bool in C, but we can + at least make sure the type is the same size. The implementation side will + use C++ bool. */ +typedef unsigned char lto_bool_t; +#endif +#else +typedef bool lto_bool_t; +#endif + +/** + * @defgroup LLVMCLTO LTO + * @ingroup LLVMC + * + * @{ + */ + +#define LTO_API_VERSION 24 + +/** + * \since prior to LTO_API_VERSION=3 + */ +typedef enum { + LTO_SYMBOL_ALIGNMENT_MASK = 0x0000001F, /* log2 of alignment */ + LTO_SYMBOL_PERMISSIONS_MASK = 0x000000E0, + LTO_SYMBOL_PERMISSIONS_CODE = 0x000000A0, + LTO_SYMBOL_PERMISSIONS_DATA = 0x000000C0, + LTO_SYMBOL_PERMISSIONS_RODATA = 0x00000080, + LTO_SYMBOL_DEFINITION_MASK = 0x00000700, + LTO_SYMBOL_DEFINITION_REGULAR = 0x00000100, + LTO_SYMBOL_DEFINITION_TENTATIVE = 0x00000200, + LTO_SYMBOL_DEFINITION_WEAK = 0x00000300, + LTO_SYMBOL_DEFINITION_UNDEFINED = 0x00000400, + LTO_SYMBOL_DEFINITION_WEAKUNDEF = 0x00000500, + LTO_SYMBOL_SCOPE_MASK = 0x00003800, + LTO_SYMBOL_SCOPE_INTERNAL = 0x00000800, + LTO_SYMBOL_SCOPE_HIDDEN = 0x00001000, + LTO_SYMBOL_SCOPE_PROTECTED = 0x00002000, + LTO_SYMBOL_SCOPE_DEFAULT = 0x00001800, + LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN = 0x00002800, + LTO_SYMBOL_COMDAT = 0x00004000, + LTO_SYMBOL_ALIAS = 0x00008000 +} lto_symbol_attributes; + +/** + * \since prior to LTO_API_VERSION=3 + */ +typedef enum { + LTO_DEBUG_MODEL_NONE = 0, + LTO_DEBUG_MODEL_DWARF = 1 +} lto_debug_model; + +/** + * \since prior to LTO_API_VERSION=3 + */ +typedef enum { + LTO_CODEGEN_PIC_MODEL_STATIC = 0, + LTO_CODEGEN_PIC_MODEL_DYNAMIC = 1, + LTO_CODEGEN_PIC_MODEL_DYNAMIC_NO_PIC = 2, + LTO_CODEGEN_PIC_MODEL_DEFAULT = 3 +} lto_codegen_model; + +/** opaque reference to a loaded object module */ +typedef struct LLVMOpaqueLTOModule *lto_module_t; + +/** opaque reference to a code generator */ +typedef struct LLVMOpaqueLTOCodeGenerator *lto_code_gen_t; + +/** opaque reference to a thin code generator */ +typedef struct LLVMOpaqueThinLTOCodeGenerator *thinlto_code_gen_t; + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Returns a printable string. + * + * \since prior to LTO_API_VERSION=3 + */ +extern const char* +lto_get_version(void); + +/** + * Returns the last error string or NULL if last operation was successful. + * + * \since prior to LTO_API_VERSION=3 + */ +extern const char* +lto_get_error_message(void); + +/** + * Checks if a file is a loadable object file. + * + * \since prior to LTO_API_VERSION=3 + */ +extern lto_bool_t +lto_module_is_object_file(const char* path); + +/** + * Checks if a file is a loadable object compiled for requested target. + * + * \since prior to LTO_API_VERSION=3 + */ +extern lto_bool_t +lto_module_is_object_file_for_target(const char* path, + const char* target_triple_prefix); + +/** + * Return true if \p Buffer contains a bitcode file with ObjC code (category + * or class) in it. + * + * \since LTO_API_VERSION=20 + */ +extern lto_bool_t +lto_module_has_objc_category(const void *mem, size_t length); + +/** + * Checks if a buffer is a loadable object file. + * + * \since prior to LTO_API_VERSION=3 + */ +extern lto_bool_t lto_module_is_object_file_in_memory(const void *mem, + size_t length); + +/** + * Checks if a buffer is a loadable object compiled for requested target. + * + * \since prior to LTO_API_VERSION=3 + */ +extern lto_bool_t +lto_module_is_object_file_in_memory_for_target(const void* mem, size_t length, + const char* target_triple_prefix); + +/** + * Loads an object file from disk. + * Returns NULL on error (check lto_get_error_message() for details). + * + * \since prior to LTO_API_VERSION=3 + */ +extern lto_module_t +lto_module_create(const char* path); + +/** + * Loads an object file from memory. + * Returns NULL on error (check lto_get_error_message() for details). + * + * \since prior to LTO_API_VERSION=3 + */ +extern lto_module_t +lto_module_create_from_memory(const void* mem, size_t length); + +/** + * Loads an object file from memory with an extra path argument. + * Returns NULL on error (check lto_get_error_message() for details). + * + * \since LTO_API_VERSION=9 + */ +extern lto_module_t +lto_module_create_from_memory_with_path(const void* mem, size_t length, + const char *path); + +/** + * Loads an object file in its own context. + * + * Loads an object file in its own LLVMContext. This function call is + * thread-safe. However, modules created this way should not be merged into an + * lto_code_gen_t using \a lto_codegen_add_module(). + * + * Returns NULL on error (check lto_get_error_message() for details). + * + * \since LTO_API_VERSION=11 + */ +extern lto_module_t +lto_module_create_in_local_context(const void *mem, size_t length, + const char *path); + +/** + * Loads an object file in the codegen context. + * + * Loads an object file into the same context as \c cg. The module is safe to + * add using \a lto_codegen_add_module(). + * + * Returns NULL on error (check lto_get_error_message() for details). + * + * \since LTO_API_VERSION=11 + */ +extern lto_module_t +lto_module_create_in_codegen_context(const void *mem, size_t length, + const char *path, lto_code_gen_t cg); + +/** + * Loads an object file from disk. The seek point of fd is not preserved. + * Returns NULL on error (check lto_get_error_message() for details). + * + * \since LTO_API_VERSION=5 + */ +extern lto_module_t +lto_module_create_from_fd(int fd, const char *path, size_t file_size); + +/** + * Loads an object file from disk. The seek point of fd is not preserved. + * Returns NULL on error (check lto_get_error_message() for details). + * + * \since LTO_API_VERSION=5 + */ +extern lto_module_t +lto_module_create_from_fd_at_offset(int fd, const char *path, size_t file_size, + size_t map_size, off_t offset); + +/** + * Frees all memory internally allocated by the module. + * Upon return the lto_module_t is no longer valid. + * + * \since prior to LTO_API_VERSION=3 + */ +extern void +lto_module_dispose(lto_module_t mod); + +/** + * Returns triple string which the object module was compiled under. + * + * \since prior to LTO_API_VERSION=3 + */ +extern const char* +lto_module_get_target_triple(lto_module_t mod); + +/** + * Sets triple string with which the object will be codegened. + * + * \since LTO_API_VERSION=4 + */ +extern void +lto_module_set_target_triple(lto_module_t mod, const char *triple); + +/** + * Returns the number of symbols in the object module. + * + * \since prior to LTO_API_VERSION=3 + */ +extern unsigned int +lto_module_get_num_symbols(lto_module_t mod); + +/** + * Returns the name of the ith symbol in the object module. + * + * \since prior to LTO_API_VERSION=3 + */ +extern const char* +lto_module_get_symbol_name(lto_module_t mod, unsigned int index); + +/** + * Returns the attributes of the ith symbol in the object module. + * + * \since prior to LTO_API_VERSION=3 + */ +extern lto_symbol_attributes +lto_module_get_symbol_attribute(lto_module_t mod, unsigned int index); + +/** + * Returns the module's linker options. + * + * The linker options may consist of multiple flags. It is the linker's + * responsibility to split the flags using a platform-specific mechanism. + * + * \since LTO_API_VERSION=16 + */ +extern const char* +lto_module_get_linkeropts(lto_module_t mod); + +/** + * Diagnostic severity. + * + * \since LTO_API_VERSION=7 + */ +typedef enum { + LTO_DS_ERROR = 0, + LTO_DS_WARNING = 1, + LTO_DS_REMARK = 3, // Added in LTO_API_VERSION=10. + LTO_DS_NOTE = 2 +} lto_codegen_diagnostic_severity_t; + +/** + * Diagnostic handler type. + * \p severity defines the severity. + * \p diag is the actual diagnostic. + * The diagnostic is not prefixed by any of severity keyword, e.g., 'error: '. + * \p ctxt is used to pass the context set with the diagnostic handler. + * + * \since LTO_API_VERSION=7 + */ +typedef void (*lto_diagnostic_handler_t)( + lto_codegen_diagnostic_severity_t severity, const char *diag, void *ctxt); + +/** + * Set a diagnostic handler and the related context (void *). + * This is more general than lto_get_error_message, as the diagnostic handler + * can be called at anytime within lto. + * + * \since LTO_API_VERSION=7 + */ +extern void lto_codegen_set_diagnostic_handler(lto_code_gen_t, + lto_diagnostic_handler_t, + void *); + +/** + * Instantiates a code generator. + * Returns NULL on error (check lto_get_error_message() for details). + * + * All modules added using \a lto_codegen_add_module() must have been created + * in the same context as the codegen. + * + * \since prior to LTO_API_VERSION=3 + */ +extern lto_code_gen_t +lto_codegen_create(void); + +/** + * Instantiate a code generator in its own context. + * + * Instantiates a code generator in its own context. Modules added via \a + * lto_codegen_add_module() must have all been created in the same context, + * using \a lto_module_create_in_codegen_context(). + * + * \since LTO_API_VERSION=11 + */ +extern lto_code_gen_t +lto_codegen_create_in_local_context(void); + +/** + * Frees all code generator and all memory it internally allocated. + * Upon return the lto_code_gen_t is no longer valid. + * + * \since prior to LTO_API_VERSION=3 + */ +extern void +lto_codegen_dispose(lto_code_gen_t); + +/** + * Add an object module to the set of modules for which code will be generated. + * Returns true on error (check lto_get_error_message() for details). + * + * \c cg and \c mod must both be in the same context. See \a + * lto_codegen_create_in_local_context() and \a + * lto_module_create_in_codegen_context(). + * + * \since prior to LTO_API_VERSION=3 + */ +extern lto_bool_t +lto_codegen_add_module(lto_code_gen_t cg, lto_module_t mod); + +/** + * Sets the object module for code generation. This will transfer the ownership + * of the module to the code generator. + * + * \c cg and \c mod must both be in the same context. + * + * \since LTO_API_VERSION=13 + */ +extern void +lto_codegen_set_module(lto_code_gen_t cg, lto_module_t mod); + +/** + * Sets if debug info should be generated. + * Returns true on error (check lto_get_error_message() for details). + * + * \since prior to LTO_API_VERSION=3 + */ +extern lto_bool_t +lto_codegen_set_debug_model(lto_code_gen_t cg, lto_debug_model); + +/** + * Sets which PIC code model to generated. + * Returns true on error (check lto_get_error_message() for details). + * + * \since prior to LTO_API_VERSION=3 + */ +extern lto_bool_t +lto_codegen_set_pic_model(lto_code_gen_t cg, lto_codegen_model); + +/** + * Sets the cpu to generate code for. + * + * \since LTO_API_VERSION=4 + */ +extern void +lto_codegen_set_cpu(lto_code_gen_t cg, const char *cpu); + +/** + * Sets the location of the assembler tool to run. If not set, libLTO + * will use gcc to invoke the assembler. + * + * \since LTO_API_VERSION=3 + */ +extern void +lto_codegen_set_assembler_path(lto_code_gen_t cg, const char* path); + +/** + * Sets extra arguments that libLTO should pass to the assembler. + * + * \since LTO_API_VERSION=4 + */ +extern void +lto_codegen_set_assembler_args(lto_code_gen_t cg, const char **args, + int nargs); + +/** + * Adds to a list of all global symbols that must exist in the final generated + * code. If a function is not listed there, it might be inlined into every usage + * and optimized away. + * + * \since prior to LTO_API_VERSION=3 + */ +extern void +lto_codegen_add_must_preserve_symbol(lto_code_gen_t cg, const char* symbol); + +/** + * Writes a new object file at the specified path that contains the + * merged contents of all modules added so far. + * Returns true on error (check lto_get_error_message() for details). + * + * \since LTO_API_VERSION=5 + */ +extern lto_bool_t +lto_codegen_write_merged_modules(lto_code_gen_t cg, const char* path); + +/** + * Generates code for all added modules into one native object file. + * This calls lto_codegen_optimize then lto_codegen_compile_optimized. + * + * On success returns a pointer to a generated mach-o/ELF buffer and + * length set to the buffer size. The buffer is owned by the + * lto_code_gen_t and will be freed when lto_codegen_dispose() + * is called, or lto_codegen_compile() is called again. + * On failure, returns NULL (check lto_get_error_message() for details). + * + * \since prior to LTO_API_VERSION=3 + */ +extern const void* +lto_codegen_compile(lto_code_gen_t cg, size_t* length); + +/** + * Generates code for all added modules into one native object file. + * This calls lto_codegen_optimize then lto_codegen_compile_optimized (instead + * of returning a generated mach-o/ELF buffer, it writes to a file). + * + * The name of the file is written to name. Returns true on error. + * + * \since LTO_API_VERSION=5 + */ +extern lto_bool_t +lto_codegen_compile_to_file(lto_code_gen_t cg, const char** name); + +/** + * Runs optimization for the merged module. Returns true on error. + * + * \since LTO_API_VERSION=12 + */ +extern lto_bool_t +lto_codegen_optimize(lto_code_gen_t cg); + +/** + * Generates code for the optimized merged module into one native object file. + * It will not run any IR optimizations on the merged module. + * + * On success returns a pointer to a generated mach-o/ELF buffer and length set + * to the buffer size. The buffer is owned by the lto_code_gen_t and will be + * freed when lto_codegen_dispose() is called, or + * lto_codegen_compile_optimized() is called again. On failure, returns NULL + * (check lto_get_error_message() for details). + * + * \since LTO_API_VERSION=12 + */ +extern const void* +lto_codegen_compile_optimized(lto_code_gen_t cg, size_t* length); + +/** + * Returns the runtime API version. + * + * \since LTO_API_VERSION=12 + */ +extern unsigned int +lto_api_version(void); + +/** + * Sets options to help debug codegen bugs. + * + * \since prior to LTO_API_VERSION=3 + */ +extern void +lto_codegen_debug_options(lto_code_gen_t cg, const char *); + +/** + * Initializes LLVM disassemblers. + * FIXME: This doesn't really belong here. + * + * \since LTO_API_VERSION=5 + */ +extern void +lto_initialize_disassembler(void); + +/** + * Sets if we should run internalize pass during optimization and code + * generation. + * + * \since LTO_API_VERSION=14 + */ +extern void +lto_codegen_set_should_internalize(lto_code_gen_t cg, + lto_bool_t ShouldInternalize); + +/** + * Set whether to embed uselists in bitcode. + * + * Sets whether \a lto_codegen_write_merged_modules() should embed uselists in + * output bitcode. This should be turned on for all -save-temps output. + * + * \since LTO_API_VERSION=15 + */ +extern void +lto_codegen_set_should_embed_uselists(lto_code_gen_t cg, + lto_bool_t ShouldEmbedUselists); + +/** + * @} // endgoup LLVMCLTO + * @defgroup LLVMCTLTO ThinLTO + * @ingroup LLVMC + * + * @{ + */ + +/** + * Type to wrap a single object returned by ThinLTO. + * + * \since LTO_API_VERSION=18 + */ +typedef struct { + const char *Buffer; + size_t Size; +} LTOObjectBuffer; + +/** + * Instantiates a ThinLTO code generator. + * Returns NULL on error (check lto_get_error_message() for details). + * + * + * The ThinLTOCodeGenerator is not intended to be reuse for multiple + * compilation: the model is that the client adds modules to the generator and + * ask to perform the ThinLTO optimizations / codegen, and finally destroys the + * codegenerator. + * + * \since LTO_API_VERSION=18 + */ +extern thinlto_code_gen_t thinlto_create_codegen(void); + +/** + * Frees the generator and all memory it internally allocated. + * Upon return the thinlto_code_gen_t is no longer valid. + * + * \since LTO_API_VERSION=18 + */ +extern void thinlto_codegen_dispose(thinlto_code_gen_t cg); + +/** + * Add a module to a ThinLTO code generator. Identifier has to be unique among + * all the modules in a code generator. The data buffer stays owned by the + * client, and is expected to be available for the entire lifetime of the + * thinlto_code_gen_t it is added to. + * + * On failure, returns NULL (check lto_get_error_message() for details). + * + * + * \since LTO_API_VERSION=18 + */ +extern void thinlto_codegen_add_module(thinlto_code_gen_t cg, + const char *identifier, const char *data, + int length); + +/** + * Optimize and codegen all the modules added to the codegenerator using + * ThinLTO. Resulting objects are accessible using thinlto_module_get_object(). + * + * \since LTO_API_VERSION=18 + */ +extern void thinlto_codegen_process(thinlto_code_gen_t cg); + +/** + * Returns the number of object files produced by the ThinLTO CodeGenerator. + * + * It usually matches the number of input files, but this is not a guarantee of + * the API and may change in future implementation, so the client should not + * assume it. + * + * \since LTO_API_VERSION=18 + */ +extern unsigned int thinlto_module_get_num_objects(thinlto_code_gen_t cg); + +/** + * Returns a reference to the ith object file produced by the ThinLTO + * CodeGenerator. + * + * Client should use \p thinlto_module_get_num_objects() to get the number of + * available objects. + * + * \since LTO_API_VERSION=18 + */ +extern LTOObjectBuffer thinlto_module_get_object(thinlto_code_gen_t cg, + unsigned int index); + +/** + * Returns the number of object files produced by the ThinLTO CodeGenerator. + * + * It usually matches the number of input files, but this is not a guarantee of + * the API and may change in future implementation, so the client should not + * assume it. + * + * \since LTO_API_VERSION=21 + */ +unsigned int thinlto_module_get_num_object_files(thinlto_code_gen_t cg); + +/** + * Returns the path to the ith object file produced by the ThinLTO + * CodeGenerator. + * + * Client should use \p thinlto_module_get_num_object_files() to get the number + * of available objects. + * + * \since LTO_API_VERSION=21 + */ +const char *thinlto_module_get_object_file(thinlto_code_gen_t cg, + unsigned int index); + +/** + * Sets which PIC code model to generate. + * Returns true on error (check lto_get_error_message() for details). + * + * \since LTO_API_VERSION=18 + */ +extern lto_bool_t thinlto_codegen_set_pic_model(thinlto_code_gen_t cg, + lto_codegen_model); + +/** + * Sets the path to a directory to use as a storage for temporary bitcode files. + * The intention is to make the bitcode files available for debugging at various + * stage of the pipeline. + * + * \since LTO_API_VERSION=18 + */ +extern void thinlto_codegen_set_savetemps_dir(thinlto_code_gen_t cg, + const char *save_temps_dir); + +/** + * Set the path to a directory where to save generated object files. This + * path can be used by a linker to request on-disk files instead of in-memory + * buffers. When set, results are available through + * thinlto_module_get_object_file() instead of thinlto_module_get_object(). + * + * \since LTO_API_VERSION=21 + */ +void thinlto_set_generated_objects_dir(thinlto_code_gen_t cg, + const char *save_temps_dir); + +/** + * Sets the cpu to generate code for. + * + * \since LTO_API_VERSION=18 + */ +extern void thinlto_codegen_set_cpu(thinlto_code_gen_t cg, const char *cpu); + +/** + * Disable CodeGen, only run the stages till codegen and stop. The output will + * be bitcode. + * + * \since LTO_API_VERSION=19 + */ +extern void thinlto_codegen_disable_codegen(thinlto_code_gen_t cg, + lto_bool_t disable); + +/** + * Perform CodeGen only: disable all other stages. + * + * \since LTO_API_VERSION=19 + */ +extern void thinlto_codegen_set_codegen_only(thinlto_code_gen_t cg, + lto_bool_t codegen_only); + +/** + * Parse -mllvm style debug options. + * + * \since LTO_API_VERSION=18 + */ +extern void thinlto_debug_options(const char *const *options, int number); + +/** + * Test if a module has support for ThinLTO linking. + * + * \since LTO_API_VERSION=18 + */ +extern lto_bool_t lto_module_is_thinlto(lto_module_t mod); + +/** + * Adds a symbol to the list of global symbols that must exist in the final + * generated code. If a function is not listed there, it might be inlined into + * every usage and optimized away. For every single module, the functions + * referenced from code outside of the ThinLTO modules need to be added here. + * + * \since LTO_API_VERSION=18 + */ +extern void thinlto_codegen_add_must_preserve_symbol(thinlto_code_gen_t cg, + const char *name, + int length); + +/** + * Adds a symbol to the list of global symbols that are cross-referenced between + * ThinLTO files. If the ThinLTO CodeGenerator can ensure that every + * references from a ThinLTO module to this symbol is optimized away, then + * the symbol can be discarded. + * + * \since LTO_API_VERSION=18 + */ +extern void thinlto_codegen_add_cross_referenced_symbol(thinlto_code_gen_t cg, + const char *name, + int length); + +/** + * @} // endgoup LLVMCTLTO + * @defgroup LLVMCTLTO_CACHING ThinLTO Cache Control + * @ingroup LLVMCTLTO + * + * These entry points control the ThinLTO cache. The cache is intended to + * support incremental builds, and thus needs to be persistent across builds. + * The client enables the cache by supplying a path to an existing directory. + * The code generator will use this to store objects files that may be reused + * during a subsequent build. + * To avoid filling the disk space, a few knobs are provided: + * - The pruning interval limits the frequency at which the garbage collector + * will try to scan the cache directory to prune expired entries. + * Setting to a negative number disables the pruning. + * - The pruning expiration time indicates to the garbage collector how old an + * entry needs to be to be removed. + * - Finally, the garbage collector can be instructed to prune the cache until + * the occupied space goes below a threshold. + * @{ + */ + +/** + * Sets the path to a directory to use as a cache storage for incremental build. + * Setting this activates caching. + * + * \since LTO_API_VERSION=18 + */ +extern void thinlto_codegen_set_cache_dir(thinlto_code_gen_t cg, + const char *cache_dir); + +/** + * Sets the cache pruning interval (in seconds). A negative value disables the + * pruning. An unspecified default value will be applied, and a value of 0 will + * force prunning to occur. + * + * \since LTO_API_VERSION=18 + */ +extern void thinlto_codegen_set_cache_pruning_interval(thinlto_code_gen_t cg, + int interval); + +/** + * Sets the maximum cache size that can be persistent across build, in terms of + * percentage of the available space on the disk. Set to 100 to indicate + * no limit, 50 to indicate that the cache size will not be left over half the + * available space. A value over 100 will be reduced to 100, a value of 0 will + * be ignored. An unspecified default value will be applied. + * + * The formula looks like: + * AvailableSpace = FreeSpace + ExistingCacheSize + * NewCacheSize = AvailableSpace * P/100 + * + * \since LTO_API_VERSION=18 + */ +extern void thinlto_codegen_set_final_cache_size_relative_to_available_space( + thinlto_code_gen_t cg, unsigned percentage); + +/** + * Sets the expiration (in seconds) for an entry in the cache. An unspecified + * default value will be applied. A value of 0 will be ignored. + * + * \since LTO_API_VERSION=18 + */ +extern void thinlto_codegen_set_cache_entry_expiration(thinlto_code_gen_t cg, + unsigned expiration); + +/** + * Sets the maximum size of the cache directory (in bytes). A value over the + * amount of available space on the disk will be reduced to the amount of + * available space. An unspecified default value will be applied. A value of 0 + * will be ignored. + * + * \since LTO_API_VERSION=22 + */ +extern void thinlto_codegen_set_cache_size_bytes(thinlto_code_gen_t cg, + unsigned max_size_bytes); + +/** + * Same as thinlto_codegen_set_cache_size_bytes, except the maximum size is in + * megabytes (2^20 bytes). + * + * \since LTO_API_VERSION=23 + */ +extern void +thinlto_codegen_set_cache_size_megabytes(thinlto_code_gen_t cg, + unsigned max_size_megabytes); + +/** + * Sets the maximum number of files in the cache directory. An unspecified + * default value will be applied. A value of 0 will be ignored. + * + * \since LTO_API_VERSION=22 + */ +extern void thinlto_codegen_set_cache_size_files(thinlto_code_gen_t cg, + unsigned max_size_files); + +/** Opaque reference to an LTO input file */ +typedef struct LLVMOpaqueLTOInput *lto_input_t; + +/** + * Creates an LTO input file from a buffer. The path + * argument is used for diagnotics as this function + * otherwise does not know which file the given buffer + * is associated with. + * + * \since LTO_API_VERSION=24 + */ +extern lto_input_t lto_input_create(const void *buffer, + size_t buffer_size, + const char *path); + +/** + * Frees all memory internally allocated by the LTO input file. + * Upon return the lto_module_t is no longer valid. + * + * \since LTO_API_VERSION=24 + */ +extern void lto_input_dispose(lto_input_t input); + +/** + * Returns the number of dependent library specifiers + * for the given LTO input file. + * + * \since LTO_API_VERSION=24 + */ +extern unsigned lto_input_get_num_dependent_libraries(lto_input_t input); + +/** + * Returns the ith dependent library specifier + * for the given LTO input file. The returned + * string is not null-terminated. + * + * \since LTO_API_VERSION=24 + */ +extern const char * lto_input_get_dependent_library(lto_input_t input, + size_t index, + size_t *size); + +/** + * @} // endgroup LLVMCTLTO_CACHING + */ + +#ifdef __cplusplus +} +#endif + +#endif /* LLVM_C_LTO_H */ diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp new file mode 100644 index 000000000..b2ab67442 --- /dev/null +++ b/src/llvm_backend.cpp @@ -0,0 +1,831 @@ +#include "llvm-c/Core.h" +#include "llvm-c/ExecutionEngine.h" +#include "llvm-c/Target.h" +#include "llvm-c/Analysis.h" +#include "llvm-c/Object.h" +#include "llvm-c/BitWriter.h" + +struct lbModule { + LLVMModuleRef mod; + + Map values; // Key: Entity * +}; + +struct lbGenerator { + lbModule module; + CheckerInfo *info; + + gbFile output_file; + String output_base; + String output_name; +}; + +enum lbAddrKind { + lbAddr_Default, + lbAddr_Map, + lbAddr_BitField, + lbAddr_Context, + lbAddr_SoaVariable, +}; + +struct lbAddr { + lbAddrKind kind; + LLVMValueRef addr; + union { + struct { + LLVMValueRef key; + Type *type; + Type *result; + } map; + struct { + i32 value_index; + } bit_field; + struct { + Selection sel; + } ctx; + struct { + LLVMValueRef index; + Ast *index_expr; + } soa; + }; +}; + +struct lbBlock { + LLVMBasicBlockRef block; + Scope *scope; + isize scope_index; +}; + +struct lbProcedure { + lbProcedure *parent; + Array children; + + Entity * entity; + lbModule * module; + String name; + Type * type; + Ast * type_expr; + Ast * body; + u64 tags; + ProcInlining inlining; + bool is_foreign; + bool is_export; + bool is_entry_point; + + + LLVMValueRef value; + LLVMBuilderRef builder; + + LLVMValueRef return_ptr; + Array params; + Array blocks; + Scope * curr_scope; + i32 scope_index; + lbBlock * decl_block; + lbBlock * entry_block; + lbBlock * curr_block; +}; + +lbBlock * lb_create_block(lbProcedure *p, char const *name); +LLVMTypeRef lb_type(Type *type); +void lb_build_stmt (lbProcedure *p, Ast *stmt); +LLVMValueRef lb_build_expr (lbProcedure *p, Ast *expr); + +lbAddr lb_addr(LLVMValueRef addr) { + lbAddr v = {lbAddr_Default, addr}; + return v; +} + +LLVMTypeRef lb_addr_type(lbAddr const &addr) { + return LLVMGetElementType(LLVMTypeOf(addr.addr)); +} + +void lb_addr_store(lbProcedure *p, lbAddr const &addr, LLVMValueRef value) { + if (addr.addr == nullptr) { + return; + } + GB_ASSERT(value != nullptr); + LLVMBuildStore(p->builder, value, addr.addr); +} + +LLVMTypeRef lb_type_internal(Type *type) { + switch (type->kind) { + case Type_Basic: + switch (type->Basic.kind) { + case Basic_llvm_bool: return LLVMInt1Type(); + case Basic_bool: return LLVMInt8Type(); + case Basic_b8: return LLVMInt8Type(); + case Basic_b16: return LLVMInt16Type(); + case Basic_b32: return LLVMInt32Type(); + case Basic_b64: return LLVMInt64Type(); + + case Basic_i8: return LLVMInt8Type(); + case Basic_u8: return LLVMInt8Type(); + case Basic_i16: return LLVMInt16Type(); + case Basic_u16: return LLVMInt16Type(); + case Basic_i32: return LLVMInt32Type(); + case Basic_u32: return LLVMInt32Type(); + case Basic_i64: return LLVMInt64Type(); + case Basic_u64: return LLVMInt64Type(); + case Basic_i128: return LLVMInt128Type(); + case Basic_u128: return LLVMInt128Type(); + + case Basic_rune: return LLVMInt32Type(); + + // Basic_f16, + case Basic_f32: return LLVMFloatType(); + case Basic_f64: return LLVMDoubleType(); + + // Basic_complex32, + case Basic_complex64: + { + LLVMTypeRef fields[2] = { + lb_type(t_f32), + lb_type(t_f32), + }; + return LLVMStructType(fields, 2, false); + } + case Basic_complex128: + { + LLVMTypeRef fields[2] = { + lb_type(t_f64), + lb_type(t_f64), + }; + return LLVMStructType(fields, 2, false); + } + + case Basic_quaternion128: + { + LLVMTypeRef fields[4] = { + lb_type(t_f32), + lb_type(t_f32), + lb_type(t_f32), + lb_type(t_f32), + }; + return LLVMStructType(fields, 4, false); + } + case Basic_quaternion256: + { + LLVMTypeRef fields[4] = { + lb_type(t_f64), + lb_type(t_f64), + lb_type(t_f64), + lb_type(t_f64), + }; + return LLVMStructType(fields, 4, false); + } + + case Basic_int: return LLVMIntType(8*cast(unsigned)build_context.word_size); + case Basic_uint: return LLVMIntType(8*cast(unsigned)build_context.word_size); + + case Basic_uintptr: return LLVMIntType(8*cast(unsigned)build_context.word_size); + + case Basic_rawptr: return LLVMPointerType(LLVMInt8Type(), 0); + case Basic_string: + { + LLVMTypeRef fields[2] = { + LLVMPointerType(lb_type(t_u8), 0), + lb_type(t_int), + }; + return LLVMStructType(fields, 2, false); + } + case Basic_cstring: return LLVMPointerType(LLVMInt8Type(), 0); + case Basic_any: + { + LLVMTypeRef fields[2] = { + LLVMPointerType(lb_type(t_rawptr), 0), + lb_type(t_typeid), + }; + return LLVMStructType(fields, 2, false); + } + + case Basic_typeid: return LLVMIntType(8*cast(unsigned)build_context.word_size); + + // Endian Specific Types + case Basic_i16le: return LLVMInt16Type(); + case Basic_u16le: return LLVMInt16Type(); + case Basic_i32le: return LLVMInt32Type(); + case Basic_u32le: return LLVMInt32Type(); + case Basic_i64le: return LLVMInt64Type(); + case Basic_u64le: return LLVMInt64Type(); + case Basic_i128le: return LLVMInt128Type(); + case Basic_u128le: return LLVMInt128Type(); + + case Basic_i16be: return LLVMInt16Type(); + case Basic_u16be: return LLVMInt16Type(); + case Basic_i32be: return LLVMInt32Type(); + case Basic_u32be: return LLVMInt32Type(); + case Basic_i64be: return LLVMInt64Type(); + case Basic_u64be: return LLVMInt64Type(); + case Basic_i128be: return LLVMInt128Type(); + case Basic_u128be: return LLVMInt128Type(); + + // Untyped types + case Basic_UntypedBool: GB_PANIC("Basic_UntypedBool"); break; + case Basic_UntypedInteger: GB_PANIC("Basic_UntypedInteger"); break; + case Basic_UntypedFloat: GB_PANIC("Basic_UntypedFloat"); break; + case Basic_UntypedComplex: GB_PANIC("Basic_UntypedComplex"); break; + case Basic_UntypedQuaternion: GB_PANIC("Basic_UntypedQuaternion"); break; + case Basic_UntypedString: GB_PANIC("Basic_UntypedString"); break; + case Basic_UntypedRune: GB_PANIC("Basic_UntypedRune"); break; + case Basic_UntypedNil: GB_PANIC("Basic_UntypedNil"); break; + case Basic_UntypedUndef: GB_PANIC("Basic_UntypedUndef"); break; + } + break; + case Type_Named: + GB_PANIC("Type_Named"); + return nullptr; + case Type_Pointer: + return LLVMPointerType(lb_type(type_deref(type)), 0); + case Type_Opaque: + return lb_type(base_type(type)); + case Type_Array: + return LLVMArrayType(lb_type(type->Array.elem), cast(unsigned)type->Array.count); + case Type_EnumeratedArray: + return LLVMArrayType(lb_type(type->EnumeratedArray.elem), cast(unsigned)type->EnumeratedArray.count); + case Type_Slice: + { + LLVMTypeRef fields[2] = { + LLVMPointerType(lb_type(type->Slice.elem), 0), // data + lb_type(t_int), // len + }; + return LLVMStructType(fields, 2, false); + } + break; + case Type_DynamicArray: + { + LLVMTypeRef fields[4] = { + LLVMPointerType(lb_type(type->DynamicArray.elem), 0), // data + lb_type(t_int), // len + lb_type(t_int), // cap + lb_type(t_allocator), // allocator + }; + return LLVMStructType(fields, 4, false); + } + break; + case Type_Map: + return lb_type(type->Map.internal_type); + case Type_Struct: + GB_PANIC("Type_Struct"); + break; + case Type_Union: + GB_PANIC("Type_Union"); + break; + case Type_Enum: + return LLVMIntType(8*cast(unsigned)type_size_of(type)); + case Type_Tuple: + GB_PANIC("Type_Tuple"); + break; + case Type_Proc: + set_procedure_abi_types(heap_allocator(), type); + GB_PANIC("Type_Proc"); + break; + case Type_BitFieldValue: + return LLVMIntType(type->BitFieldValue.bits); + case Type_BitField: + GB_PANIC("Type_BitField"); + break; + case Type_BitSet: + return LLVMIntType(8*cast(unsigned)type_size_of(type)); + case Type_SimdVector: + if (type->SimdVector.is_x86_mmx) { + return LLVMX86MMXType(); + } + return LLVMVectorType(lb_type(type->SimdVector.elem), cast(unsigned)type->SimdVector.count); + } + + GB_PANIC("Invalid type"); + return LLVMInt32Type(); +} + +LLVMTypeRef lb_type(Type *type) { + if (type->llvm_type) { + return type->llvm_type; + } + + LLVMTypeRef llvm_type = lb_type_internal(type); + type->llvm_type = llvm_type; + + return llvm_type; +} + +lbProcedure *lb_create_procedure(lbModule *module, Entity *entity) { + lbProcedure *p = gb_alloc_item(heap_allocator(), lbProcedure); + + p->module = module; + p->entity = entity; + p->name = entity->token.string; + + DeclInfo *decl = entity->decl_info; + + ast_node(pl, ProcLit, decl->proc_lit); + Type *pt = base_type(entity->type); + GB_ASSERT(pt->kind == Type_Proc); + + p->type = entity->type; + p->type_expr = decl->type_expr; + p->body = pl->body; + p->tags = pt->Proc.tags; + p->inlining = ProcInlining_none; + p->is_foreign = false; + p->is_export = false; + p->is_entry_point = false; + + p->children.allocator = heap_allocator(); + p->params.allocator = heap_allocator(); + p->blocks.allocator = heap_allocator(); + + + char *name = alloc_cstring(heap_allocator(), p->name); + LLVMTypeRef ret_type = LLVMFunctionType(LLVMVoidType(), nullptr, 0, false); + + p->value = LLVMAddFunction(module->mod, name, ret_type); + p->builder = LLVMCreateBuilder(); + + p->decl_block = lb_create_block(p, "decls"); + p->entry_block = lb_create_block(p, "entry"); + p->curr_block = p->entry_block; + + set_procedure_abi_types(heap_allocator(), p->type); + + LLVMPositionBuilderAtEnd(p->builder, p->curr_block->block); + + return p; +} + +void lb_end_procedure(lbProcedure *p) { + LLVMPositionBuilderAtEnd(p->builder, p->decl_block->block); + LLVMBuildBr(p->builder, p->entry_block->block); + LLVMPositionBuilderAtEnd(p->builder, p->curr_block->block); + + LLVMDisposeBuilder(p->builder); +} + + +lbBlock *lb_create_block(lbProcedure *p, char const *name) { + lbBlock *b = gb_alloc_item(heap_allocator(), lbBlock); + b->block = LLVMAppendBasicBlock(p->value, name); + b->scope = p->curr_scope; + b->scope_index = p->scope_index; + array_add(&p->blocks, b); + return b; +} + +lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr) { + LLVMPositionBuilderAtEnd(p->builder, p->decl_block->block); + + LLVMTypeRef llvm_type = lb_type(type); + LLVMValueRef ptr = LLVMBuildAlloca(p->builder, llvm_type, ""); + LLVMSetAlignment(ptr, 16); + + LLVMPositionBuilderAtEnd(p->builder, p->curr_block->block); + + if (e != nullptr) { + map_set(&p->module->values, hash_entity(e), ptr); + } + + return lb_addr(ptr); +} + + +bool lb_init_generator(lbGenerator *gen, Checker *c) { + if (global_error_collector.count != 0) { + return false; + } + + isize tc = c->parser->total_token_count; + if (tc < 2) { + return false; + } + + + String init_fullpath = c->parser->init_fullpath; + + if (build_context.out_filepath.len == 0) { + gen->output_name = remove_directory_from_path(init_fullpath); + gen->output_name = remove_extension_from_path(gen->output_name); + gen->output_base = gen->output_name; + } else { + gen->output_name = build_context.out_filepath; + isize pos = string_extension_position(gen->output_name); + if (pos < 0) { + gen->output_base = gen->output_name; + } else { + gen->output_base = substring(gen->output_name, 0, pos); + } + } + gbAllocator ha = heap_allocator(); + gen->output_base = path_to_full_path(ha, gen->output_base); + + gbString output_file_path = gb_string_make_length(ha, gen->output_base.text, gen->output_base.len); + output_file_path = gb_string_appendc(output_file_path, ".obj"); + defer (gb_string_free(output_file_path)); + + gbFileError err = gb_file_create(&gen->output_file, output_file_path); + if (err != gbFileError_None) { + gb_printf_err("Failed to create file %s\n", output_file_path); + return false; + } + + gen->info = &c->info; + + return true; +} + + +void lb_build_stmt_list(lbProcedure *p, Array const &stmts) { + for_array(i, stmts) { + Ast *stmt = stmts[i]; + switch (stmt->kind) { + case_ast_node(vd, ValueDecl, stmt); + // lb_build_constant_value_decl(b, vd); + case_end; + case_ast_node(fb, ForeignBlockDecl, stmt); + ast_node(block, BlockStmt, fb->body); + lb_build_stmt_list(p, block->stmts); + case_end; + } + } + for_array(i, stmts) { + lb_build_stmt(p, stmts[i]); + } +} + + +void lb_build_stmt(lbProcedure *p, Ast *node) { + switch (node->kind) { + case_ast_node(bs, EmptyStmt, node); + case_end; + + case_ast_node(us, UsingStmt, node); + case_end; + + case_ast_node(bs, BlockStmt, node); + lb_build_stmt_list(p, bs->stmts); + case_end; + + case_ast_node(vd, ValueDecl, node); + if (!vd->is_mutable) { + return; + } + + bool is_static = false; + if (vd->names.count > 0) { + Entity *e = entity_of_ident(vd->names[0]); + if (e->flags & EntityFlag_Static) { + // NOTE(bill): If one of the entities is static, they all are + is_static = true; + } + } + + GB_ASSERT_MSG(!is_static, "handle static variables"); + + + auto addrs = array_make(heap_allocator(), vd->names.count); + auto values = array_make(heap_allocator(), 0, vd->names.count); + defer (array_free(&addrs)); + defer (array_free(&values)); + + for_array(i, vd->names) { + Ast *name = vd->names[i]; + if (!is_blank_ident(name)) { + Entity *e = entity_of_ident(name); + addrs[i] = lb_add_local(p, e->type, e); + if (vd->values.count == 0) { + lb_addr_store(p, addrs[i], LLVMConstNull(lb_addr_type(addrs[i]))); + } + } + } + + for_array(i, vd->values) { + LLVMValueRef value = lb_build_expr(p, vd->values[i]); + array_add(&values, value); + } + + for_array(i, values) { + lb_addr_store(p, addrs[i], values[i]); + } + + case_end; + } +} + +LLVMValueRef lb_value_constant(Type *type, ExactValue const &value) { + + switch (value.kind) { + case ExactValue_Invalid: + return LLVMConstNull(lb_type(type)); + case ExactValue_Bool: + return LLVMConstInt(lb_type(type), value.value_bool, false); + case ExactValue_String: + return LLVMConstInt(lb_type(type), value.value_bool, false); + case ExactValue_Integer: + return LLVMConstIntOfArbitraryPrecision(lb_type(type), cast(unsigned)value.value_integer.len, big_int_ptr(&value.value_integer)); + case ExactValue_Float: + return LLVMConstReal(lb_type(type), value.value_float); + case ExactValue_Complex: + GB_PANIC("ExactValue_Complex"); + break; + case ExactValue_Quaternion: + GB_PANIC("ExactValue_Quaternion"); + break; + + case ExactValue_Pointer: + return LLVMConstBitCast(LLVMConstInt(lb_type(t_uintptr), value.value_pointer, false), lb_type(type)); + case ExactValue_Compound: + GB_PANIC("ExactValue_Compound"); + break; + case ExactValue_Procedure: + GB_PANIC("ExactValue_Procedure"); + break; + case ExactValue_Typeid: + GB_PANIC("ExactValue_Typeid"); + break; + } + + GB_PANIC("UNKNOWN ExactValue kind"); + return nullptr; +} + +LLVMValueRef lb_add_module_constant(lbModule *m, Type *type, ExactValue const &value) { + gbAllocator a = heap_allocator(); + + if (is_type_slice(type)) { + GB_PANIC("lb_add_module_constant -> slice"); + } + + return lb_value_constant(type, value); +} + +LLVMValueRef lb_emit_arith(lbProcedure *p, TokenKind op, LLVMValueRef lhs, LLVMValueRef rhs, Type *type) { + switch (op) { + case Token_Add: + return LLVMBuildAdd(p->builder, lhs, rhs, ""); + case Token_Sub: + return LLVMBuildSub(p->builder, lhs, rhs, ""); + case Token_Mul: + return LLVMBuildMul(p->builder, lhs, rhs, ""); + case Token_Quo: + case Token_Mod: + case Token_ModMod: + case Token_And: + return LLVMBuildAdd(p->builder, lhs, rhs, ""); + case Token_Or: + return LLVMBuildOr(p->builder, lhs, rhs, ""); + case Token_Xor: + return LLVMBuildXor(p->builder, lhs, rhs, ""); + case Token_Shl: + return LLVMBuildShl(p->builder, lhs, rhs, ""); + case Token_Shr: + + case Token_AndNot: + break; + } + + GB_PANIC("unhandled operator of lb_emit_arith"); + + return nullptr; +} + +LLVMValueRef lb_build_binary_expr(lbProcedure *p, Ast *expr) { + ast_node(be, BinaryExpr, expr); + + TypeAndValue tv = type_and_value_of_expr(expr); + + switch (be->op.kind) { + case Token_Add: + case Token_Sub: + case Token_Mul: + case Token_Quo: + case Token_Mod: + case Token_ModMod: + case Token_And: + case Token_Or: + case Token_Xor: + case Token_AndNot: + case Token_Shl: + case Token_Shr: { + Type *type = default_type(tv.type); + LLVMValueRef left = lb_build_expr(p, be->left); + LLVMValueRef right = lb_build_expr(p, be->right); + return lb_emit_arith(p, be->op.kind, left, right, type); + } + default: + GB_PANIC("Invalid binary expression"); + break; + } + return nullptr; +} + +LLVMValueRef lb_build_expr(lbProcedure *p, Ast *expr) { + expr = unparen_expr(expr); + + TypeAndValue tv = type_and_value_of_expr(expr); + GB_ASSERT(tv.mode != Addressing_Invalid); + GB_ASSERT(tv.mode != Addressing_Type); + + if (tv.value.kind != ExactValue_Invalid) { + // // NOTE(bill): Edge case + // if (tv.value.kind != ExactValue_Compound && + // is_type_array(tv.type)) { + // Type *elem = core_array_type(tv.type); + // ExactValue value = convert_exact_value_for_type(tv.value, elem); + // irValue *x = ir_add_module_constant(proc->module, elem, value); + // return ir_emit_conv(proc, x, tv.type); + // } + + // if (tv.value.kind == ExactValue_Typeid) { + // irValue *v = ir_typeid(proc->module, tv.value.value_typeid); + // return ir_emit_conv(proc, v, tv.type); + // } + + return lb_add_module_constant(p->module, tv.type, tv.value); + } + + + switch (expr->kind) { + case_ast_node(bl, BasicLit, expr); + TokenPos pos = bl->token.pos; + GB_PANIC("Non-constant basic literal %.*s(%td:%td) - %.*s", LIT(pos.file), pos.line, pos.column, LIT(token_strings[bl->token.kind])); + case_end; + + case_ast_node(bd, BasicDirective, expr); + TokenPos pos = bd->token.pos; + GB_PANIC("Non-constant basic literal %.*s(%td:%td) - %.*s", LIT(pos.file), pos.line, pos.column, LIT(bd->name)); + case_end; + + // case_ast_node(i, Implicit, expr); + // return ir_addr_load(proc, ir_build_addr(proc, expr)); + // case_end; + + case_ast_node(u, Undef, expr); + return LLVMGetUndef(lb_type(tv.type)); + case_end; + + case_ast_node(i, Ident, expr); + Entity *e = entity_of_ident(expr); + GB_ASSERT_MSG(e != nullptr, "%s", expr_to_string(expr)); + if (e->kind == Entity_Builtin) { + Token token = ast_token(expr); + GB_PANIC("TODO(bill): ir_build_expr Entity_Builtin '%.*s'\n" + "\t at %.*s(%td:%td)", LIT(builtin_procs[e->Builtin.id].name), + LIT(token.pos.file), token.pos.line, token.pos.column); + return nullptr; + } else if (e->kind == Entity_Nil) { + return LLVMConstNull(lb_type(tv.type)); + } + + auto *found = map_get(&p->module->values, hash_entity(e)); + if (found) { + LLVMValueRef v = *found; + LLVMTypeKind kind = LLVMGetTypeKind(LLVMTypeOf(v)); + if (kind == LLVMFunctionTypeKind) { + return v; + } + return LLVMBuildLoad2(p->builder, LLVMGetElementType(LLVMTypeOf(v)), v, ""); + // } else if (e != nullptr && e->kind == Entity_Variable) { + // return ir_addr_load(proc, ir_build_addr(proc, expr)); + } + GB_PANIC("nullptr value for expression from identifier: %.*s : %s @ %p", LIT(i->token.string), type_to_string(e->type), expr); + return nullptr; + case_end; + + case_ast_node(be, BinaryExpr, expr); + return lb_build_binary_expr(p, expr); + case_end; + } + + return nullptr; +} + + + + +void lb_generate_module(lbGenerator *gen) { + gen->module.mod = LLVMModuleCreateWithName("odin_module"); + map_init(&gen->module.values, heap_allocator()); + + LLVMModuleRef mod = gen->module.mod; + CheckerInfo *info = gen->info; + + Arena temp_arena = {}; + arena_init(&temp_arena, heap_allocator()); + gbAllocator temp_allocator = arena_allocator(&temp_arena); + + Entity *entry_point = info->entry_point; + + auto *min_dep_set = &info->minimum_dependency_set; + + + for_array(i, info->entities) { + arena_free_all(&temp_arena); + gbAllocator a = temp_allocator; + + Entity *e = info->entities[i]; + String name = e->token.string; + DeclInfo *decl = e->decl_info; + Scope * scope = e->scope; + + if ((scope->flags & ScopeFlag_File) == 0) { + continue; + } + + Scope *package_scope = scope->parent; + GB_ASSERT(package_scope->flags & ScopeFlag_Pkg); + + switch (e->kind) { + case Entity_Variable: + // NOTE(bill): Handled above as it requires a specific load order + continue; + case Entity_ProcGroup: + continue; + + case Entity_TypeName: + case Entity_Procedure: + break; + } + + bool polymorphic_struct = false; + if (e->type != nullptr && e->kind == Entity_TypeName) { + Type *bt = base_type(e->type); + if (bt->kind == Type_Struct) { + polymorphic_struct = is_type_polymorphic(bt); + } + } + + if (!polymorphic_struct && !ptr_set_exists(min_dep_set, e)) { + // NOTE(bill): Nothing depends upon it so doesn't need to be built + continue; + } + + + if (entry_point == e) { + lbProcedure *p = lb_create_procedure(&gen->module, e); + + if (p->body != nullptr) { // Build Procedure + + lb_build_stmt(p, p->body); + + LLVMBuildRet(p->builder, nullptr); + } + + lb_end_procedure(p); + } + } + + { + LLVMTypeRef ret_type = LLVMFunctionType(LLVMVoidType(), nullptr, 0, false); + + LLVMValueRef p = LLVMAddFunction(mod, "mainCRTStartup", ret_type); + + + LLVMBasicBlockRef entry = LLVMAppendBasicBlock(p, "entry"); + + LLVMBuilderRef b = LLVMCreateBuilder(); + defer (LLVMDisposeBuilder(b)); + + LLVMPositionBuilderAtEnd(b, entry); + + + LLVMBuildRetVoid(b); + // LLVMBuildRet(b, nullptr); + } + + char *llvm_error = nullptr; + defer (LLVMDisposeMessage(llvm_error)); + + LLVMVerifyModule(mod, LLVMAbortProcessAction, &llvm_error); + llvm_error = nullptr; + + LLVMDumpModule(mod); + + + LLVMPassManagerRef pass_manager = LLVMCreatePassManager(); + defer (LLVMDisposePassManager(pass_manager)); + + LLVMRunPassManager(pass_manager, mod); + LLVMFinalizeFunctionPassManager(pass_manager); + + LLVMInitializeAllTargetInfos(); + LLVMInitializeAllTargets(); + LLVMInitializeAllTargetMCs(); + LLVMInitializeAllAsmParsers(); + LLVMInitializeAllAsmPrinters(); + + char const *target_triple = "x86_64-pc-windows-msvc"; + char const *target_data_layout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"; + LLVMSetTarget(mod, target_triple); + + LLVMTargetRef target = {}; + LLVMGetTargetFromTriple(target_triple, &target, &llvm_error); + GB_ASSERT(target != nullptr); + + LLVMTargetMachineRef target_machine = LLVMCreateTargetMachine(target, target_triple, "generic", "", LLVMCodeGenLevelNone, LLVMRelocDefault, LLVMCodeModelDefault); + defer (LLVMDisposeTargetMachine(target_machine)); + + LLVMBool ok = LLVMTargetMachineEmitToFile(target_machine, mod, "llvm_demo.obj", LLVMObjectFile, &llvm_error); + if (ok) { + gb_printf_err("LLVM Error: %s\n", llvm_error); + return; + } +} diff --git a/src/main.cpp b/src/main.cpp index 317e8f577..95bc52d63 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -17,11 +17,15 @@ gb_global Timings global_timings = {0}; #include "parser.cpp" #include "docs.cpp" #include "checker.cpp" + +#include "llvm_backend.cpp" + #include "ir.cpp" #include "ir_opt.cpp" #include "ir_print.cpp" #include "query_data.cpp" + #if defined(GB_SYSTEM_WINDOWS) // NOTE(IC): In order to find Visual C++ paths without relying on environment variables. #include "microsoft_craziness.h" @@ -234,6 +238,7 @@ enum BuildFlagKind { BuildFlag_NoCRT, BuildFlag_UseLLD, BuildFlag_Vet, + BuildFlag_UseLLVMApi, BuildFlag_IgnoreUnknownAttributes, BuildFlag_Compact, @@ -324,6 +329,7 @@ bool parse_build_flags(Array args) { add_flag(&build_flags, BuildFlag_NoCRT, str_lit("no-crt"), BuildFlagParam_None); add_flag(&build_flags, BuildFlag_UseLLD, str_lit("lld"), BuildFlagParam_None); add_flag(&build_flags, BuildFlag_Vet, str_lit("vet"), BuildFlagParam_None); + add_flag(&build_flags, BuildFlag_UseLLVMApi, str_lit("llvm-api"), BuildFlagParam_None); add_flag(&build_flags, BuildFlag_IgnoreUnknownAttributes, str_lit("ignore-unknown-attributes"), BuildFlagParam_None); add_flag(&build_flags, BuildFlag_Compact, str_lit("compact"), BuildFlagParam_None); @@ -347,6 +353,7 @@ bool parse_build_flags(Array args) { gb_printf_err("Invalid flag: %.*s\n", LIT(flag)); continue; } + String name = substring(flag, 1, flag.len); isize end = 0; for (; end < name.len; end++) { @@ -692,6 +699,10 @@ bool parse_build_flags(Array args) { build_context.vet = true; break; + case BuildFlag_UseLLVMApi: + build_context.use_llvm_api = true; + break; + case BuildFlag_IgnoreUnknownAttributes: build_context.ignore_unknown_attributes = true; break; @@ -1263,6 +1274,15 @@ int main(int arg_count, char const **arg_ptr) { return 1; } + if (build_context.use_llvm_api) { + lbGenerator gen = {}; + if (!lb_init_generator(&gen, &checker)) { + return 1; + } + lb_generate_module(&gen); + return 0; + } + irGen ir_gen = {0}; if (!ir_gen_init(&ir_gen, &checker)) { return 1; diff --git a/src/types.cpp b/src/types.cpp index d2a040b0b..822583fee 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -1,3 +1,5 @@ +#include "llvm-c/Types.h" + struct Scope; struct Ast; @@ -299,6 +301,7 @@ struct Type { i64 cached_size; i64 cached_align; u32 flags; // TypeFlag + LLVMTypeRef llvm_type; bool failure; }; From 5f1b397a055be3cc58789281abdb7a390e2b18d5 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 1 Feb 2020 23:52:22 +0000 Subject: [PATCH 02/46] Use `lbValue` to represent values everywhere --- src/llvm_backend.cpp | 293 +++++++++++++++++++++++++++++-------------- src/main.cpp | 5 + 2 files changed, 207 insertions(+), 91 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index b2ab67442..eb66db696 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -4,11 +4,19 @@ #include "llvm-c/Analysis.h" #include "llvm-c/Object.h" #include "llvm-c/BitWriter.h" +#include "llvm-c/Transforms/AggressiveInstCombine.h" +#include "llvm-c/Transforms/InstCombine.h" +#include "llvm-c/Transforms/IPO.h" + +struct lbValue { + LLVMValueRef value; + Type *type; +}; struct lbModule { LLVMModuleRef mod; - Map values; // Key: Entity * + Map values; // Key: Entity * }; struct lbGenerator { @@ -28,12 +36,14 @@ enum lbAddrKind { lbAddr_SoaVariable, }; + + struct lbAddr { lbAddrKind kind; - LLVMValueRef addr; + lbValue addr; union { struct { - LLVMValueRef key; + lbValue key; Type *type; Type *result; } map; @@ -44,7 +54,7 @@ struct lbAddr { Selection sel; } ctx; struct { - LLVMValueRef index; + lbValue index; Ast *index_expr; } soa; }; @@ -76,36 +86,41 @@ struct lbProcedure { LLVMValueRef value; LLVMBuilderRef builder; - LLVMValueRef return_ptr; - Array params; - Array blocks; - Scope * curr_scope; - i32 scope_index; - lbBlock * decl_block; - lbBlock * entry_block; - lbBlock * curr_block; + lbValue return_ptr; + Array params; + Array blocks; + Scope * curr_scope; + i32 scope_index; + lbBlock * decl_block; + lbBlock * entry_block; + lbBlock * curr_block; }; lbBlock * lb_create_block(lbProcedure *p, char const *name); LLVMTypeRef lb_type(Type *type); void lb_build_stmt (lbProcedure *p, Ast *stmt); -LLVMValueRef lb_build_expr (lbProcedure *p, Ast *expr); +lbValue lb_build_expr (lbProcedure *p, Ast *expr); +lbValue lb_constant_nil(Type *type); -lbAddr lb_addr(LLVMValueRef addr) { + +lbAddr lb_addr(lbValue addr) { lbAddr v = {lbAddr_Default, addr}; return v; } -LLVMTypeRef lb_addr_type(lbAddr const &addr) { - return LLVMGetElementType(LLVMTypeOf(addr.addr)); +Type *lb_addr_type(lbAddr const &addr) { + return type_deref(addr.addr.type); +} +LLVMTypeRef lb_addr_lb_type(lbAddr const &addr) { + return LLVMGetElementType(LLVMTypeOf(addr.addr.value)); } -void lb_addr_store(lbProcedure *p, lbAddr const &addr, LLVMValueRef value) { - if (addr.addr == nullptr) { +void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue const &value) { + if (addr.addr.value == nullptr) { return; } - GB_ASSERT(value != nullptr); - LLVMBuildStore(p->builder, value, addr.addr); + GB_ASSERT(value.value != nullptr); + LLVMBuildStore(p->builder, value.value, addr.addr.value); } LLVMTypeRef lb_type_internal(Type *type) { @@ -380,11 +395,15 @@ lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr) { LLVMPositionBuilderAtEnd(p->builder, p->curr_block->block); + lbValue val = {}; + val.value = ptr; + val.type = alloc_type_pointer(type); + if (e != nullptr) { - map_set(&p->module->values, hash_entity(e), ptr); + map_set(&p->module->values, hash_entity(e), val); } - return lb_addr(ptr); + return lb_addr(val); } @@ -482,7 +501,7 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { auto addrs = array_make(heap_allocator(), vd->names.count); - auto values = array_make(heap_allocator(), 0, vd->names.count); + auto values = array_make(heap_allocator(), 0, vd->names.count); defer (array_free(&addrs)); defer (array_free(&values)); @@ -492,13 +511,13 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { Entity *e = entity_of_ident(name); addrs[i] = lb_add_local(p, e->type, e); if (vd->values.count == 0) { - lb_addr_store(p, addrs[i], LLVMConstNull(lb_addr_type(addrs[i]))); + lb_addr_store(p, addrs[i], lb_constant_nil(lb_addr_type(addrs[i]))); } } } for_array(i, vd->values) { - LLVMValueRef value = lb_build_expr(p, vd->values[i]); + lbValue value = lb_build_expr(p, vd->values[i]); array_add(&values, value); } @@ -510,28 +529,78 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { } } -LLVMValueRef lb_value_constant(Type *type, ExactValue const &value) { +lbValue lb_constant_nil(Type *type) { + LLVMValueRef v = LLVMConstNull(lb_type(type)); + return lbValue{v, type}; +} + +LLVMValueRef llvm_const_f32(f32 f, Type *type=t_f32) { + u32 u = bit_cast(f); + LLVMValueRef i = LLVMConstInt(LLVMInt32Type(), u, false); + return LLVMConstBitCast(i, lb_type(type)); +} + +lbValue lb_constant_value(Type *type, ExactValue const &value) { switch (value.kind) { case ExactValue_Invalid: - return LLVMConstNull(lb_type(type)); + return lbValue{LLVMConstNull(lb_type(type)), type}; case ExactValue_Bool: - return LLVMConstInt(lb_type(type), value.value_bool, false); + return lbValue{LLVMConstInt(lb_type(type), value.value_bool, false), type}; case ExactValue_String: - return LLVMConstInt(lb_type(type), value.value_bool, false); + return lbValue{LLVMConstInt(lb_type(type), value.value_bool, false), type}; case ExactValue_Integer: - return LLVMConstIntOfArbitraryPrecision(lb_type(type), cast(unsigned)value.value_integer.len, big_int_ptr(&value.value_integer)); + return lbValue{LLVMConstIntOfArbitraryPrecision(lb_type(type), cast(unsigned)value.value_integer.len, big_int_ptr(&value.value_integer)), type}; case ExactValue_Float: - return LLVMConstReal(lb_type(type), value.value_float); + if (type_size_of(type) == 4) { + f32 f = cast(f32)value.value_float; + return lbValue{llvm_const_f32(f, type), type}; + } + return lbValue{LLVMConstReal(lb_type(type), value.value_float), type}; case ExactValue_Complex: - GB_PANIC("ExactValue_Complex"); + { + LLVMValueRef values[2] = {}; + switch (8*type_size_of(type)) { + case 64: + values[0] = llvm_const_f32(cast(f32)value.value_complex.real); + values[1] = llvm_const_f32(cast(f32)value.value_complex.imag); + break; + case 128: + values[0] = LLVMConstReal(lb_type(t_f64), value.value_complex.real); + values[1] = LLVMConstReal(lb_type(t_f64), value.value_complex.imag); + break; + } + + return lbValue{LLVMConstStruct(values, 2, false)}; + } break; case ExactValue_Quaternion: - GB_PANIC("ExactValue_Quaternion"); + { + LLVMValueRef values[4] = {}; + switch (8*type_size_of(type)) { + case 128: + // @QuaternionLayout + values[3] = llvm_const_f32(cast(f32)value.value_quaternion.real); + values[0] = llvm_const_f32(cast(f32)value.value_quaternion.imag); + values[1] = llvm_const_f32(cast(f32)value.value_quaternion.jmag); + values[2] = llvm_const_f32(cast(f32)value.value_quaternion.kmag); + break; + case 256: + // @QuaternionLayout + values[3] = LLVMConstReal(lb_type(t_f64), value.value_quaternion.real); + values[0] = LLVMConstReal(lb_type(t_f64), value.value_quaternion.imag); + values[1] = LLVMConstReal(lb_type(t_f64), value.value_quaternion.jmag); + values[2] = LLVMConstReal(lb_type(t_f64), value.value_quaternion.kmag); + break; + } + + return lbValue{LLVMConstStruct(values, 4, false)}; + } break; case ExactValue_Pointer: - return LLVMConstBitCast(LLVMConstInt(lb_type(t_uintptr), value.value_pointer, false), lb_type(type)); + return lbValue{LLVMConstBitCast(LLVMConstInt(lb_type(t_uintptr), value.value_pointer, false), lb_type(type)), type}; + case ExactValue_Compound: GB_PANIC("ExactValue_Compound"); break; @@ -544,50 +613,88 @@ LLVMValueRef lb_value_constant(Type *type, ExactValue const &value) { } GB_PANIC("UNKNOWN ExactValue kind"); - return nullptr; + return lbValue{nullptr, type}; } -LLVMValueRef lb_add_module_constant(lbModule *m, Type *type, ExactValue const &value) { +lbValue lb_add_module_constant(lbModule *m, Type *type, ExactValue const &value) { gbAllocator a = heap_allocator(); if (is_type_slice(type)) { GB_PANIC("lb_add_module_constant -> slice"); } - return lb_value_constant(type, value); + return lb_constant_value(type, value); } -LLVMValueRef lb_emit_arith(lbProcedure *p, TokenKind op, LLVMValueRef lhs, LLVMValueRef rhs, Type *type) { +lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Type *type) { switch (op) { case Token_Add: - return LLVMBuildAdd(p->builder, lhs, rhs, ""); + if (is_type_float(type)) { + return lbValue{LLVMBuildFAdd(p->builder, lhs.value, rhs.value, ""), type}; + } + return lbValue{LLVMBuildAdd(p->builder, lhs.value, rhs.value, ""), type}; case Token_Sub: - return LLVMBuildSub(p->builder, lhs, rhs, ""); + if (is_type_float(type)) { + return lbValue{LLVMBuildFSub(p->builder, lhs.value, rhs.value, ""), type}; + } + return lbValue{LLVMBuildSub(p->builder, lhs.value, rhs.value, ""), type}; case Token_Mul: - return LLVMBuildMul(p->builder, lhs, rhs, ""); + if (is_type_float(type)) { + return lbValue{LLVMBuildFMul(p->builder, lhs.value, rhs.value, ""), type}; + } + return lbValue{LLVMBuildMul(p->builder, lhs.value, rhs.value, ""), type}; case Token_Quo: + if (is_type_float(type)) { + return lbValue{LLVMBuildFDiv(p->builder, lhs.value, rhs.value, ""), type}; + } else if (is_type_unsigned(type)) { + return lbValue{LLVMBuildUDiv(p->builder, lhs.value, rhs.value, ""), type}; + } + return lbValue{LLVMBuildSDiv(p->builder, lhs.value, rhs.value, ""), type}; case Token_Mod: + if (is_type_float(type)) { + return lbValue{LLVMBuildFRem(p->builder, lhs.value, rhs.value, ""), type}; + } else if (is_type_unsigned(type)) { + return lbValue{LLVMBuildURem(p->builder, lhs.value, rhs.value, ""), type}; + } + return lbValue{LLVMBuildSRem(p->builder, lhs.value, rhs.value, ""), type}; case Token_ModMod: - case Token_And: - return LLVMBuildAdd(p->builder, lhs, rhs, ""); - case Token_Or: - return LLVMBuildOr(p->builder, lhs, rhs, ""); - case Token_Xor: - return LLVMBuildXor(p->builder, lhs, rhs, ""); - case Token_Shl: - return LLVMBuildShl(p->builder, lhs, rhs, ""); - case Token_Shr: + if (is_type_unsigned(type)) { + return lbValue{LLVMBuildURem(p->builder, lhs.value, rhs.value, ""), type}; + } else { + LLVMValueRef a = LLVMBuildSRem(p->builder, lhs.value, rhs.value, ""); + LLVMValueRef b = LLVMBuildAdd(p->builder, a, rhs.value, ""); + LLVMValueRef c = LLVMBuildSRem(p->builder, b, rhs.value, ""); + return lbValue{c, type}; + } + case Token_And: + return lbValue{LLVMBuildAnd(p->builder, lhs.value, rhs.value, ""), type}; + case Token_Or: + return lbValue{LLVMBuildOr(p->builder, lhs.value, rhs.value, ""), type}; + case Token_Xor: + return lbValue{LLVMBuildXor(p->builder, lhs.value, rhs.value, ""), type}; + case Token_Shl: + return lbValue{LLVMBuildShl(p->builder, lhs.value, rhs.value, ""), type}; + case Token_Shr: + if (is_type_unsigned(type)) { + return lbValue{LLVMBuildLShr(p->builder, lhs.value, rhs.value, ""), type}; + } + return lbValue{LLVMBuildAShr(p->builder, lhs.value, rhs.value, ""), type}; case Token_AndNot: + { + LLVMValueRef all_ones = LLVMConstAllOnes(lb_type(type)); + LLVMValueRef new_rhs = LLVMBuildXor(p->builder, all_ones, rhs.value, ""); + return lbValue{LLVMBuildAnd(p->builder, lhs.value, new_rhs, ""), type}; + } break; } GB_PANIC("unhandled operator of lb_emit_arith"); - return nullptr; + return {}; } -LLVMValueRef lb_build_binary_expr(lbProcedure *p, Ast *expr) { +lbValue lb_build_binary_expr(lbProcedure *p, Ast *expr) { ast_node(be, BinaryExpr, expr); TypeAndValue tv = type_and_value_of_expr(expr); @@ -606,18 +713,18 @@ LLVMValueRef lb_build_binary_expr(lbProcedure *p, Ast *expr) { case Token_Shl: case Token_Shr: { Type *type = default_type(tv.type); - LLVMValueRef left = lb_build_expr(p, be->left); - LLVMValueRef right = lb_build_expr(p, be->right); + lbValue left = lb_build_expr(p, be->left); + lbValue right = lb_build_expr(p, be->right); return lb_emit_arith(p, be->op.kind, left, right, type); } default: GB_PANIC("Invalid binary expression"); break; } - return nullptr; + return {}; } -LLVMValueRef lb_build_expr(lbProcedure *p, Ast *expr) { +lbValue lb_build_expr(lbProcedure *p, Ast *expr) { expr = unparen_expr(expr); TypeAndValue tv = type_and_value_of_expr(expr); @@ -659,7 +766,7 @@ LLVMValueRef lb_build_expr(lbProcedure *p, Ast *expr) { // case_end; case_ast_node(u, Undef, expr); - return LLVMGetUndef(lb_type(tv.type)); + return lbValue{LLVMGetUndef(lb_type(tv.type)), tv.type}; case_end; case_ast_node(i, Ident, expr); @@ -670,24 +777,24 @@ LLVMValueRef lb_build_expr(lbProcedure *p, Ast *expr) { GB_PANIC("TODO(bill): ir_build_expr Entity_Builtin '%.*s'\n" "\t at %.*s(%td:%td)", LIT(builtin_procs[e->Builtin.id].name), LIT(token.pos.file), token.pos.line, token.pos.column); - return nullptr; + return {}; } else if (e->kind == Entity_Nil) { - return LLVMConstNull(lb_type(tv.type)); + return lb_constant_nil(tv.type); } auto *found = map_get(&p->module->values, hash_entity(e)); if (found) { - LLVMValueRef v = *found; - LLVMTypeKind kind = LLVMGetTypeKind(LLVMTypeOf(v)); + auto v = *found; + LLVMTypeKind kind = LLVMGetTypeKind(LLVMTypeOf(v.value)); if (kind == LLVMFunctionTypeKind) { return v; } - return LLVMBuildLoad2(p->builder, LLVMGetElementType(LLVMTypeOf(v)), v, ""); + return lbValue{LLVMBuildLoad2(p->builder, lb_type(type_deref(v.type)), v.value, ""), e->type}; // } else if (e != nullptr && e->kind == Entity_Variable) { // return ir_addr_load(proc, ir_build_addr(proc, expr)); } GB_PANIC("nullptr value for expression from identifier: %.*s : %s @ %p", LIT(i->token.string), type_to_string(e->type), expr); - return nullptr; + return {}; case_end; case_ast_node(be, BinaryExpr, expr); @@ -695,7 +802,7 @@ LLVMValueRef lb_build_expr(lbProcedure *p, Ast *expr) { case_end; } - return nullptr; + return {}; } @@ -718,8 +825,8 @@ void lb_generate_module(lbGenerator *gen) { for_array(i, info->entities) { - arena_free_all(&temp_arena); - gbAllocator a = temp_allocator; + // arena_free_all(&temp_arena); + // gbAllocator a = temp_allocator; Entity *e = info->entities[i]; String name = e->token.string; @@ -767,6 +874,7 @@ void lb_generate_module(lbGenerator *gen) { lb_build_stmt(p, p->body); LLVMBuildRet(p->builder, nullptr); + // LLVMBuildRetVoid(p->builder); } lb_end_procedure(p); @@ -794,38 +902,41 @@ void lb_generate_module(lbGenerator *gen) { char *llvm_error = nullptr; defer (LLVMDisposeMessage(llvm_error)); + + // LLVMPassManagerRef pass_manager = LLVMCreatePassManager(); + // defer (LLVMDisposePassManager(pass_manager)); + + // LLVMAddAggressiveInstCombinerPass(pass_manager); + // LLVMAddConstantMergePass(pass_manager); + // LLVMAddDeadArgEliminationPass(pass_manager); + + // LLVMRunPassManager(pass_manager, mod); + LLVMVerifyModule(mod, LLVMAbortProcessAction, &llvm_error); llvm_error = nullptr; LLVMDumpModule(mod); + // LLVMInitializeAllTargetInfos(); + // LLVMInitializeAllTargets(); + // LLVMInitializeAllTargetMCs(); + // LLVMInitializeAllAsmParsers(); + // LLVMInitializeAllAsmPrinters(); - LLVMPassManagerRef pass_manager = LLVMCreatePassManager(); - defer (LLVMDisposePassManager(pass_manager)); + // char const *target_triple = "x86_64-pc-windows-msvc"; + // char const *target_data_layout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"; + // LLVMSetTarget(mod, target_triple); - LLVMRunPassManager(pass_manager, mod); - LLVMFinalizeFunctionPassManager(pass_manager); + // LLVMTargetRef target = {}; + // LLVMGetTargetFromTriple(target_triple, &target, &llvm_error); + // GB_ASSERT(target != nullptr); - LLVMInitializeAllTargetInfos(); - LLVMInitializeAllTargets(); - LLVMInitializeAllTargetMCs(); - LLVMInitializeAllAsmParsers(); - LLVMInitializeAllAsmPrinters(); + // LLVMTargetMachineRef target_machine = LLVMCreateTargetMachine(target, target_triple, "generic", "", LLVMCodeGenLevelNone, LLVMRelocDefault, LLVMCodeModelDefault); + // defer (LLVMDisposeTargetMachine(target_machine)); - char const *target_triple = "x86_64-pc-windows-msvc"; - char const *target_data_layout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"; - LLVMSetTarget(mod, target_triple); - - LLVMTargetRef target = {}; - LLVMGetTargetFromTriple(target_triple, &target, &llvm_error); - GB_ASSERT(target != nullptr); - - LLVMTargetMachineRef target_machine = LLVMCreateTargetMachine(target, target_triple, "generic", "", LLVMCodeGenLevelNone, LLVMRelocDefault, LLVMCodeModelDefault); - defer (LLVMDisposeTargetMachine(target_machine)); - - LLVMBool ok = LLVMTargetMachineEmitToFile(target_machine, mod, "llvm_demo.obj", LLVMObjectFile, &llvm_error); - if (ok) { - gb_printf_err("LLVM Error: %s\n", llvm_error); - return; - } + // LLVMBool ok = LLVMTargetMachineEmitToFile(target_machine, mod, "llvm_demo.obj", LLVMObjectFile, &llvm_error); + // if (ok) { + // gb_printf_err("LLVM Error: %s\n", llvm_error); + // return; + // } } diff --git a/src/main.cpp b/src/main.cpp index 95bc52d63..bed1935ec 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1275,11 +1275,16 @@ int main(int arg_count, char const **arg_ptr) { } if (build_context.use_llvm_api) { + timings_start_section(timings, str_lit("LLVM API Code Gen")); lbGenerator gen = {}; if (!lb_init_generator(&gen, &checker)) { return 1; } lb_generate_module(&gen); + + if (build_context.show_timings) { + show_timings(&checker, timings); + } return 0; } From 5dc82c2720524b2c99f3b35c3636e0b0f10dcbb7 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 2 Feb 2020 12:34:49 +0000 Subject: [PATCH 03/46] Correctly generate LLVM types from Odin types. --- examples/llvm-demo/demo.odin | 23 +- src/llvm_backend.cpp | 445 ++++++++++++++++++++++++++++++----- 2 files changed, 401 insertions(+), 67 deletions(-) diff --git a/examples/llvm-demo/demo.odin b/examples/llvm-demo/demo.odin index 481970ab5..e3727e610 100644 --- a/examples/llvm-demo/demo.odin +++ b/examples/llvm-demo/demo.odin @@ -3,9 +3,28 @@ package demo import "core:os" main :: proc() { - x := 1; - y := 2; + Foo :: struct { + x, y: int, + }; + + x := i32(1); + y := i32(2); z := x + y; w := z - 2; + + + c := 1 + 2i; + q := 1 + 2i + 3j + 4k; + + s := "Hellope"; + + f: Foo; + pc: proc "contextless" (x: i32) -> Foo; + po: proc "odin" (x: i32) -> Foo; + e: enum{A, B, C}; + u: union{i32, bool}; + u1: union{i32}; + um: union #maybe {^int}; + // os.write_string(os.stdout, "Hellope\n"); } diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index eb66db696..fd6d7a983 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -103,6 +103,12 @@ lbValue lb_build_expr (lbProcedure *p, Ast *expr); lbValue lb_constant_nil(Type *type); +gb_internal lbModule *global_module = nullptr; + +gb_internal LLVMValueRef lb_zero32 = nullptr; +gb_internal LLVMValueRef lb_one32 = nullptr; + + lbAddr lb_addr(lbValue addr) { lbAddr v = {lbAddr_Default, addr}; return v; @@ -123,7 +129,36 @@ void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue const &value) { LLVMBuildStore(p->builder, value.value, addr.addr.value); } +void lb_clone_struct_type(LLVMTypeRef dst, LLVMTypeRef src) { + unsigned field_count = LLVMCountStructElementTypes(src); + LLVMTypeRef *fields = gb_alloc_array(heap_allocator(), LLVMTypeRef, field_count); + LLVMGetStructElementTypes(src, fields); + LLVMStructSetBody(dst, fields, field_count, LLVMIsPackedStruct(src)); + gb_free(heap_allocator(), fields); +} + +LLVMTypeRef lb_alignment_prefix_type_hack(i64 alignment) { + switch (alignment) { + case 1: + return LLVMArrayType(lb_type(t_u8), 0); + case 2: + return LLVMArrayType(lb_type(t_u16), 0); + case 4: + return LLVMArrayType(lb_type(t_u32), 0); + case 8: + return LLVMArrayType(lb_type(t_u64), 0); + case 16: + return LLVMArrayType(LLVMVectorType(lb_type(t_u32), 4), 0); + default: + GB_PANIC("Invalid alignment %d", cast(i32)alignment); + break; + } + return nullptr; +} + LLVMTypeRef lb_type_internal(Type *type) { + i64 size = type_size_of(type); // Check size + switch (type->kind) { case Type_Basic: switch (type->Basic.kind) { @@ -154,40 +189,48 @@ LLVMTypeRef lb_type_internal(Type *type) { // Basic_complex32, case Basic_complex64: { + LLVMTypeRef type = LLVMStructCreateNamed(LLVMGetGlobalContext(), "..complex64"); LLVMTypeRef fields[2] = { lb_type(t_f32), lb_type(t_f32), }; - return LLVMStructType(fields, 2, false); + LLVMStructSetBody(type, fields, 2, false); + return type; } case Basic_complex128: { + LLVMTypeRef type = LLVMStructCreateNamed(LLVMGetGlobalContext(), "..complex128"); LLVMTypeRef fields[2] = { lb_type(t_f64), lb_type(t_f64), }; - return LLVMStructType(fields, 2, false); + LLVMStructSetBody(type, fields, 2, false); + return type; } case Basic_quaternion128: { + LLVMTypeRef type = LLVMStructCreateNamed(LLVMGetGlobalContext(), "..quaternion128"); LLVMTypeRef fields[4] = { lb_type(t_f32), lb_type(t_f32), lb_type(t_f32), lb_type(t_f32), }; - return LLVMStructType(fields, 4, false); + LLVMStructSetBody(type, fields, 4, false); + return type; } case Basic_quaternion256: { + LLVMTypeRef type = LLVMStructCreateNamed(LLVMGetGlobalContext(), "..quaternion256"); LLVMTypeRef fields[4] = { lb_type(t_f64), lb_type(t_f64), lb_type(t_f64), lb_type(t_f64), }; - return LLVMStructType(fields, 4, false); + LLVMStructSetBody(type, fields, 4, false); + return type; } case Basic_int: return LLVMIntType(8*cast(unsigned)build_context.word_size); @@ -198,40 +241,44 @@ LLVMTypeRef lb_type_internal(Type *type) { case Basic_rawptr: return LLVMPointerType(LLVMInt8Type(), 0); case Basic_string: { + LLVMTypeRef type = LLVMStructCreateNamed(LLVMGetGlobalContext(), "..string"); LLVMTypeRef fields[2] = { LLVMPointerType(lb_type(t_u8), 0), lb_type(t_int), }; - return LLVMStructType(fields, 2, false); + LLVMStructSetBody(type, fields, 2, false); + return type; } case Basic_cstring: return LLVMPointerType(LLVMInt8Type(), 0); case Basic_any: { + LLVMTypeRef type = LLVMStructCreateNamed(LLVMGetGlobalContext(), "..any"); LLVMTypeRef fields[2] = { LLVMPointerType(lb_type(t_rawptr), 0), lb_type(t_typeid), }; - return LLVMStructType(fields, 2, false); + LLVMStructSetBody(type, fields, 2, false); + return type; } case Basic_typeid: return LLVMIntType(8*cast(unsigned)build_context.word_size); // Endian Specific Types - case Basic_i16le: return LLVMInt16Type(); - case Basic_u16le: return LLVMInt16Type(); - case Basic_i32le: return LLVMInt32Type(); - case Basic_u32le: return LLVMInt32Type(); - case Basic_i64le: return LLVMInt64Type(); - case Basic_u64le: return LLVMInt64Type(); + case Basic_i16le: return LLVMInt16Type(); + case Basic_u16le: return LLVMInt16Type(); + case Basic_i32le: return LLVMInt32Type(); + case Basic_u32le: return LLVMInt32Type(); + case Basic_i64le: return LLVMInt64Type(); + case Basic_u64le: return LLVMInt64Type(); case Basic_i128le: return LLVMInt128Type(); case Basic_u128le: return LLVMInt128Type(); - case Basic_i16be: return LLVMInt16Type(); - case Basic_u16be: return LLVMInt16Type(); - case Basic_i32be: return LLVMInt32Type(); - case Basic_u32be: return LLVMInt32Type(); - case Basic_i64be: return LLVMInt64Type(); - case Basic_u64be: return LLVMInt64Type(); + case Basic_i16be: return LLVMInt16Type(); + case Basic_u16be: return LLVMInt16Type(); + case Basic_i32be: return LLVMInt32Type(); + case Basic_u32be: return LLVMInt32Type(); + case Basic_i64be: return LLVMInt64Type(); + case Basic_u64be: return LLVMInt64Type(); case Basic_i128be: return LLVMInt128Type(); case Basic_u128be: return LLVMInt128Type(); @@ -248,16 +295,74 @@ LLVMTypeRef lb_type_internal(Type *type) { } break; case Type_Named: - GB_PANIC("Type_Named"); - return nullptr; + { + Type *base = base_type(type->Named.base); + + switch (base->kind) { + case Type_Basic: + return lb_type(base); + + case Type_Named: + case Type_Generic: + case Type_BitFieldValue: + GB_PANIC("INVALID TYPE"); + break; + + case Type_Pointer: + case Type_Opaque: + case Type_Array: + case Type_EnumeratedArray: + case Type_Slice: + case Type_DynamicArray: + case Type_Map: + case Type_Enum: + case Type_BitSet: + case Type_SimdVector: + return lb_type(base); + + // TODO(bill): Deal with this correctly. Can this be named? + case Type_Proc: + return lb_type(base); + + case Type_Tuple: + return lb_type(base); + } + + LLVMContextRef ctx = LLVMGetModuleContext(global_module->mod); + + if (base->llvm_type != nullptr) { + LLVMTypeKind kind = LLVMGetTypeKind(base->llvm_type); + if (kind == LLVMStructTypeKind) { + type->llvm_type = LLVMStructCreateNamed(ctx, alloc_cstring(heap_allocator(), type->Named.name)); + lb_clone_struct_type(type->llvm_type, base->llvm_type); + } + } + + switch (base->kind) { + case Type_Struct: + case Type_Union: + case Type_BitField: + type->llvm_type = LLVMStructCreateNamed(ctx, alloc_cstring(heap_allocator(), type->Named.name)); + lb_clone_struct_type(type->llvm_type, lb_type(base)); + return type->llvm_type; + } + + + return lb_type(base); + } + case Type_Pointer: return LLVMPointerType(lb_type(type_deref(type)), 0); + case Type_Opaque: return lb_type(base_type(type)); + case Type_Array: return LLVMArrayType(lb_type(type->Array.elem), cast(unsigned)type->Array.count); + case Type_EnumeratedArray: return LLVMArrayType(lb_type(type->EnumeratedArray.elem), cast(unsigned)type->EnumeratedArray.count); + case Type_Slice: { LLVMTypeRef fields[2] = { @@ -267,6 +372,7 @@ LLVMTypeRef lb_type_internal(Type *type) { return LLVMStructType(fields, 2, false); } break; + case Type_DynamicArray: { LLVMTypeRef fields[4] = { @@ -278,27 +384,160 @@ LLVMTypeRef lb_type_internal(Type *type) { return LLVMStructType(fields, 4, false); } break; + case Type_Map: return lb_type(type->Map.internal_type); + case Type_Struct: - GB_PANIC("Type_Struct"); + { + if (type->Struct.is_raw_union) { + unsigned field_count = 2; + LLVMTypeRef *fields = gb_alloc_array(heap_allocator(), LLVMTypeRef, field_count); + i64 alignment = type_align_of(type); + unsigned size_of_union = cast(unsigned)type_size_of(type); + fields[0] = lb_alignment_prefix_type_hack(alignment); + fields[1] = LLVMArrayType(lb_type(t_u8), size_of_union); + return LLVMStructType(fields, field_count, false); + } + + isize offset = 0; + if (type->Struct.custom_align > 0) { + offset = 1; + } + + unsigned field_count = cast(unsigned)(type->Struct.fields.count + offset); + LLVMTypeRef *fields = gb_alloc_array(heap_allocator(), LLVMTypeRef, field_count); + defer (gb_free(heap_allocator(), fields)); + + for_array(i, type->Struct.fields) { + Entity *field = type->Struct.fields[i]; + fields[i+offset] = lb_type(field->type); + } + + if (type->Struct.custom_align > 0) { + fields[0] = lb_alignment_prefix_type_hack(type->Struct.custom_align); + } + + return LLVMStructType(fields, field_count, type->Struct.is_packed); + } break; + case Type_Union: - GB_PANIC("Type_Union"); + if (type->Union.variants.count == 0) { + return LLVMStructType(nullptr, 0, false); + } else { + // NOTE(bill): The zero size array is used to fix the alignment used in a structure as + // LLVM takes the first element's alignment as the entire alignment (like C) + i64 align = type_align_of(type); + i64 size = type_size_of(type); + + if (is_type_union_maybe_pointer_original_alignment(type)) { + LLVMTypeRef fields[1] = {lb_type(type->Union.variants[0])}; + return LLVMStructType(fields, 1, false); + } + + unsigned block_size = cast(unsigned)type->Union.variant_block_size; + + LLVMTypeRef fields[3] = {}; + unsigned field_count = 1; + fields[0] = lb_alignment_prefix_type_hack(align); + if (is_type_union_maybe_pointer(type)) { + field_count += 1; + fields[1] = lb_type(type->Union.variants[0]); + } else { + field_count += 2; + fields[1] = LLVMArrayType(lb_type(t_u8), block_size); + fields[2] = lb_type(union_tag_type(type)); + } + + return LLVMStructType(fields, field_count, false); + } break; + case Type_Enum: - return LLVMIntType(8*cast(unsigned)type_size_of(type)); + return lb_type(base_enum_type(type)); + case Type_Tuple: - GB_PANIC("Type_Tuple"); - break; + { + unsigned field_count = cast(unsigned)(type->Tuple.variables.count); + LLVMTypeRef *fields = gb_alloc_array(heap_allocator(), LLVMTypeRef, field_count); + defer (gb_free(heap_allocator(), fields)); + + for_array(i, type->Tuple.variables) { + Entity *field = type->Tuple.variables[i]; + fields[i] = lb_type(field->type); + } + + return LLVMStructType(fields, field_count, type->Tuple.is_packed); + } + case Type_Proc: - set_procedure_abi_types(heap_allocator(), type); - GB_PANIC("Type_Proc"); + { + set_procedure_abi_types(heap_allocator(), type); + + LLVMTypeRef return_type = LLVMVoidType(); + isize offset = 0; + if (type->Proc.return_by_pointer) { + offset = 1; + } else if (type->Proc.abi_compat_result_type != nullptr) { + return_type = lb_type(type->Proc.abi_compat_result_type); + } + + isize extra_param_count = offset; + if (type->Proc.calling_convention == ProcCC_Odin) { + extra_param_count += 1; + } + + unsigned param_count = cast(unsigned)(type->Proc.abi_compat_params.count + extra_param_count); + LLVMTypeRef *param_types = gb_alloc_array(heap_allocator(), LLVMTypeRef, param_count); + defer (gb_free(heap_allocator(), param_types)); + + for_array(i, type->Proc.abi_compat_params) { + Type *param = type->Proc.abi_compat_params[i]; + param_types[i+offset] = lb_type(param); + } + if (type->Proc.return_by_pointer) { + param_types[0] = LLVMPointerType(lb_type(type->Proc.abi_compat_result_type), 0); + } + if (type->Proc.calling_convention == ProcCC_Odin) { + param_types[param_count-1] = lb_type(t_context_ptr); + } + + LLVMTypeRef t = LLVMFunctionType(return_type, param_types, param_count, type->Proc.c_vararg); + return LLVMPointerType(t, 0); + } break; case Type_BitFieldValue: return LLVMIntType(type->BitFieldValue.bits); + case Type_BitField: - GB_PANIC("Type_BitField"); + { + LLVMTypeRef internal_type = nullptr; + { + GB_ASSERT(type->BitField.fields.count == type->BitField.sizes.count); + unsigned field_count = cast(unsigned)type->BitField.fields.count; + LLVMTypeRef *fields = gb_alloc_array(heap_allocator(), LLVMTypeRef, field_count); + defer (gb_free(heap_allocator(), fields)); + + for_array(i, type->BitField.sizes) { + u32 size = type->BitField.sizes[i]; + fields[i] = LLVMIntType(size); + } + + internal_type = LLVMStructType(fields, field_count, true); + } + unsigned field_count = 2; + LLVMTypeRef *fields = gb_alloc_array(heap_allocator(), LLVMTypeRef, field_count); + + i64 alignment = 1; + if (type->BitField.custom_align > 0) { + alignment = type->BitField.custom_align; + } + fields[0] = lb_alignment_prefix_type_hack(alignment); + fields[1] = internal_type; + + return LLVMStructType(fields, field_count, true); + } break; case Type_BitSet: return LLVMIntType(8*cast(unsigned)type_size_of(type)); @@ -448,6 +687,15 @@ bool lb_init_generator(lbGenerator *gen, Checker *c) { gen->info = &c->info; + gen->module.mod = LLVMModuleCreateWithName("odin_module"); + map_init(&gen->module.values, heap_allocator()); + + global_module = &gen->module; + + lb_zero32 = LLVMConstInt(lb_type(t_i32), 0, false); + lb_one32 = LLVMConstInt(lb_type(t_i32), 1, false); + + return true; } @@ -470,6 +718,14 @@ void lb_build_stmt_list(lbProcedure *p, Array const &stmts) { } } +lbValue lb_build_gep(lbProcedure *p, lbValue const &value, i32 index) { + Type *elem_type = nullptr; + + + GB_ASSERT(elem_type != nullptr); + return lbValue{LLVMBuildStructGEP2(p->builder, lb_type(elem_type), value.value, index, ""), elem_type}; +} + void lb_build_stmt(lbProcedure *p, Ast *node) { switch (node->kind) { @@ -517,7 +773,12 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { } for_array(i, vd->values) { - lbValue value = lb_build_expr(p, vd->values[i]); + Ast *expr = vd->values[i]; + lbValue value = lb_build_expr(p, expr); + GB_ASSERT_MSG(value.type != nullptr, "%s", expr_to_string(expr)); + if (is_type_tuple(value.type)) { + + } array_add(&values, value); } @@ -540,23 +801,51 @@ LLVMValueRef llvm_const_f32(f32 f, Type *type=t_f32) { return LLVMConstBitCast(i, lb_type(type)); } -lbValue lb_constant_value(Type *type, ExactValue const &value) { +lbValue lb_constant_value(lbModule *m, Type *type, ExactValue const &value) { + lbValue res = {}; + res.type = type; switch (value.kind) { case ExactValue_Invalid: - return lbValue{LLVMConstNull(lb_type(type)), type}; + res.value = LLVMConstNull(lb_type(type)); + return res; case ExactValue_Bool: - return lbValue{LLVMConstInt(lb_type(type), value.value_bool, false), type}; + res.value = LLVMConstInt(lb_type(type), value.value_bool, false); + return res; case ExactValue_String: - return lbValue{LLVMConstInt(lb_type(type), value.value_bool, false), type}; + { + LLVMValueRef indices[2] = {lb_zero32, lb_zero32}; + LLVMValueRef data = LLVMConstString(cast(char const *)value.value_string.text, + cast(unsigned)value.value_string.len, + false); + LLVMValueRef global_data = LLVMAddGlobal(m->mod, LLVMTypeOf(data), "test_string_data"); + LLVMSetInitializer(global_data, data); + + LLVMValueRef ptr = LLVMConstInBoundsGEP(global_data, indices, 2); + + if (is_type_cstring(type)) { + res.value = ptr; + return res; + } + + LLVMValueRef len = LLVMConstInt(lb_type(t_int), value.value_string.len, true); + LLVMValueRef values[2] = {ptr, len}; + + res.value = LLVMConstNamedStruct(lb_type(type), values, 2); + return res; + } + case ExactValue_Integer: - return lbValue{LLVMConstIntOfArbitraryPrecision(lb_type(type), cast(unsigned)value.value_integer.len, big_int_ptr(&value.value_integer)), type}; + res.value = LLVMConstIntOfArbitraryPrecision(lb_type(type), cast(unsigned)value.value_integer.len, big_int_ptr(&value.value_integer)); + return res; case ExactValue_Float: if (type_size_of(type) == 4) { f32 f = cast(f32)value.value_float; - return lbValue{llvm_const_f32(f, type), type}; + res.value = llvm_const_f32(f, type); + return res; } - return lbValue{LLVMConstReal(lb_type(type), value.value_float), type}; + res.value = LLVMConstReal(lb_type(type), value.value_float); + return res; case ExactValue_Complex: { LLVMValueRef values[2] = {}; @@ -571,7 +860,8 @@ lbValue lb_constant_value(Type *type, ExactValue const &value) { break; } - return lbValue{LLVMConstStruct(values, 2, false)}; + res.value = LLVMConstNamedStruct(lb_type(type), values, 2); + return res; } break; case ExactValue_Quaternion: @@ -594,12 +884,14 @@ lbValue lb_constant_value(Type *type, ExactValue const &value) { break; } - return lbValue{LLVMConstStruct(values, 4, false)}; + res.value = LLVMConstNamedStruct(lb_type(type), values, 4); + return res; } break; case ExactValue_Pointer: - return lbValue{LLVMConstBitCast(LLVMConstInt(lb_type(t_uintptr), value.value_pointer, false), lb_type(type)), type}; + res.value = LLVMConstBitCast(LLVMConstInt(lb_type(t_uintptr), value.value_pointer, false), lb_type(type)); + return res; case ExactValue_Compound: GB_PANIC("ExactValue_Compound"); @@ -613,7 +905,7 @@ lbValue lb_constant_value(Type *type, ExactValue const &value) { } GB_PANIC("UNKNOWN ExactValue kind"); - return lbValue{nullptr, type}; + return res; } lbValue lb_add_module_constant(lbModule *m, Type *type, ExactValue const &value) { @@ -623,68 +915,92 @@ lbValue lb_add_module_constant(lbModule *m, Type *type, ExactValue const &value) GB_PANIC("lb_add_module_constant -> slice"); } - return lb_constant_value(type, value); + return lb_constant_value(m, type, value); } lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Type *type) { + lbValue res = {}; + res.type = type; + switch (op) { case Token_Add: if (is_type_float(type)) { - return lbValue{LLVMBuildFAdd(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildFAdd(p->builder, lhs.value, rhs.value, ""); + return res; } - return lbValue{LLVMBuildAdd(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildAdd(p->builder, lhs.value, rhs.value, ""); + return res; case Token_Sub: if (is_type_float(type)) { - return lbValue{LLVMBuildFSub(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildFSub(p->builder, lhs.value, rhs.value, ""); + return res; } - return lbValue{LLVMBuildSub(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildSub(p->builder, lhs.value, rhs.value, ""); + return res; case Token_Mul: if (is_type_float(type)) { - return lbValue{LLVMBuildFMul(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildFMul(p->builder, lhs.value, rhs.value, ""); + return res; } - return lbValue{LLVMBuildMul(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildMul(p->builder, lhs.value, rhs.value, ""); + return res; case Token_Quo: if (is_type_float(type)) { - return lbValue{LLVMBuildFDiv(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildFDiv(p->builder, lhs.value, rhs.value, ""); + return res; } else if (is_type_unsigned(type)) { - return lbValue{LLVMBuildUDiv(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildUDiv(p->builder, lhs.value, rhs.value, ""); + return res; } - return lbValue{LLVMBuildSDiv(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildSDiv(p->builder, lhs.value, rhs.value, ""); + return res; case Token_Mod: if (is_type_float(type)) { - return lbValue{LLVMBuildFRem(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildFRem(p->builder, lhs.value, rhs.value, ""); + return res; } else if (is_type_unsigned(type)) { - return lbValue{LLVMBuildURem(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildURem(p->builder, lhs.value, rhs.value, ""); + return res; } - return lbValue{LLVMBuildSRem(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildSRem(p->builder, lhs.value, rhs.value, ""); + return res; case Token_ModMod: if (is_type_unsigned(type)) { - return lbValue{LLVMBuildURem(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildURem(p->builder, lhs.value, rhs.value, ""); + return res; } else { LLVMValueRef a = LLVMBuildSRem(p->builder, lhs.value, rhs.value, ""); LLVMValueRef b = LLVMBuildAdd(p->builder, a, rhs.value, ""); LLVMValueRef c = LLVMBuildSRem(p->builder, b, rhs.value, ""); - return lbValue{c, type}; + res.value = c; + return res; } case Token_And: - return lbValue{LLVMBuildAnd(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildAnd(p->builder, lhs.value, rhs.value, ""); + return res; case Token_Or: - return lbValue{LLVMBuildOr(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildOr(p->builder, lhs.value, rhs.value, ""); + return res; case Token_Xor: - return lbValue{LLVMBuildXor(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildXor(p->builder, lhs.value, rhs.value, ""); + return res; case Token_Shl: - return lbValue{LLVMBuildShl(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildShl(p->builder, lhs.value, rhs.value, ""); + return res; case Token_Shr: if (is_type_unsigned(type)) { - return lbValue{LLVMBuildLShr(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildLShr(p->builder, lhs.value, rhs.value, ""); + return res; } - return lbValue{LLVMBuildAShr(p->builder, lhs.value, rhs.value, ""), type}; + res.value = LLVMBuildAShr(p->builder, lhs.value, rhs.value, ""); + return res; case Token_AndNot: { LLVMValueRef all_ones = LLVMConstAllOnes(lb_type(type)); LLVMValueRef new_rhs = LLVMBuildXor(p->builder, all_ones, rhs.value, ""); - return lbValue{LLVMBuildAnd(p->builder, lhs.value, new_rhs, ""), type}; + res.value = LLVMBuildAnd(p->builder, lhs.value, new_rhs, ""); + return res; } break; } @@ -809,9 +1125,6 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { void lb_generate_module(lbGenerator *gen) { - gen->module.mod = LLVMModuleCreateWithName("odin_module"); - map_init(&gen->module.values, heap_allocator()); - LLVMModuleRef mod = gen->module.mod; CheckerInfo *info = gen->info; @@ -824,6 +1137,8 @@ void lb_generate_module(lbGenerator *gen) { auto *min_dep_set = &info->minimum_dependency_set; + + for_array(i, info->entities) { // arena_free_all(&temp_arena); // gbAllocator a = temp_allocator; From d56807095a2e9a376bcb583a98aa151ecd77120d Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 2 Feb 2020 18:33:13 +0000 Subject: [PATCH 04/46] Implement constant value generation from ExactValue --- examples/llvm-demo/demo.odin | 49 +- src/ir.cpp | 28 - src/ir_print.cpp | 3 +- src/llvm_backend.cpp | 1109 ++++++++++++++++++++++++++++------ src/types.cpp | 28 + 5 files changed, 977 insertions(+), 240 deletions(-) diff --git a/examples/llvm-demo/demo.odin b/examples/llvm-demo/demo.odin index e3727e610..3b8953134 100644 --- a/examples/llvm-demo/demo.odin +++ b/examples/llvm-demo/demo.odin @@ -2,29 +2,44 @@ package demo import "core:os" +// Foo :: struct { +// x, y: int, +// }; +// foo :: proc(x: int) -> (f: Foo) { +// return; +// } + main :: proc() { - Foo :: struct { - x, y: int, - }; + Foo :: enum {A=1, B, C, D}; + Foo_Set :: bit_set[Foo]; + x := Foo_Set{.A, .C}; - x := i32(1); - y := i32(2); - z := x + y; - w := z - 2; + y := [4]int{3 = 1, 0 .. 1 = 3, 2 = 9}; + z := []int{1, 2, 3, 4}; + + // @thread_local a: int; + + // x := i32(1); + // y := i32(2); + // z := x + y; + // w := z - 2; + + // foo(123); - c := 1 + 2i; - q := 1 + 2i + 3j + 4k; + // c := 1 + 2i; + // q := 1 + 2i + 3j + 4k; - s := "Hellope"; + // s := "Hellope"; - f: Foo; - pc: proc "contextless" (x: i32) -> Foo; - po: proc "odin" (x: i32) -> Foo; - e: enum{A, B, C}; - u: union{i32, bool}; - u1: union{i32}; - um: union #maybe {^int}; + // f := Foo{1, 2}; + // pc: proc "contextless" (x: i32) -> Foo; + // po: proc "odin" (x: i32) -> Foo; + // e: enum{A, B, C}; + // u: union{i32, bool}; + // u1: union{i32}; + // um: union #maybe {^int}; // os.write_string(os.stdout, "Hellope\n"); + return; } diff --git a/src/ir.cpp b/src/ir.cpp index 2f4d491e7..8171d774d 100644 --- a/src/ir.cpp +++ b/src/ir.cpp @@ -5911,34 +5911,6 @@ irValue *ir_type_info(irProcedure *proc, Type *type) { return ir_emit_array_ep(proc, ir_global_type_info_data, ir_const_i32(id)); } -// IMPORTANT NOTE(bill): This must match the same as the in core.odin -enum Typeid_Kind : u8 { - Typeid_Invalid, - Typeid_Integer, - Typeid_Rune, - Typeid_Float, - Typeid_Complex, - Typeid_Quaternion, - Typeid_String, - Typeid_Boolean, - Typeid_Any, - Typeid_Type_Id, - Typeid_Pointer, - Typeid_Procedure, - Typeid_Array, - Typeid_Enumerated_Array, - Typeid_Dynamic_Array, - Typeid_Slice, - Typeid_Tuple, - Typeid_Struct, - Typeid_Union, - Typeid_Enum, - Typeid_Map, - Typeid_Bit_Field, - Typeid_Bit_Set, -}; - - irValue *ir_typeid(irModule *m, Type *type) { type = default_type(type); diff --git a/src/ir_print.cpp b/src/ir_print.cpp index a3f28c59f..ac4d2469a 100644 --- a/src/ir_print.cpp +++ b/src/ir_print.cpp @@ -1014,8 +1014,7 @@ void ir_print_exact_value(irFileBuffer *f, irModule *m, ExactValue value, Type * } else if (is_type_enumerated_array(type)) { ast_node(cl, CompoundLit, value.value_compound); - Type *index_type = type->EnumeratedArray.elem; - Type *elem_type = type->Array.elem; + Type *elem_type = type->EnumeratedArray.elem; isize elem_count = cl->elems.count; if (elem_count == 0) { ir_write_str_lit(f, "zeroinitializer"); diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index fd6d7a983..c818051d0 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1,109 +1,6 @@ -#include "llvm-c/Core.h" -#include "llvm-c/ExecutionEngine.h" -#include "llvm-c/Target.h" -#include "llvm-c/Analysis.h" -#include "llvm-c/Object.h" -#include "llvm-c/BitWriter.h" -#include "llvm-c/Transforms/AggressiveInstCombine.h" -#include "llvm-c/Transforms/InstCombine.h" -#include "llvm-c/Transforms/IPO.h" +#include "llvm_backend.hpp" -struct lbValue { - LLVMValueRef value; - Type *type; -}; - -struct lbModule { - LLVMModuleRef mod; - - Map values; // Key: Entity * -}; - -struct lbGenerator { - lbModule module; - CheckerInfo *info; - - gbFile output_file; - String output_base; - String output_name; -}; - -enum lbAddrKind { - lbAddr_Default, - lbAddr_Map, - lbAddr_BitField, - lbAddr_Context, - lbAddr_SoaVariable, -}; - - - -struct lbAddr { - lbAddrKind kind; - lbValue addr; - union { - struct { - lbValue key; - Type *type; - Type *result; - } map; - struct { - i32 value_index; - } bit_field; - struct { - Selection sel; - } ctx; - struct { - lbValue index; - Ast *index_expr; - } soa; - }; -}; - -struct lbBlock { - LLVMBasicBlockRef block; - Scope *scope; - isize scope_index; -}; - -struct lbProcedure { - lbProcedure *parent; - Array children; - - Entity * entity; - lbModule * module; - String name; - Type * type; - Ast * type_expr; - Ast * body; - u64 tags; - ProcInlining inlining; - bool is_foreign; - bool is_export; - bool is_entry_point; - - - LLVMValueRef value; - LLVMBuilderRef builder; - - lbValue return_ptr; - Array params; - Array blocks; - Scope * curr_scope; - i32 scope_index; - lbBlock * decl_block; - lbBlock * entry_block; - lbBlock * curr_block; -}; - -lbBlock * lb_create_block(lbProcedure *p, char const *name); -LLVMTypeRef lb_type(Type *type); -void lb_build_stmt (lbProcedure *p, Ast *stmt); -lbValue lb_build_expr (lbProcedure *p, Ast *expr); -lbValue lb_constant_nil(Type *type); - - -gb_internal lbModule *global_module = nullptr; +gb_internal gb_thread_local lbModule *global_module = nullptr; gb_internal LLVMValueRef lb_zero32 = nullptr; gb_internal LLVMValueRef lb_one32 = nullptr; @@ -129,6 +26,20 @@ void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue const &value) { LLVMBuildStore(p->builder, value.value, addr.addr.value); } + +lbValue lb_emit_load(lbProcedure *p, lbValue value) { + GB_ASSERT(value.value != nullptr); + Type *t = type_deref(value.type); + LLVMValueRef v = LLVMBuildLoad2(p->builder, lb_type(t), value.value, ""); + return lbValue{v, t}; +} + +lbValue lb_addr_load(lbProcedure *p, lbAddr const &addr) { + GB_ASSERT(addr.addr.value != nullptr); + return lb_emit_load(p, addr.addr); +} + + void lb_clone_struct_type(LLVMTypeRef dst, LLVMTypeRef src) { unsigned field_count = LLVMCountStructElementTypes(src); LLVMTypeRef *fields = gb_alloc_array(heap_allocator(), LLVMTypeRef, field_count); @@ -156,6 +67,60 @@ LLVMTypeRef lb_alignment_prefix_type_hack(i64 alignment) { return nullptr; } +String lb_mangle_name(lbModule *m, Entity *e) { + gbAllocator a = heap_allocator(); + + String name = e->token.string; + + AstPackage *pkg = e->pkg; + GB_ASSERT_MSG(pkg != nullptr, "Missing package for '%.*s'", LIT(name)); + String pkgn = pkg->name; + GB_ASSERT(!rune_is_digit(pkgn[0])); + + + isize max_len = pkgn.len + 1 + name.len + 1; + bool require_suffix_id = is_type_polymorphic(e->type, true); + if (require_suffix_id) { + max_len += 21; + } + + u8 *new_name = gb_alloc_array(a, u8, max_len); + isize new_name_len = gb_snprintf( + cast(char *)new_name, max_len, + "%.*s.%.*s", LIT(pkgn), LIT(name) + ); + if (require_suffix_id) { + char *str = cast(char *)new_name + new_name_len-1; + isize len = max_len-new_name_len; + isize extra = gb_snprintf(str, len, "-%llu", cast(unsigned long long)e->id); + new_name_len += extra-1; + } + + return make_string(new_name, new_name_len-1); +} + +String lb_get_entity_name(lbModule *m, Entity *e, String name) { + if (e != nullptr && e->kind == Entity_TypeName && e->TypeName.ir_mangled_name.len != 0) { + return e->TypeName.ir_mangled_name; + } + + + bool no_name_mangle = false; + + if (!no_name_mangle) { + name = lb_mangle_name(m, e); + } + if (name.len == 0) { + name = e->token.string; + } + + if (e != nullptr && e->kind == Entity_TypeName) { + e->TypeName.ir_mangled_name = name; + + } + return name; +} + LLVMTypeRef lb_type_internal(Type *type) { i64 size = type_size_of(type); // Check size @@ -333,7 +298,7 @@ LLVMTypeRef lb_type_internal(Type *type) { if (base->llvm_type != nullptr) { LLVMTypeKind kind = LLVMGetTypeKind(base->llvm_type); if (kind == LLVMStructTypeKind) { - type->llvm_type = LLVMStructCreateNamed(ctx, alloc_cstring(heap_allocator(), type->Named.name)); + type->llvm_type = LLVMStructCreateNamed(ctx, alloc_cstring(heap_allocator(), lb_get_entity_name(global_module, type->Named.type_name))); lb_clone_struct_type(type->llvm_type, base->llvm_type); } } @@ -342,7 +307,7 @@ LLVMTypeRef lb_type_internal(Type *type) { case Type_Struct: case Type_Union: case Type_BitField: - type->llvm_type = LLVMStructCreateNamed(ctx, alloc_cstring(heap_allocator(), type->Named.name)); + type->llvm_type = LLVMStructCreateNamed(ctx, alloc_cstring(heap_allocator(), lb_get_entity_name(global_module, type->Named.type_name))); lb_clone_struct_type(type->llvm_type, lb_type(base)); return type->llvm_type; } @@ -407,6 +372,7 @@ LLVMTypeRef lb_type_internal(Type *type) { unsigned field_count = cast(unsigned)(type->Struct.fields.count + offset); LLVMTypeRef *fields = gb_alloc_array(heap_allocator(), LLVMTypeRef, field_count); + GB_ASSERT(fields != nullptr); defer (gb_free(heap_allocator(), fields)); for_array(i, type->Struct.fields) { @@ -563,12 +529,43 @@ LLVMTypeRef lb_type(Type *type) { return llvm_type; } +void lb_add_entity(lbModule *m, Entity *e, lbValue val) { + if (e != nullptr) { + map_set(&m->values, hash_entity(e), val); + } +} +void lb_add_member(lbModule *m, String const &name, lbValue val) { + if (name.len > 0) { + map_set(&m->members, hash_string(name), val); + } +} +void lb_add_member(lbModule *m, HashKey const &key, lbValue val) { + map_set(&m->members, key, val); +} + + +LLVMAttributeRef lb_create_enum_attribute(LLVMContextRef ctx, char const *name, u64 value) { + unsigned kind = LLVMGetEnumAttributeKindForName(name, gb_strlen(name)); + return LLVMCreateEnumAttribute(ctx, kind, value); +} + +void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *name, u64 value) { + LLVMContextRef ctx = LLVMGetModuleContext(p->module->mod); + LLVMAddAttributeAtIndex(p->value, cast(unsigned)index, lb_create_enum_attribute(ctx, name, value)); +} + +void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *name) { + lb_add_proc_attribute_at_index(p, index, name, true); +} + + + lbProcedure *lb_create_procedure(lbModule *module, Entity *entity) { lbProcedure *p = gb_alloc_item(heap_allocator(), lbProcedure); p->module = module; p->entity = entity; - p->name = entity->token.string; + p->name = lb_get_entity_name(module, entity); DeclInfo *decl = entity->decl_info; @@ -576,6 +573,8 @@ lbProcedure *lb_create_procedure(lbModule *module, Entity *entity) { Type *pt = base_type(entity->type); GB_ASSERT(pt->kind == Type_Proc); + set_procedure_abi_types(heap_allocator(), entity->type); + p->type = entity->type; p->type_expr = decl->type_expr; p->body = pl->body; @@ -588,30 +587,119 @@ lbProcedure *lb_create_procedure(lbModule *module, Entity *entity) { p->children.allocator = heap_allocator(); p->params.allocator = heap_allocator(); p->blocks.allocator = heap_allocator(); + p->branch_blocks.allocator = heap_allocator(); char *name = alloc_cstring(heap_allocator(), p->name); - LLVMTypeRef ret_type = LLVMFunctionType(LLVMVoidType(), nullptr, 0, false); + LLVMTypeRef func_ptr_type = lb_type(p->type); + LLVMTypeRef func_type = LLVMGetElementType(func_ptr_type); + + p->value = LLVMAddFunction(module->mod, name, func_type); + lb_add_entity(module, entity, lbValue{p->value, p->type}); + lb_add_member(module, p->name, lbValue{p->value, p->type}); + + LLVMContextRef ctx = LLVMGetModuleContext(module->mod); + + // NOTE(bill): offset==0 is the return value + isize offset = 1; + if (pt->Proc.return_by_pointer) { + lb_add_proc_attribute_at_index(p, 1, "sret"); + lb_add_proc_attribute_at_index(p, 1, "noalias"); + offset = 2; + } + + isize parameter_index = 0; + if (pt->Proc.param_count) { + TypeTuple *params = &pt->Proc.params->Tuple; + for (isize i = 0; i < pt->Proc.param_count; i++, parameter_index++) { + Entity *e = params->variables[i]; + Type *original_type = e->type; + Type *abi_type = pt->Proc.abi_compat_params[i]; + if (e->kind != Entity_Variable) continue; + + if (i+1 == params->variables.count && pt->Proc.c_vararg) { + continue; + } + if (is_type_tuple(abi_type)) { + for_array(j, abi_type->Tuple.variables) { + Type *tft = abi_type->Tuple.variables[j]->type; + if (e->flags&EntityFlag_NoAlias) { + lb_add_proc_attribute_at_index(p, offset+parameter_index+j, "noalias"); + } + } + parameter_index += abi_type->Tuple.variables.count-1; + } else { + if (e->flags&EntityFlag_NoAlias) { + lb_add_proc_attribute_at_index(p, offset+parameter_index, "noalias"); + } + } + } + } + + if (pt->Proc.calling_convention == ProcCC_Odin) { + lb_add_proc_attribute_at_index(p, offset+parameter_index, "noalias"); + lb_add_proc_attribute_at_index(p, offset+parameter_index, "nonnull"); + lb_add_proc_attribute_at_index(p, offset+parameter_index, "nocapture"); + + } + + + return p; +} + +void lb_begin_procedure_body(lbProcedure *p) { + DeclInfo *decl = decl_info_of_entity(p->entity); + if (decl != nullptr) { + for_array(i, decl->labels) { + BlockLabel bl = decl->labels[i]; + lbBranchBlocks bb = {bl.label, nullptr, nullptr}; + array_add(&p->branch_blocks, bb); + } + } - p->value = LLVMAddFunction(module->mod, name, ret_type); p->builder = LLVMCreateBuilder(); p->decl_block = lb_create_block(p, "decls"); p->entry_block = lb_create_block(p, "entry"); p->curr_block = p->entry_block; - set_procedure_abi_types(heap_allocator(), p->type); - LLVMPositionBuilderAtEnd(p->builder, p->curr_block->block); - return p; + GB_ASSERT(p->type != nullptr); + + if (p->type->Proc.return_by_pointer) { + // NOTE(bill): this must be parameter 0 + Type *ptr_type = alloc_type_pointer(reduce_tuple_to_single_type(p->type->Proc.results)); + Entity *e = alloc_entity_param(nullptr, make_token_ident(str_lit("agg.result")), ptr_type, false, false); + e->flags |= EntityFlag_Sret | EntityFlag_NoAlias; + + lbValue return_ptr_value = {}; + return_ptr_value.value = LLVMGetParam(p->value, 0); + return_ptr_value.type = alloc_type_pointer(p->type->Proc.abi_compat_result_type); + p->return_ptr = lb_addr(return_ptr_value); + + lb_add_entity(p->module, e, return_ptr_value); + } + + } -void lb_end_procedure(lbProcedure *p) { +void lb_end_procedure_body(lbProcedure *p) { LLVMPositionBuilderAtEnd(p->builder, p->decl_block->block); LLVMBuildBr(p->builder, p->entry_block->block); LLVMPositionBuilderAtEnd(p->builder, p->curr_block->block); + if (p->type->Proc.result_count == 0) { + LLVMValueRef instr = LLVMGetLastInstruction(p->curr_block->block); + if (!LLVMIsAReturnInst(instr)) { + LLVMBuildRetVoid(p->builder); + } + } + + p->curr_block = nullptr; + +} +void lb_end_procedure(lbProcedure *p) { LLVMDisposeBuilder(p->builder); } @@ -638,9 +726,7 @@ lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr) { val.value = ptr; val.type = alloc_type_pointer(type); - if (e != nullptr) { - map_set(&p->module->values, hash_entity(e), val); - } + lb_add_entity(p->module, e, val); return lb_addr(val); } @@ -686,9 +772,13 @@ bool lb_init_generator(lbGenerator *gen, Checker *c) { } gen->info = &c->info; + gen->module.info = &c->info; gen->module.mod = LLVMModuleCreateWithName("odin_module"); map_init(&gen->module.values, heap_allocator()); + map_init(&gen->module.members, heap_allocator()); + map_init(&gen->module.const_strings, heap_allocator()); + map_init(&gen->module.const_string_byte_slices, heap_allocator()); global_module = &gen->module; @@ -726,6 +816,26 @@ lbValue lb_build_gep(lbProcedure *p, lbValue const &value, i32 index) { return lbValue{LLVMBuildStructGEP2(p->builder, lb_type(elem_type), value.value, index, ""), elem_type}; } +void lb_build_when_stmt(lbProcedure *p, AstWhenStmt *ws) { + TypeAndValue tv = type_and_value_of_expr(ws->cond); + GB_ASSERT(is_type_boolean(tv.type)); + GB_ASSERT(tv.value.kind == ExactValue_Bool); + if (tv.value.value_bool) { + lb_build_stmt_list(p, ws->body->BlockStmt.stmts); + } else if (ws->else_stmt) { + switch (ws->else_stmt->kind) { + case Ast_BlockStmt: + lb_build_stmt_list(p, ws->else_stmt->BlockStmt.stmts); + break; + case Ast_WhenStmt: + lb_build_when_stmt(p, &ws->else_stmt->WhenStmt); + break; + default: + GB_PANIC("Invalid 'else' statement in 'when' statement"); + break; + } + } +} void lb_build_stmt(lbProcedure *p, Ast *node) { switch (node->kind) { @@ -735,6 +845,11 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { case_ast_node(us, UsingStmt, node); case_end; + case_ast_node(ws, WhenStmt, node); + lb_build_when_stmt(p, ws); + case_end; + + case_ast_node(bs, BlockStmt, node); lb_build_stmt_list(p, bs->stmts); case_end; @@ -753,7 +868,69 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { } } - GB_ASSERT_MSG(!is_static, "handle static variables"); + if (is_static) { + for_array(i, vd->names) { + lbValue value = {}; + if (vd->values.count > 0) { + GB_ASSERT(vd->names.count == vd->values.count); + Ast *ast_value = vd->values[i]; + GB_ASSERT(ast_value->tav.mode == Addressing_Constant || + ast_value->tav.mode == Addressing_Invalid); + + value = lb_const_value(p->module, ast_value->tav.type, ast_value->tav.value); + } + + Ast *ident = vd->names[i]; + GB_ASSERT(!is_blank_ident(ident)); + Entity *e = entity_of_ident(ident); + GB_ASSERT(e->flags & EntityFlag_Static); + String name = e->token.string; + + String mangled_name = {}; + { + gbString str = gb_string_make_length(heap_allocator(), p->name.text, p->name.len); + str = gb_string_appendc(str, "-"); + str = gb_string_append_fmt(str, ".%.*s-%llu", LIT(name), cast(long long)e->id); + mangled_name.text = cast(u8 *)str; + mangled_name.len = gb_string_length(str); + } + + char *c_name = alloc_cstring(heap_allocator(), mangled_name); + + LLVMValueRef global = LLVMAddGlobal(p->module->mod, lb_type(e->type), c_name); + if (value.value != nullptr) { + LLVMSetInitializer(global, value.value); + } + if (e->Variable.thread_local_model != "") { + LLVMSetThreadLocal(global, true); + + String m = e->Variable.thread_local_model; + LLVMThreadLocalMode mode = LLVMGeneralDynamicTLSModel; + if (m == "default") { + mode = LLVMGeneralDynamicTLSModel; + } else if (m == "localdynamic") { + mode = LLVMLocalDynamicTLSModel; + } else if (m == "initialexec") { + mode = LLVMInitialExecTLSModel; + } else if (m == "localexec") { + mode = LLVMLocalExecTLSModel; + } else { + GB_PANIC("Unhandled thread local mode %.*s", LIT(m)); + } + LLVMSetThreadLocalMode(global, mode); + } else { + LLVMSetLinkage(global, LLVMInternalLinkage); + } + + + lbValue global_val = {global, alloc_type_pointer(e->type)}; + lb_add_entity(p->module, e, global_val); + lb_add_member(p->module, mangled_name, global_val); + } + return; + } + + auto addrs = array_make(heap_allocator(), vd->names.count); @@ -765,9 +942,10 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { Ast *name = vd->names[i]; if (!is_blank_ident(name)) { Entity *e = entity_of_ident(name); - addrs[i] = lb_add_local(p, e->type, e); + lbAddr local = lb_add_local(p, e->type, e); + addrs[i] = local; if (vd->values.count == 0) { - lb_addr_store(p, addrs[i], lb_constant_nil(lb_addr_type(addrs[i]))); + lb_addr_store(p, addrs[i], lb_const_nil(lb_addr_type(addrs[i]))); } } } @@ -785,12 +963,80 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { for_array(i, values) { lb_addr_store(p, addrs[i], values[i]); } + case_end; + case_ast_node(as, AssignStmt, node); + case_end; + + case_ast_node(es, ExprStmt, node); + lb_build_expr(p, es->expr); + case_end; + + case_ast_node(ds, DeferStmt, node); + case_end; + + case_ast_node(rs, ReturnStmt, node); + lbValue res = {}; + + TypeTuple *tuple = &p->type->Proc.results->Tuple; + isize return_count = p->type->Proc.result_count; + isize res_count = rs->results.count; + + if (return_count == 0) { + // No return values + LLVMBuildRetVoid(p->builder); + return; + } else if (return_count == 1) { + Entity *e = tuple->variables[0]; + if (res_count == 0) { + // lbValue *found = map_get(&p->module->values, hash_entity(e)); + // GB_ASSERT(found); + // res = lb_emit_load(p, *found); + } else { + res = lb_build_expr(p, rs->results[0]); + // res = ir_emit_conv(p, v, e->type); + } + } else { + + } + + if (p->type->Proc.return_by_pointer) { + if (res.value != nullptr) { + lb_addr_store(p, p->return_ptr, res); + } else { + lb_addr_store(p, p->return_ptr, lb_const_nil(p->type->Proc.abi_compat_result_type)); + } + LLVMBuildRetVoid(p->builder); + } else { + GB_ASSERT_MSG(res.value != nullptr, "%.*s", LIT(p->name)); + LLVMBuildRet(p->builder, res.value); + } + case_end; + + case_ast_node(is, IfStmt, node); + case_end; + + case_ast_node(fs, ForStmt, node); + case_end; + + case_ast_node(rs, RangeStmt, node); + case_end; + + case_ast_node(rs, InlineRangeStmt, node); + case_end; + + case_ast_node(ss, SwitchStmt, node); + case_end; + + case_ast_node(ss, TypeSwitchStmt, node); + case_end; + + case_ast_node(bs, BranchStmt, node); case_end; } } -lbValue lb_constant_nil(Type *type) { +lbValue lb_const_nil(Type *type) { LLVMValueRef v = LLVMConstNull(lb_type(type)); return lbValue{v, type}; } @@ -801,19 +1047,212 @@ LLVMValueRef llvm_const_f32(f32 f, Type *type=t_f32) { return LLVMConstBitCast(i, lb_type(type)); } -lbValue lb_constant_value(lbModule *m, Type *type, ExactValue const &value) { + +lbValue lb_find_or_add_entity_string(lbModule *m, String const &str) { + HashKey key = hash_string(str); + lbValue *found = map_get(&m->const_strings, key); + if (found != nullptr) { + return *found; + } + lbValue v = lb_const_value(m, t_string, exact_value_string(str)); + map_set(&m->const_strings, key, v); + return v; +} + +lbValue lb_find_or_add_entity_string_byte_slice(lbModule *m, String const &str) { + HashKey key = hash_string(str); + lbValue *found = map_get(&m->const_string_byte_slices, key); + if (found != nullptr) { + return *found; + } + Type *t = t_u8_slice; + lbValue v = lb_const_value(m, t, exact_value_string(str)); + map_set(&m->const_string_byte_slices, key, v); + return v; +} + +isize lb_type_info_index(CheckerInfo *info, Type *type, bool err_on_not_found=true) { + isize index = type_info_index(info, type, false); + if (index >= 0) { + auto *set = &info->minimum_dependency_type_info_set; + for_array(i, set->entries) { + if (set->entries[i].ptr == index) { + return i+1; + } + } + } + if (err_on_not_found) { + GB_PANIC("NOT FOUND ir_type_info_index %s @ index %td", type_to_string(type), index); + } + return -1; +} + +lbValue lb_typeid(lbModule *m, Type *type, Type *typeid_type=t_typeid) { + type = default_type(type); + + u64 id = cast(u64)lb_type_info_index(m->info, type); + GB_ASSERT(id >= 0); + + u64 kind = Typeid_Invalid; + u64 named = is_type_named(type) && type->kind != Type_Basic; + u64 special = 0; + u64 reserved = 0; + + Type *bt = base_type(type); + TypeKind tk = bt->kind; + switch (tk) { + case Type_Basic: { + u32 flags = bt->Basic.flags; + if (flags & BasicFlag_Boolean) kind = Typeid_Boolean; + if (flags & BasicFlag_Integer) kind = Typeid_Integer; + if (flags & BasicFlag_Unsigned) kind = Typeid_Integer; + if (flags & BasicFlag_Float) kind = Typeid_Float; + if (flags & BasicFlag_Complex) kind = Typeid_Complex; + if (flags & BasicFlag_Pointer) kind = Typeid_Pointer; + if (flags & BasicFlag_String) kind = Typeid_String; + if (flags & BasicFlag_Rune) kind = Typeid_Rune; + } break; + case Type_Pointer: kind = Typeid_Pointer; break; + case Type_Array: kind = Typeid_Array; break; + case Type_EnumeratedArray: kind = Typeid_Enumerated_Array; break; + case Type_Slice: kind = Typeid_Slice; break; + case Type_DynamicArray: kind = Typeid_Dynamic_Array; break; + case Type_Map: kind = Typeid_Map; break; + case Type_Struct: kind = Typeid_Struct; break; + case Type_Enum: kind = Typeid_Enum; break; + case Type_Union: kind = Typeid_Union; break; + case Type_Tuple: kind = Typeid_Tuple; break; + case Type_Proc: kind = Typeid_Procedure; break; + case Type_BitField: kind = Typeid_Bit_Field; break; + case Type_BitSet: kind = Typeid_Bit_Set; break; + } + + if (is_type_cstring(type)) { + special = 1; + } else if (is_type_integer(type) && !is_type_unsigned(type)) { + special = 1; + } + + u64 data = 0; + if (build_context.word_size == 4) { + data |= (id &~ (1u<<24)) << 0u; // index + data |= (kind &~ (1u<<5)) << 24u; // kind + data |= (named &~ (1u<<1)) << 29u; // kind + data |= (special &~ (1u<<1)) << 30u; // kind + data |= (reserved &~ (1u<<1)) << 31u; // kind + } else { + GB_ASSERT(build_context.word_size == 8); + data |= (id &~ (1ull<<56)) << 0ul; // index + data |= (kind &~ (1ull<<5)) << 56ull; // kind + data |= (named &~ (1ull<<1)) << 61ull; // kind + data |= (special &~ (1ull<<1)) << 62ull; // kind + data |= (reserved &~ (1ull<<1)) << 63ull; // kind + } + + + lbValue res = {}; + res.value = LLVMConstInt(lb_type(typeid_type), data, false); + res.type = typeid_type; + return res; +} + +lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { + Type *original_type = type; + lbValue res = {}; res.type = type; + type = core_type(type); + value = convert_exact_value_for_type(value, type); + + if (is_type_slice(type)) { + if (value.kind == ExactValue_String) { + GB_ASSERT(is_type_u8_slice(type)); + res.value = lb_find_or_add_entity_string_byte_slice(m, value.value_string).value; + return res; + } else { + ast_node(cl, CompoundLit, value.value_compound); + + isize count = cl->elems.count; + if (count == 0) { + return lb_const_nil(type); + } + count = gb_max(cl->max_count, count); + Type *elem = base_type(type)->Slice.elem; + Type *t = alloc_type_array(elem, count); + lbValue backing_array = lb_const_value(m, t, value); + + + isize max_len = 7+8+1; + u8 *str = cast(u8 *)gb_alloc_array(heap_allocator(), u8, max_len); + isize len = gb_snprintf(cast(char *)str, max_len, "csba$%x", m->global_array_index); + m->global_array_index++; + + String name = make_string(str, len-1); + + Entity *e = alloc_entity_constant(nullptr, make_token_ident(name), t, value); + LLVMValueRef global_data = LLVMAddGlobal(m->mod, lb_type(t), cast(char const *)str); + LLVMSetInitializer(global_data, backing_array.value); + + lbValue g = {}; + g.value = global_data; + g.type = t; + + lb_add_entity(m, e, g); + lb_add_member(m, name, g); + + { + LLVMValueRef indices[2] = {lb_zero32, lb_zero32}; + LLVMValueRef ptr = LLVMConstInBoundsGEP(global_data, indices, 2); + LLVMValueRef len = LLVMConstInt(lb_type(t_int), count, true); + LLVMValueRef values[2] = {ptr, len}; + + res.value = LLVMConstNamedStruct(lb_type(original_type), values, 2); + return res; + } + + } + } else if (is_type_array(type) && value.kind == ExactValue_String && !is_type_u8(core_array_type(type))) { + LLVMValueRef data = LLVMConstString(cast(char const *)value.value_string.text, + cast(unsigned)value.value_string.len, + false); + res.value = data; + return res; + } else if (is_type_array(type) && + value.kind != ExactValue_Invalid && + value.kind != ExactValue_String && + value.kind != ExactValue_Compound) { + + i64 count = type->Array.count; + Type *elem = type->Array.elem; + + + lbValue single_elem = lb_const_value(m, elem, value); + + LLVMValueRef *elems = gb_alloc_array(heap_allocator(), LLVMValueRef, count); + for (i64 i = 0; i < count; i++) { + elems[i] = single_elem.value; + } + + res.value = LLVMConstArray(lb_type(elem), elems, cast(unsigned)count); + return res; + } switch (value.kind) { case ExactValue_Invalid: - res.value = LLVMConstNull(lb_type(type)); + res.value = LLVMConstNull(lb_type(original_type)); return res; case ExactValue_Bool: - res.value = LLVMConstInt(lb_type(type), value.value_bool, false); + res.value = LLVMConstInt(lb_type(original_type), value.value_bool, false); return res; case ExactValue_String: { + HashKey key = hash_string(value.value_string); + lbValue *found = map_get(&m->const_strings, key); + if (found != nullptr) { + res.value = found->value; + return res; + } + LLVMValueRef indices[2] = {lb_zero32, lb_zero32}; LLVMValueRef data = LLVMConstString(cast(char const *)value.value_string.text, cast(unsigned)value.value_string.len, @@ -831,12 +1270,20 @@ lbValue lb_constant_value(lbModule *m, Type *type, ExactValue const &value) { LLVMValueRef len = LLVMConstInt(lb_type(t_int), value.value_string.len, true); LLVMValueRef values[2] = {ptr, len}; - res.value = LLVMConstNamedStruct(lb_type(type), values, 2); + res.value = LLVMConstNamedStruct(lb_type(original_type), values, 2); + + map_set(&m->const_strings, key, res); + return res; } case ExactValue_Integer: - res.value = LLVMConstIntOfArbitraryPrecision(lb_type(type), cast(unsigned)value.value_integer.len, big_int_ptr(&value.value_integer)); + if (is_type_pointer(type)) { + LLVMValueRef i = LLVMConstIntOfArbitraryPrecision(lb_type(t_uintptr), cast(unsigned)value.value_integer.len, big_int_ptr(&value.value_integer)); + res.value = LLVMConstBitCast(i, lb_type(original_type)); + } else { + res.value = LLVMConstIntOfArbitraryPrecision(lb_type(original_type), cast(unsigned)value.value_integer.len, big_int_ptr(&value.value_integer)); + } return res; case ExactValue_Float: if (type_size_of(type) == 4) { @@ -844,7 +1291,7 @@ lbValue lb_constant_value(lbModule *m, Type *type, ExactValue const &value) { res.value = llvm_const_f32(f, type); return res; } - res.value = LLVMConstReal(lb_type(type), value.value_float); + res.value = LLVMConstReal(lb_type(original_type), value.value_float); return res; case ExactValue_Complex: { @@ -860,7 +1307,7 @@ lbValue lb_constant_value(lbModule *m, Type *type, ExactValue const &value) { break; } - res.value = LLVMConstNamedStruct(lb_type(type), values, 2); + res.value = LLVMConstNamedStruct(lb_type(original_type), values, 2); return res; } break; @@ -884,38 +1331,335 @@ lbValue lb_constant_value(lbModule *m, Type *type, ExactValue const &value) { break; } - res.value = LLVMConstNamedStruct(lb_type(type), values, 4); + res.value = LLVMConstNamedStruct(lb_type(original_type), values, 4); return res; } break; case ExactValue_Pointer: - res.value = LLVMConstBitCast(LLVMConstInt(lb_type(t_uintptr), value.value_pointer, false), lb_type(type)); + res.value = LLVMConstBitCast(LLVMConstInt(lb_type(t_uintptr), value.value_pointer, false), lb_type(original_type)); return res; case ExactValue_Compound: - GB_PANIC("ExactValue_Compound"); + if (is_type_slice(type)) { + return lb_const_value(m, type, value); + } else if (is_type_array(type)) { + ast_node(cl, CompoundLit, value.value_compound); + Type *elem_type = type->Array.elem; + isize elem_count = cl->elems.count; + if (elem_count == 0) { + return lb_const_nil(original_type); + } + if (cl->elems[0]->kind == Ast_FieldValue) { + // TODO(bill): This is O(N*M) and will be quite slow; it should probably be sorted before hand + + LLVMValueRef *values = gb_alloc_array(heap_allocator(), LLVMValueRef, type->Array.count); + defer (gb_free(heap_allocator(), values)); + + isize value_index = 0; + for (i64 i = 0; i < type->Array.count; i++) { + bool found = false; + + for (isize j = 0; j < elem_count; j++) { + Ast *elem = cl->elems[j]; + ast_node(fv, FieldValue, elem); + if (is_ast_range(fv->field)) { + ast_node(ie, BinaryExpr, fv->field); + TypeAndValue lo_tav = ie->left->tav; + TypeAndValue hi_tav = ie->right->tav; + GB_ASSERT(lo_tav.mode == Addressing_Constant); + GB_ASSERT(hi_tav.mode == Addressing_Constant); + + TokenKind op = ie->op.kind; + i64 lo = exact_value_to_i64(lo_tav.value); + i64 hi = exact_value_to_i64(hi_tav.value); + if (op == Token_Ellipsis) { + hi += 1; + } + if (lo == i) { + TypeAndValue tav = fv->value->tav; + if (tav.mode != Addressing_Constant) { + break; + } + LLVMValueRef val = lb_const_value(m, elem_type, tav.value).value; + for (i64 k = lo; k < hi; k++) { + values[value_index++] = val; + } + + found = true; + i += (hi-lo-1); + break; + } + } else { + TypeAndValue index_tav = fv->field->tav; + GB_ASSERT(index_tav.mode == Addressing_Constant); + i64 index = exact_value_to_i64(index_tav.value); + if (index == i) { + TypeAndValue tav = fv->value->tav; + if (tav.mode != Addressing_Constant) { + break; + } + LLVMValueRef val = lb_const_value(m, elem_type, tav.value).value; + values[value_index++] = val; + found = true; + break; + } + } + } + + if (!found) { + values[value_index++] = LLVMConstNull(lb_type(elem_type)); + } + } + + res.value = LLVMConstArray(lb_type(elem_type), values, cast(unsigned int)type->Array.count); + return res; + } else { + GB_ASSERT_MSG(elem_count == type->Array.count, "%td != %td", elem_count, type->Array.count); + + LLVMValueRef *values = gb_alloc_array(heap_allocator(), LLVMValueRef, type->Array.count); + defer (gb_free(heap_allocator(), values)); + + for (isize i = 0; i < elem_count; i++) { + TypeAndValue tav = cl->elems[i]->tav; + GB_ASSERT(tav.mode != Addressing_Invalid); + values[i] = lb_const_value(m, elem_type, tav.value).value; + } + for (isize i = elem_count; i < type->Array.count; i++) { + values[i] = LLVMConstNull(lb_type(elem_type)); + } + + res.value = LLVMConstArray(lb_type(elem_type), values, cast(unsigned int)type->Array.count); + return res; + } + } else if (is_type_enumerated_array(type)) { + ast_node(cl, CompoundLit, value.value_compound); + Type *elem_type = type->EnumeratedArray.elem; + isize elem_count = cl->elems.count; + if (elem_count == 0) { + return lb_const_nil(original_type); + } + if (cl->elems[0]->kind == Ast_FieldValue) { + // TODO(bill): This is O(N*M) and will be quite slow; it should probably be sorted before hand + + LLVMValueRef *values = gb_alloc_array(heap_allocator(), LLVMValueRef, type->EnumeratedArray.count); + defer (gb_free(heap_allocator(), values)); + + isize value_index = 0; + + i64 total_lo = exact_value_to_i64(type->EnumeratedArray.min_value); + i64 total_hi = exact_value_to_i64(type->EnumeratedArray.max_value); + + for (i64 i = total_lo; i <= total_hi; i++) { + bool found = false; + + for (isize j = 0; j < elem_count; j++) { + Ast *elem = cl->elems[j]; + ast_node(fv, FieldValue, elem); + if (is_ast_range(fv->field)) { + ast_node(ie, BinaryExpr, fv->field); + TypeAndValue lo_tav = ie->left->tav; + TypeAndValue hi_tav = ie->right->tav; + GB_ASSERT(lo_tav.mode == Addressing_Constant); + GB_ASSERT(hi_tav.mode == Addressing_Constant); + + TokenKind op = ie->op.kind; + i64 lo = exact_value_to_i64(lo_tav.value); + i64 hi = exact_value_to_i64(hi_tav.value); + if (op == Token_Ellipsis) { + hi += 1; + } + if (lo == i) { + TypeAndValue tav = fv->value->tav; + if (tav.mode != Addressing_Constant) { + break; + } + LLVMValueRef val = lb_const_value(m, elem_type, tav.value).value; + for (i64 k = lo; k < hi; k++) { + values[value_index++] = val; + } + + found = true; + i += (hi-lo-1); + break; + } + } else { + TypeAndValue index_tav = fv->field->tav; + GB_ASSERT(index_tav.mode == Addressing_Constant); + i64 index = exact_value_to_i64(index_tav.value); + if (index == i) { + TypeAndValue tav = fv->value->tav; + if (tav.mode != Addressing_Constant) { + break; + } + LLVMValueRef val = lb_const_value(m, elem_type, tav.value).value; + values[value_index++] = val; + found = true; + break; + } + } + } + + if (!found) { + values[value_index++] = LLVMConstNull(lb_type(elem_type)); + } + } + + res.value = LLVMConstArray(lb_type(elem_type), values, cast(unsigned int)type->EnumeratedArray.count); + return res; + } else { + GB_ASSERT_MSG(elem_count == type->EnumeratedArray.count, "%td != %td", elem_count, type->EnumeratedArray.count); + + LLVMValueRef *values = gb_alloc_array(heap_allocator(), LLVMValueRef, type->EnumeratedArray.count); + defer (gb_free(heap_allocator(), values)); + + for (isize i = 0; i < elem_count; i++) { + TypeAndValue tav = cl->elems[i]->tav; + GB_ASSERT(tav.mode != Addressing_Invalid); + values[i] = lb_const_value(m, elem_type, tav.value).value; + } + for (isize i = elem_count; i < type->EnumeratedArray.count; i++) { + values[i] = LLVMConstNull(lb_type(elem_type)); + } + + res.value = LLVMConstArray(lb_type(elem_type), values, cast(unsigned int)type->EnumeratedArray.count); + return res; + } + } else if (is_type_simd_vector(type)) { + ast_node(cl, CompoundLit, value.value_compound); + + Type *elem_type = type->SimdVector.elem; + isize elem_count = cl->elems.count; + if (elem_count == 0) { + return lb_const_nil(original_type); + } + + isize total_elem_count = type->SimdVector.count; + LLVMValueRef *values = gb_alloc_array(heap_allocator(), LLVMValueRef, total_elem_count); + defer (gb_free(heap_allocator(), values)); + + for (isize i = 0; i < elem_count; i++) { + TypeAndValue tav = cl->elems[i]->tav; + GB_ASSERT(tav.mode != Addressing_Invalid); + values[i] = lb_const_value(m, elem_type, tav.value).value; + } + for (isize i = elem_count; i < type->SimdVector.count; i++) { + values[i] = LLVMConstNull(lb_type(elem_type)); + } + + res.value = LLVMConstVector(values, cast(unsigned)total_elem_count); + return res; + } else if (is_type_struct(type)) { + ast_node(cl, CompoundLit, value.value_compound); + + if (cl->elems.count == 0) { + return lb_const_nil(type); + } + + isize offset = 0; + if (type->Struct.custom_align > 0) { + offset = 1; + } + + isize value_count = type->Struct.fields.count + offset; + LLVMValueRef *values = gb_alloc_array(heap_allocator(), LLVMValueRef, value_count); + bool *visited = gb_alloc_array(heap_allocator(), bool, value_count); + defer (gb_free(heap_allocator(), values)); + defer (gb_free(heap_allocator(), visited)); + + + + if (cl->elems.count > 0) { + if (cl->elems[0]->kind == Ast_FieldValue) { + isize elem_count = cl->elems.count; + for (isize i = 0; i < elem_count; i++) { + ast_node(fv, FieldValue, cl->elems[i]); + String name = fv->field->Ident.token.string; + + TypeAndValue tav = fv->value->tav; + GB_ASSERT(tav.mode != Addressing_Invalid); + + Selection sel = lookup_field(type, name, false); + Entity *f = type->Struct.fields[sel.index[0]]; + + values[offset+f->Variable.field_index] = lb_const_value(m, f->type, tav.value).value; + visited[offset+f->Variable.field_index] = true; + } + } else { + for_array(i, cl->elems) { + Entity *f = type->Struct.fields[i]; + TypeAndValue tav = cl->elems[i]->tav; + ExactValue val = {}; + if (tav.mode != Addressing_Invalid) { + val = tav.value; + } + values[offset+f->Variable.field_index] = lb_const_value(m, f->type, val).value; + visited[offset+f->Variable.field_index] = true; + } + } + } + + for (isize i = 0; i < type->Struct.fields.count; i++) { + if (!visited[offset+i]) { + GB_ASSERT(values[offset+i] == nullptr); + values[offset+i] = lb_const_nil(type->Struct.fields[i]->type).value; + } + } + + if (type->Struct.custom_align > 0) { + values[0] = LLVMConstNull(lb_alignment_prefix_type_hack(type->Struct.custom_align)); + } + + res.value = LLVMConstNamedStruct(lb_type(original_type), values, cast(unsigned)value_count); + return res; + } else if (is_type_bit_set(type)) { + ast_node(cl, CompoundLit, value.value_compound); + if (cl->elems.count == 0) { + return lb_const_nil(original_type); + } + + i64 sz = type_size_of(type); + if (sz == 0) { + return lb_const_nil(original_type); + } + + u64 bits = 0; + for_array(i, cl->elems) { + Ast *e = cl->elems[i]; + GB_ASSERT(e->kind != Ast_FieldValue); + + TypeAndValue tav = e->tav; + if (tav.mode != Addressing_Constant) { + continue; + } + GB_ASSERT(tav.value.kind == ExactValue_Integer); + i64 v = big_int_to_i64(&tav.value.value_integer); + i64 lower = type->BitSet.lower; + bits |= 1ull< slice"); - } - - return lb_constant_value(m, type, value); + return lb_const_nil(original_type); } lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Type *type) { @@ -1048,21 +1792,8 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { GB_ASSERT(tv.mode != Addressing_Type); if (tv.value.kind != ExactValue_Invalid) { - // // NOTE(bill): Edge case - // if (tv.value.kind != ExactValue_Compound && - // is_type_array(tv.type)) { - // Type *elem = core_array_type(tv.type); - // ExactValue value = convert_exact_value_for_type(tv.value, elem); - // irValue *x = ir_add_module_constant(proc->module, elem, value); - // return ir_emit_conv(proc, x, tv.type); - // } - - // if (tv.value.kind == ExactValue_Typeid) { - // irValue *v = ir_typeid(proc->module, tv.value.value_typeid); - // return ir_emit_conv(proc, v, tv.type); - // } - - return lb_add_module_constant(p->module, tv.type, tv.value); + // NOTE(bill): Short on constant values + return lb_const_value(p->module, tv.type, tv.value); } @@ -1077,9 +1808,10 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { GB_PANIC("Non-constant basic literal %.*s(%td:%td) - %.*s", LIT(pos.file), pos.line, pos.column, LIT(bd->name)); case_end; - // case_ast_node(i, Implicit, expr); - // return ir_addr_load(proc, ir_build_addr(proc, expr)); - // case_end; + case_ast_node(i, Implicit, expr); + // return ir_addr_load(proc, ir_build_addr(proc, expr)); + GB_PANIC("TODO(bill): Implicit"); + case_end; case_ast_node(u, Undef, expr); return lbValue{LLVMGetUndef(lb_type(tv.type)), tv.type}; @@ -1095,7 +1827,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { LIT(token.pos.file), token.pos.line, token.pos.column); return {}; } else if (e->kind == Entity_Nil) { - return lb_constant_nil(tv.type); + return lb_const_nil(tv.type); } auto *found = map_get(&p->module->values, hash_entity(e)); @@ -1105,7 +1837,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { if (kind == LLVMFunctionTypeKind) { return v; } - return lbValue{LLVMBuildLoad2(p->builder, lb_type(type_deref(v.type)), v.value, ""), e->type}; + return lb_emit_load(p, v); // } else if (e != nullptr && e->kind == Entity_Variable) { // return ir_addr_load(proc, ir_build_addr(proc, expr)); } @@ -1125,6 +1857,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { void lb_generate_module(lbGenerator *gen) { + lbModule *m = &gen->module; LLVMModuleRef mod = gen->module.mod; CheckerInfo *info = gen->info; @@ -1136,9 +1869,6 @@ void lb_generate_module(lbGenerator *gen) { auto *min_dep_set = &info->minimum_dependency_set; - - - for_array(i, info->entities) { // arena_free_all(&temp_arena); // gbAllocator a = temp_allocator; @@ -1180,40 +1910,33 @@ void lb_generate_module(lbGenerator *gen) { continue; } + String mangled_name = lb_get_entity_name(m, e); - if (entry_point == e) { - lbProcedure *p = lb_create_procedure(&gen->module, e); + if (e->pkg->name != "demo") { + continue; + } + + switch (e->kind) { + case Entity_TypeName: + break; + case Entity_Procedure: + break; + } + + + if (e->kind == Entity_Procedure) { + lbProcedure *p = lb_create_procedure(m, e); if (p->body != nullptr) { // Build Procedure - + lb_begin_procedure_body(p); lb_build_stmt(p, p->body); - - LLVMBuildRet(p->builder, nullptr); - // LLVMBuildRetVoid(p->builder); + lb_end_procedure_body(p); } lb_end_procedure(p); } } - { - LLVMTypeRef ret_type = LLVMFunctionType(LLVMVoidType(), nullptr, 0, false); - - LLVMValueRef p = LLVMAddFunction(mod, "mainCRTStartup", ret_type); - - - LLVMBasicBlockRef entry = LLVMAppendBasicBlock(p, "entry"); - - LLVMBuilderRef b = LLVMCreateBuilder(); - defer (LLVMDisposeBuilder(b)); - - LLVMPositionBuilderAtEnd(b, entry); - - - LLVMBuildRetVoid(b); - // LLVMBuildRet(b, nullptr); - } - char *llvm_error = nullptr; defer (LLVMDisposeMessage(llvm_error)); diff --git a/src/types.cpp b/src/types.cpp index 822583fee..a6f1e2ae5 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -305,6 +305,34 @@ struct Type { bool failure; }; +// IMPORTANT NOTE(bill): This must match the same as the in core.odin +enum Typeid_Kind : u8 { + Typeid_Invalid, + Typeid_Integer, + Typeid_Rune, + Typeid_Float, + Typeid_Complex, + Typeid_Quaternion, + Typeid_String, + Typeid_Boolean, + Typeid_Any, + Typeid_Type_Id, + Typeid_Pointer, + Typeid_Procedure, + Typeid_Array, + Typeid_Enumerated_Array, + Typeid_Dynamic_Array, + Typeid_Slice, + Typeid_Tuple, + Typeid_Struct, + Typeid_Union, + Typeid_Enum, + Typeid_Map, + Typeid_Bit_Field, + Typeid_Bit_Set, +}; + + // TODO(bill): Should I add extra information here specifying the kind of selection? From 0103cedad7b18d2f8ac2337fd4221e874eb2e1ca Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 2 Feb 2020 23:36:15 +0000 Subject: [PATCH 05/46] Port code for lb_build_call_expr --- examples/llvm-demo/demo.odin | 56 ++--- src/llvm_backend.cpp | 429 +++++++++++++++++++++++++++++++++-- 2 files changed, 435 insertions(+), 50 deletions(-) diff --git a/examples/llvm-demo/demo.odin b/examples/llvm-demo/demo.odin index 3b8953134..58bb10682 100644 --- a/examples/llvm-demo/demo.odin +++ b/examples/llvm-demo/demo.odin @@ -1,45 +1,39 @@ package demo -import "core:os" - -// Foo :: struct { -// x, y: int, -// }; -// foo :: proc(x: int) -> (f: Foo) { -// return; -// } +BarBar :: struct { + x, y: int, +}; +foo :: proc(x: int) -> (b: BarBar) { + return; +} main :: proc() { Foo :: enum {A=1, B, C, D}; Foo_Set :: bit_set[Foo]; - x := Foo_Set{.A, .C}; + foo_set := Foo_Set{.A, .C}; - y := [4]int{3 = 1, 0 .. 1 = 3, 2 = 9}; - z := []int{1, 2, 3, 4}; + array := [4]int{3 = 1, 0 .. 1 = 3, 2 = 9}; + slice := []int{1, 2, 3, 4}; - // @thread_local a: int; + @thread_local a: int; - // x := i32(1); - // y := i32(2); - // z := x + y; - // w := z - 2; + x := i32(1); + y := i32(2); + z := x + y; + w := z - 2; - // foo(123); + f := foo; + c := 1 + 2i; + q := 1 + 2i + 3j + 4k; - // c := 1 + 2i; - // q := 1 + 2i + 3j + 4k; + s := "Hellope"; - // s := "Hellope"; - - // f := Foo{1, 2}; - // pc: proc "contextless" (x: i32) -> Foo; - // po: proc "odin" (x: i32) -> Foo; - // e: enum{A, B, C}; - // u: union{i32, bool}; - // u1: union{i32}; - // um: union #maybe {^int}; - - // os.write_string(os.stdout, "Hellope\n"); - return; + bb := BarBar{1, 2}; + pc: proc "contextless" (x: i32) -> BarBar; + po: proc "odin" (x: i32) -> BarBar; + e: enum{A, B, C}; + u: union{i32, bool}; + u1: union{i32}; + um: union #maybe {^int}; } diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index c818051d0..a3ac6dcea 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -27,6 +27,11 @@ void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue const &value) { } +void lb_emit_store(lbProcedure *p, lbValue ptr, lbValue value) { + GB_ASSERT(value.value != nullptr); + LLVMValueRef v = LLVMBuildStore(p->builder, value.value, ptr.value); +} + lbValue lb_emit_load(lbProcedure *p, lbValue value) { GB_ASSERT(value.value != nullptr); Type *t = type_deref(value.type); @@ -99,14 +104,25 @@ String lb_mangle_name(lbModule *m, Entity *e) { return make_string(new_name, new_name_len-1); } -String lb_get_entity_name(lbModule *m, Entity *e, String name) { +String lb_get_entity_name(lbModule *m, Entity *e, String default_name) { if (e != nullptr && e->kind == Entity_TypeName && e->TypeName.ir_mangled_name.len != 0) { return e->TypeName.ir_mangled_name; } + String name = {}; bool no_name_mangle = false; + if (e->kind == Entity_Variable) { + bool is_foreign = e->Variable.is_foreign; + bool is_export = e->Variable.is_export; + no_name_mangle = e->Variable.link_name.len > 0 || is_foreign || is_export; + } else if (e->kind == Entity_Procedure && e->Procedure.is_export) { + no_name_mangle = true; + } else if (e->kind == Entity_Procedure && e->Procedure.link_name.len > 0) { + no_name_mangle = true; + } + if (!no_name_mangle) { name = lb_mangle_name(m, e); } @@ -116,8 +132,10 @@ String lb_get_entity_name(lbModule *m, Entity *e, String name) { if (e != nullptr && e->kind == Entity_TypeName) { e->TypeName.ir_mangled_name = name; - + } else if (e != nullptr && e->kind == Entity_Procedure) { + e->Procedure.link_name = name; } + return name; } @@ -519,6 +537,8 @@ LLVMTypeRef lb_type_internal(Type *type) { } LLVMTypeRef lb_type(Type *type) { + type = default_type(type); + if (type->llvm_type) { return type->llvm_type; } @@ -726,11 +746,20 @@ lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr) { val.value = ptr; val.type = alloc_type_pointer(type); - lb_add_entity(p->module, e, val); + if (e != nullptr) { + lb_add_entity(p->module, e, val); + } return lb_addr(val); } +lbAddr lb_add_local_generated(lbProcedure *p, Type *type, bool zero_init) { + lbAddr addr = lb_add_local(p, type, nullptr); + lb_addr_store(p, addr, lb_const_nil(type)); + return addr; +} + + bool lb_init_generator(lbGenerator *gen, Checker *c) { if (global_error_collector.count != 0) { @@ -994,7 +1023,7 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { // res = lb_emit_load(p, *found); } else { res = lb_build_expr(p, rs->results[0]); - // res = ir_emit_conv(p, v, e->type); + res = lb_emit_conv(p, res, e->type); } } else { @@ -1041,6 +1070,13 @@ lbValue lb_const_nil(Type *type) { return lbValue{v, type}; } +lbValue lb_const_int(Type *type, u64 value) { + lbValue res = {}; + res.value = LLVMConstInt(lb_type(type), value, !is_type_unsigned(type)); + res.type = type; + return res; +} + LLVMValueRef llvm_const_f32(f32 f, Type *type=t_f32) { u32 u = bit_cast(f); LLVMValueRef i = LLVMConstInt(LLVMInt32Type(), u, false); @@ -1048,6 +1084,8 @@ LLVMValueRef llvm_const_f32(f32 f, Type *type=t_f32) { } + + lbValue lb_find_or_add_entity_string(lbModule *m, String const &str) { HashKey key = hash_string(str); lbValue *found = map_get(&m->const_strings, key); @@ -1662,6 +1700,31 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { return lb_const_nil(original_type); } +u64 lb_generate_source_code_location_hash(TokenPos const &pos) { + u64 h = 0xcbf29ce484222325; + for (isize i = 0; i < pos.file.len; i++) { + h = (h ^ u64(pos.file[i])) * 0x100000001b3; + } + h = h ^ (u64(pos.line) * 0x100000001b3); + h = h ^ (u64(pos.column) * 0x100000001b3); + return h; +} + +lbValue lb_emit_source_code_location(lbProcedure *p, String const &procedure, TokenPos const &pos) { + LLVMValueRef fields[5] = {}; + fields[0]/*file*/ = lb_find_or_add_entity_string(p->module, pos.file).value; + fields[1]/*line*/ = lb_const_int(t_int, pos.line).value; + fields[2]/*column*/ = lb_const_int(t_int, pos.column).value; + fields[3]/*procedure*/ = lb_find_or_add_entity_string(p->module, procedure).value; + fields[4]/*hash*/ = lb_const_int(t_u64, lb_generate_source_code_location_hash(pos)).value; + + lbValue res = {}; + res.value = LLVMConstNamedStruct(lb_type(t_source_code_location), fields, 5); + res.type = t_source_code_location; + return res; +} + + lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Type *type) { lbValue res = {}; res.type = type; @@ -1784,6 +1847,339 @@ lbValue lb_build_binary_expr(lbProcedure *p, Ast *expr) { return {}; } +lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { + // TODO(bill): lb_emit_conv + return value; +} + +lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, ProcInlining inlining = ProcInlining_none, bool use_return_ptr_hint = false) { + return {}; +} + +lbValue lb_emit_ev(lbProcedure *p, lbValue value, i32 index) { + return {}; +} + +lbValue lb_emit_array_epi(lbProcedure *p, lbValue value, i32 index){ + return {}; +} + +void lb_fill_slice(lbProcedure *p, lbAddr slice, lbValue base_elem, lbValue len) { + +} + + +lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { + TypeAndValue tv = type_and_value_of_expr(expr); + + ast_node(ce, CallExpr, expr); + + TypeAndValue proc_tv = type_and_value_of_expr(ce->proc); + AddressingMode proc_mode = proc_tv.mode; + if (proc_mode == Addressing_Type) { + GB_ASSERT(ce->args.count == 1); + lbValue x = lb_build_expr(p, ce->args[0]); + lbValue y = lb_emit_conv(p, x, tv.type); + return y; + } + + Ast *pexpr = unparen_expr(ce->proc); + if (proc_mode == Addressing_Builtin) { + Entity *e = entity_of_node(pexpr); + BuiltinProcId id = BuiltinProc_Invalid; + if (e != nullptr) { + id = cast(BuiltinProcId)e->Builtin.id; + } else { + id = BuiltinProc_DIRECTIVE; + } + GB_PANIC("lb_build_builtin_proc"); + // return lb_build_builtin_proc(p, expr, tv, id); + } + + // NOTE(bill): Regular call + lbValue value = {}; + Ast *proc_expr = unparen_expr(ce->proc); + if (proc_expr->tav.mode == Addressing_Constant) { + ExactValue v = proc_expr->tav.value; + switch (v.kind) { + case ExactValue_Integer: + { + u64 u = big_int_to_u64(&v.value_integer); + lbValue x = {}; + x.value = LLVMConstInt(lb_type(t_uintptr), u, false); + x.type = t_uintptr; + x = lb_emit_conv(p, x, t_rawptr); + value = lb_emit_conv(p, x, proc_expr->tav.type); + break; + } + case ExactValue_Pointer: + { + u64 u = cast(u64)v.value_pointer; + lbValue x = {}; + x.value = LLVMConstInt(lb_type(t_uintptr), u, false); + x.type = t_uintptr; + x = lb_emit_conv(p, x, t_rawptr); + value = lb_emit_conv(p, x, proc_expr->tav.type); + break; + } + } + } + + if (value.value == nullptr) { + value = lb_build_expr(p, proc_expr); + } + + GB_ASSERT(value.value != nullptr); + Type *proc_type_ = base_type(value.type); + GB_ASSERT(proc_type_->kind == Type_Proc); + TypeProc *pt = &proc_type_->Proc; + set_procedure_abi_types(heap_allocator(), proc_type_); + + if (is_call_expr_field_value(ce)) { + auto args = array_make(heap_allocator(), pt->param_count); + + for_array(arg_index, ce->args) { + Ast *arg = ce->args[arg_index]; + ast_node(fv, FieldValue, arg); + GB_ASSERT(fv->field->kind == Ast_Ident); + String name = fv->field->Ident.token.string; + isize index = lookup_procedure_parameter(pt, name); + GB_ASSERT(index >= 0); + TypeAndValue tav = type_and_value_of_expr(fv->value); + if (tav.mode == Addressing_Type) { + args[index] = lb_const_nil(tav.type); + } else { + args[index] = lb_build_expr(p, fv->value); + } + } + TypeTuple *params = &pt->params->Tuple; + for (isize i = 0; i < args.count; i++) { + Entity *e = params->variables[i]; + if (e->kind == Entity_TypeName) { + args[i] = lb_const_nil(e->type); + } else if (e->kind == Entity_Constant) { + continue; + } else { + GB_ASSERT(e->kind == Entity_Variable); + if (args[i].value == nullptr) { + switch (e->Variable.param_value.kind) { + case ParameterValue_Constant: + args[i] = lb_const_value(p->module, e->type, e->Variable.param_value.value); + break; + case ParameterValue_Nil: + args[i] = lb_const_nil(e->type); + break; + case ParameterValue_Location: + args[i] = lb_emit_source_code_location(p, p->entity->token.string, ast_token(expr).pos); + break; + case ParameterValue_Value: + args[i] = lb_build_expr(p, e->Variable.param_value.ast_value); + break; + } + } else { + args[i] = lb_emit_conv(p, args[i], e->type); + } + } + } + + return lb_emit_call(p, value, args, ce->inlining, p->return_ptr_hint_ast == expr); + } + + isize arg_index = 0; + + isize arg_count = 0; + for_array(i, ce->args) { + Ast *arg = ce->args[i]; + TypeAndValue tav = type_and_value_of_expr(arg); + GB_ASSERT_MSG(tav.mode != Addressing_Invalid, "%s %s", expr_to_string(arg), expr_to_string(expr)); + GB_ASSERT_MSG(tav.mode != Addressing_ProcGroup, "%s", expr_to_string(arg)); + Type *at = tav.type; + if (at->kind == Type_Tuple) { + arg_count += at->Tuple.variables.count; + } else { + arg_count++; + } + } + + isize param_count = 0; + if (pt->params) { + GB_ASSERT(pt->params->kind == Type_Tuple); + param_count = pt->params->Tuple.variables.count; + } + + auto args = array_make(heap_allocator(), cast(isize)gb_max(param_count, arg_count)); + isize variadic_index = pt->variadic_index; + bool variadic = pt->variadic && variadic_index >= 0; + bool vari_expand = ce->ellipsis.pos.line != 0; + bool is_c_vararg = pt->c_vararg; + + String proc_name = {}; + if (p->entity != nullptr) { + proc_name = p->entity->token.string; + } + TokenPos pos = ast_token(ce->proc).pos; + + TypeTuple *param_tuple = nullptr; + if (pt->params) { + GB_ASSERT(pt->params->kind == Type_Tuple); + param_tuple = &pt->params->Tuple; + } + + for_array(i, ce->args) { + Ast *arg = ce->args[i]; + TypeAndValue arg_tv = type_and_value_of_expr(arg); + if (arg_tv.mode == Addressing_Type) { + args[arg_index++] = lb_const_nil(arg_tv.type); + } else { + lbValue a = lb_build_expr(p, arg); + Type *at = a.type; + if (at->kind == Type_Tuple) { + for_array(i, at->Tuple.variables) { + Entity *e = at->Tuple.variables[i]; + lbValue v = lb_emit_ev(p, a, cast(i32)i); + args[arg_index++] = v; + } + } else { + args[arg_index++] = a; + } + } + } + + + if (param_count > 0) { + GB_ASSERT_MSG(pt->params != nullptr, "%s %td", expr_to_string(expr), pt->param_count); + GB_ASSERT(param_count < 1000000); + + if (arg_count < param_count) { + isize end = cast(isize)param_count; + if (variadic) { + end = variadic_index; + } + while (arg_index < end) { + Entity *e = param_tuple->variables[arg_index]; + GB_ASSERT(e->kind == Entity_Variable); + + switch (e->Variable.param_value.kind) { + case ParameterValue_Constant: + args[arg_index++] = lb_const_value(p->module, e->type, e->Variable.param_value.value); + break; + case ParameterValue_Nil: + args[arg_index++] = lb_const_nil(e->type); + break; + case ParameterValue_Location: + args[arg_index++] = lb_emit_source_code_location(p, proc_name, pos); + break; + case ParameterValue_Value: + args[arg_index++] = lb_build_expr(p, e->Variable.param_value.ast_value); + break; + } + } + } + + if (is_c_vararg) { + GB_ASSERT(variadic); + GB_ASSERT(!vari_expand); + isize i = 0; + for (; i < variadic_index; i++) { + Entity *e = param_tuple->variables[i]; + if (e->kind == Entity_Variable) { + args[i] = lb_emit_conv(p, args[i], e->type); + } + } + Type *variadic_type = param_tuple->variables[i]->type; + GB_ASSERT(is_type_slice(variadic_type)); + variadic_type = base_type(variadic_type)->Slice.elem; + if (!is_type_any(variadic_type)) { + for (; i < arg_count; i++) { + args[i] = lb_emit_conv(p, args[i], variadic_type); + } + } else { + for (; i < arg_count; i++) { + args[i] = lb_emit_conv(p, args[i], default_type(args[i].type)); + } + } + } else if (variadic) { + isize i = 0; + for (; i < variadic_index; i++) { + Entity *e = param_tuple->variables[i]; + if (e->kind == Entity_Variable) { + args[i] = lb_emit_conv(p, args[i], e->type); + } + } + if (!vari_expand) { + Type *variadic_type = param_tuple->variables[i]->type; + GB_ASSERT(is_type_slice(variadic_type)); + variadic_type = base_type(variadic_type)->Slice.elem; + for (; i < arg_count; i++) { + args[i] = lb_emit_conv(p, args[i], variadic_type); + } + } + } else { + for (isize i = 0; i < param_count; i++) { + Entity *e = param_tuple->variables[i]; + if (e->kind == Entity_Variable) { + GB_ASSERT(args[i].value != nullptr); + args[i] = lb_emit_conv(p, args[i], e->type); + } + } + } + + if (variadic && !vari_expand && !is_c_vararg) { + // variadic call argument generation + gbAllocator allocator = heap_allocator(); + Type *slice_type = param_tuple->variables[variadic_index]->type; + Type *elem_type = base_type(slice_type)->Slice.elem; + lbAddr slice = lb_add_local_generated(p, slice_type, true); + isize slice_len = arg_count+1 - (variadic_index+1); + + if (slice_len > 0) { + lbAddr base_array = lb_add_local_generated(p, alloc_type_array(elem_type, slice_len), true); + + for (isize i = variadic_index, j = 0; i < arg_count; i++, j++) { + lbValue addr = lb_emit_array_epi(p, base_array.addr, cast(i32)j); + lb_emit_store(p, addr, args[i]); + } + + lbValue base_elem = lb_emit_array_epi(p, base_array.addr, 0); + lbValue len = lb_const_int(t_int, slice_len); + lb_fill_slice(p, slice, base_elem, len); + } + + arg_count = param_count; + args[variadic_index] = lb_addr_load(p, slice); + } + } + + if (variadic && variadic_index+1 < param_count) { + for (isize i = variadic_index+1; i < param_count; i++) { + Entity *e = param_tuple->variables[i]; + switch (e->Variable.param_value.kind) { + case ParameterValue_Constant: + args[i] = lb_const_value(p->module, e->type, e->Variable.param_value.value); + break; + case ParameterValue_Nil: + args[i] = lb_const_nil(e->type); + break; + case ParameterValue_Location: + args[i] = lb_emit_source_code_location(p, proc_name, pos); + break; + case ParameterValue_Value: + args[i] = lb_build_expr(p, e->Variable.param_value.ast_value); + break; + } + } + } + + isize final_count = param_count; + if (is_c_vararg) { + final_count = arg_count; + } + + auto call_args = array_slice(args, 0, final_count); + return lb_emit_call(p, value, call_args, ce->inlining, p->return_ptr_hint_ast == expr); +} + + lbValue lb_build_expr(lbProcedure *p, Ast *expr) { expr = unparen_expr(expr); @@ -1809,7 +2205,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { case_end; case_ast_node(i, Implicit, expr); - // return ir_addr_load(proc, ir_build_addr(proc, expr)); + // return ir_addr_load(p, ir_build_addr(p, expr)); GB_PANIC("TODO(bill): Implicit"); case_end; @@ -1822,7 +2218,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { GB_ASSERT_MSG(e != nullptr, "%s", expr_to_string(expr)); if (e->kind == Entity_Builtin) { Token token = ast_token(expr); - GB_PANIC("TODO(bill): ir_build_expr Entity_Builtin '%.*s'\n" + GB_PANIC("TODO(bill): lb_build_expr Entity_Builtin '%.*s'\n" "\t at %.*s(%td:%td)", LIT(builtin_procs[e->Builtin.id].name), LIT(token.pos.file), token.pos.line, token.pos.column); return {}; @@ -1833,13 +2229,13 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { auto *found = map_get(&p->module->values, hash_entity(e)); if (found) { auto v = *found; - LLVMTypeKind kind = LLVMGetTypeKind(LLVMTypeOf(v.value)); - if (kind == LLVMFunctionTypeKind) { + // NOTE(bill): This is because pointers are already pointers in LLVM + if (is_type_proc(v.type)) { return v; } return lb_emit_load(p, v); // } else if (e != nullptr && e->kind == Entity_Variable) { - // return ir_addr_load(proc, ir_build_addr(proc, expr)); + // return ir_addr_load(p, ir_build_addr(p, expr)); } GB_PANIC("nullptr value for expression from identifier: %.*s : %s @ %p", LIT(i->token.string), type_to_string(e->type), expr); return {}; @@ -1848,6 +2244,11 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { case_ast_node(be, BinaryExpr, expr); return lb_build_binary_expr(p, expr); case_end; + + + case_ast_node(ce, CallExpr, expr); + return lb_build_call_expr(p, expr); + case_end; } return {}; @@ -1941,17 +2342,7 @@ void lb_generate_module(lbGenerator *gen) { defer (LLVMDisposeMessage(llvm_error)); - // LLVMPassManagerRef pass_manager = LLVMCreatePassManager(); - // defer (LLVMDisposePassManager(pass_manager)); - - // LLVMAddAggressiveInstCombinerPass(pass_manager); - // LLVMAddConstantMergePass(pass_manager); - // LLVMAddDeadArgEliminationPass(pass_manager); - - // LLVMRunPassManager(pass_manager, mod); - LLVMVerifyModule(mod, LLVMAbortProcessAction, &llvm_error); - llvm_error = nullptr; LLVMDumpModule(mod); From b555b0083a58856f661c63fb574722f1fc64fee9 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Feb 2020 20:18:19 +0000 Subject: [PATCH 06/46] Slowly add more statements and expressions; Add header file --- src/entity.cpp | 3 + src/llvm_backend.cpp | 1087 ++++++++++++++++++++++++++++++------------ src/llvm_backend.hpp | 231 +++++++++ src/parser.hpp | 6 +- src/types.cpp | 1 - 5 files changed, 1019 insertions(+), 309 deletions(-) create mode 100644 src/llvm_backend.hpp diff --git a/src/entity.cpp b/src/entity.cpp index 8273af3f1..a721c6394 100644 --- a/src/entity.cpp +++ b/src/entity.cpp @@ -2,6 +2,7 @@ struct Scope; struct Checker; struct Type; struct DeclInfo; +struct lbModule; #define ENTITY_KINDS \ @@ -104,6 +105,8 @@ struct Entity { Entity * using_parent; Ast * using_expr; + lbModule * code_gen_module; + isize order_in_src; String deprecated_message; diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index a3ac6dcea..c036da85c 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1,9 +1,12 @@ #include "llvm_backend.hpp" -gb_internal gb_thread_local lbModule *global_module = nullptr; -gb_internal LLVMValueRef lb_zero32 = nullptr; -gb_internal LLVMValueRef lb_one32 = nullptr; +LLVMValueRef lb_zero32(lbModule *m) { + return LLVMConstInt(lb_type(m, t_i32), 0, false); +} +LLVMValueRef lb_one32(lbModule *m) { + return LLVMConstInt(lb_type(m, t_i32), 1, false); +} lbAddr lb_addr(lbValue addr) { @@ -33,9 +36,10 @@ void lb_emit_store(lbProcedure *p, lbValue ptr, lbValue value) { } lbValue lb_emit_load(lbProcedure *p, lbValue value) { + lbModule *m = p->module; GB_ASSERT(value.value != nullptr); Type *t = type_deref(value.type); - LLVMValueRef v = LLVMBuildLoad2(p->builder, lb_type(t), value.value, ""); + LLVMValueRef v = LLVMBuildLoad2(p->builder, lb_type(m, t), value.value, ""); return lbValue{v, t}; } @@ -53,18 +57,18 @@ void lb_clone_struct_type(LLVMTypeRef dst, LLVMTypeRef src) { gb_free(heap_allocator(), fields); } -LLVMTypeRef lb_alignment_prefix_type_hack(i64 alignment) { +LLVMTypeRef lb_alignment_prefix_type_hack(lbModule *m, i64 alignment) { switch (alignment) { case 1: - return LLVMArrayType(lb_type(t_u8), 0); + return LLVMArrayType(lb_type(m, t_u8), 0); case 2: - return LLVMArrayType(lb_type(t_u16), 0); + return LLVMArrayType(lb_type(m, t_u16), 0); case 4: - return LLVMArrayType(lb_type(t_u32), 0); + return LLVMArrayType(lb_type(m, t_u32), 0); case 8: - return LLVMArrayType(lb_type(t_u64), 0); + return LLVMArrayType(lb_type(m, t_u64), 0); case 16: - return LLVMArrayType(LLVMVectorType(lb_type(t_u32), 4), 0); + return LLVMArrayType(LLVMVectorType(lb_type(m, t_u32), 4), 0); default: GB_PANIC("Invalid alignment %d", cast(i32)alignment); break; @@ -139,53 +143,56 @@ String lb_get_entity_name(lbModule *m, Entity *e, String default_name) { return name; } -LLVMTypeRef lb_type_internal(Type *type) { +LLVMTypeRef lb_type_internal(lbModule *m, Type *type) { + LLVMContextRef ctx = m->ctx; i64 size = type_size_of(type); // Check size + GB_ASSERT(type != t_invalid); + switch (type->kind) { case Type_Basic: switch (type->Basic.kind) { - case Basic_llvm_bool: return LLVMInt1Type(); - case Basic_bool: return LLVMInt8Type(); - case Basic_b8: return LLVMInt8Type(); - case Basic_b16: return LLVMInt16Type(); - case Basic_b32: return LLVMInt32Type(); - case Basic_b64: return LLVMInt64Type(); + case Basic_llvm_bool: return LLVMInt1TypeInContext(ctx); + case Basic_bool: return LLVMInt8TypeInContext(ctx); + case Basic_b8: return LLVMInt8TypeInContext(ctx); + case Basic_b16: return LLVMInt16TypeInContext(ctx); + case Basic_b32: return LLVMInt32TypeInContext(ctx); + case Basic_b64: return LLVMInt64TypeInContext(ctx); - case Basic_i8: return LLVMInt8Type(); - case Basic_u8: return LLVMInt8Type(); - case Basic_i16: return LLVMInt16Type(); - case Basic_u16: return LLVMInt16Type(); - case Basic_i32: return LLVMInt32Type(); - case Basic_u32: return LLVMInt32Type(); - case Basic_i64: return LLVMInt64Type(); - case Basic_u64: return LLVMInt64Type(); - case Basic_i128: return LLVMInt128Type(); - case Basic_u128: return LLVMInt128Type(); + case Basic_i8: return LLVMInt8TypeInContext(ctx); + case Basic_u8: return LLVMInt8TypeInContext(ctx); + case Basic_i16: return LLVMInt16TypeInContext(ctx); + case Basic_u16: return LLVMInt16TypeInContext(ctx); + case Basic_i32: return LLVMInt32TypeInContext(ctx); + case Basic_u32: return LLVMInt32TypeInContext(ctx); + case Basic_i64: return LLVMInt64TypeInContext(ctx); + case Basic_u64: return LLVMInt64TypeInContext(ctx); + case Basic_i128: return LLVMInt128TypeInContext(ctx); + case Basic_u128: return LLVMInt128TypeInContext(ctx); - case Basic_rune: return LLVMInt32Type(); + case Basic_rune: return LLVMInt32TypeInContext(ctx); // Basic_f16, - case Basic_f32: return LLVMFloatType(); - case Basic_f64: return LLVMDoubleType(); + case Basic_f32: return LLVMFloatTypeInContext(ctx); + case Basic_f64: return LLVMDoubleTypeInContext(ctx); // Basic_complex32, case Basic_complex64: { - LLVMTypeRef type = LLVMStructCreateNamed(LLVMGetGlobalContext(), "..complex64"); + LLVMTypeRef type = LLVMStructCreateNamed(ctx, "..complex64"); LLVMTypeRef fields[2] = { - lb_type(t_f32), - lb_type(t_f32), + lb_type(m, t_f32), + lb_type(m, t_f32), }; LLVMStructSetBody(type, fields, 2, false); return type; } case Basic_complex128: { - LLVMTypeRef type = LLVMStructCreateNamed(LLVMGetGlobalContext(), "..complex128"); + LLVMTypeRef type = LLVMStructCreateNamed(ctx, "..complex128"); LLVMTypeRef fields[2] = { - lb_type(t_f64), - lb_type(t_f64), + lb_type(m, t_f64), + lb_type(m, t_f64), }; LLVMStructSetBody(type, fields, 2, false); return type; @@ -193,41 +200,41 @@ LLVMTypeRef lb_type_internal(Type *type) { case Basic_quaternion128: { - LLVMTypeRef type = LLVMStructCreateNamed(LLVMGetGlobalContext(), "..quaternion128"); + LLVMTypeRef type = LLVMStructCreateNamed(ctx, "..quaternion128"); LLVMTypeRef fields[4] = { - lb_type(t_f32), - lb_type(t_f32), - lb_type(t_f32), - lb_type(t_f32), + lb_type(m, t_f32), + lb_type(m, t_f32), + lb_type(m, t_f32), + lb_type(m, t_f32), }; LLVMStructSetBody(type, fields, 4, false); return type; } case Basic_quaternion256: { - LLVMTypeRef type = LLVMStructCreateNamed(LLVMGetGlobalContext(), "..quaternion256"); + LLVMTypeRef type = LLVMStructCreateNamed(ctx, "..quaternion256"); LLVMTypeRef fields[4] = { - lb_type(t_f64), - lb_type(t_f64), - lb_type(t_f64), - lb_type(t_f64), + lb_type(m, t_f64), + lb_type(m, t_f64), + lb_type(m, t_f64), + lb_type(m, t_f64), }; LLVMStructSetBody(type, fields, 4, false); return type; } - case Basic_int: return LLVMIntType(8*cast(unsigned)build_context.word_size); - case Basic_uint: return LLVMIntType(8*cast(unsigned)build_context.word_size); + case Basic_int: return LLVMIntTypeInContext(ctx, 8*cast(unsigned)build_context.word_size); + case Basic_uint: return LLVMIntTypeInContext(ctx, 8*cast(unsigned)build_context.word_size); - case Basic_uintptr: return LLVMIntType(8*cast(unsigned)build_context.word_size); + case Basic_uintptr: return LLVMIntTypeInContext(ctx, 8*cast(unsigned)build_context.word_size); case Basic_rawptr: return LLVMPointerType(LLVMInt8Type(), 0); case Basic_string: { - LLVMTypeRef type = LLVMStructCreateNamed(LLVMGetGlobalContext(), "..string"); + LLVMTypeRef type = LLVMStructCreateNamed(ctx, "..string"); LLVMTypeRef fields[2] = { - LLVMPointerType(lb_type(t_u8), 0), - lb_type(t_int), + LLVMPointerType(lb_type(m, t_u8), 0), + lb_type(m, t_int), }; LLVMStructSetBody(type, fields, 2, false); return type; @@ -235,10 +242,10 @@ LLVMTypeRef lb_type_internal(Type *type) { case Basic_cstring: return LLVMPointerType(LLVMInt8Type(), 0); case Basic_any: { - LLVMTypeRef type = LLVMStructCreateNamed(LLVMGetGlobalContext(), "..any"); + LLVMTypeRef type = LLVMStructCreateNamed(ctx, "..any"); LLVMTypeRef fields[2] = { - LLVMPointerType(lb_type(t_rawptr), 0), - lb_type(t_typeid), + LLVMPointerType(lb_type(m, t_rawptr), 0), + lb_type(m, t_typeid), }; LLVMStructSetBody(type, fields, 2, false); return type; @@ -247,23 +254,23 @@ LLVMTypeRef lb_type_internal(Type *type) { case Basic_typeid: return LLVMIntType(8*cast(unsigned)build_context.word_size); // Endian Specific Types - case Basic_i16le: return LLVMInt16Type(); - case Basic_u16le: return LLVMInt16Type(); - case Basic_i32le: return LLVMInt32Type(); - case Basic_u32le: return LLVMInt32Type(); - case Basic_i64le: return LLVMInt64Type(); - case Basic_u64le: return LLVMInt64Type(); - case Basic_i128le: return LLVMInt128Type(); - case Basic_u128le: return LLVMInt128Type(); + case Basic_i16le: return LLVMInt16TypeInContext(ctx); + case Basic_u16le: return LLVMInt16TypeInContext(ctx); + case Basic_i32le: return LLVMInt32TypeInContext(ctx); + case Basic_u32le: return LLVMInt32TypeInContext(ctx); + case Basic_i64le: return LLVMInt64TypeInContext(ctx); + case Basic_u64le: return LLVMInt64TypeInContext(ctx); + case Basic_i128le: return LLVMInt128TypeInContext(ctx); + case Basic_u128le: return LLVMInt128TypeInContext(ctx); - case Basic_i16be: return LLVMInt16Type(); - case Basic_u16be: return LLVMInt16Type(); - case Basic_i32be: return LLVMInt32Type(); - case Basic_u32be: return LLVMInt32Type(); - case Basic_i64be: return LLVMInt64Type(); - case Basic_u64be: return LLVMInt64Type(); - case Basic_i128be: return LLVMInt128Type(); - case Basic_u128be: return LLVMInt128Type(); + case Basic_i16be: return LLVMInt16TypeInContext(ctx); + case Basic_u16be: return LLVMInt16TypeInContext(ctx); + case Basic_i32be: return LLVMInt32TypeInContext(ctx); + case Basic_u32be: return LLVMInt32TypeInContext(ctx); + case Basic_i64be: return LLVMInt64TypeInContext(ctx); + case Basic_u64be: return LLVMInt64TypeInContext(ctx); + case Basic_i128be: return LLVMInt128TypeInContext(ctx); + case Basic_u128be: return LLVMInt128TypeInContext(ctx); // Untyped types case Basic_UntypedBool: GB_PANIC("Basic_UntypedBool"); break; @@ -283,7 +290,7 @@ LLVMTypeRef lb_type_internal(Type *type) { switch (base->kind) { case Type_Basic: - return lb_type(base); + return lb_type(m, base); case Type_Named: case Type_Generic: @@ -301,23 +308,23 @@ LLVMTypeRef lb_type_internal(Type *type) { case Type_Enum: case Type_BitSet: case Type_SimdVector: - return lb_type(base); + return lb_type(m, base); // TODO(bill): Deal with this correctly. Can this be named? case Type_Proc: - return lb_type(base); + return lb_type(m, base); case Type_Tuple: - return lb_type(base); + return lb_type(m, base); } - LLVMContextRef ctx = LLVMGetModuleContext(global_module->mod); - - if (base->llvm_type != nullptr) { - LLVMTypeKind kind = LLVMGetTypeKind(base->llvm_type); + LLVMTypeRef *found = map_get(&m->types, hash_type(base)); + if (found) { + LLVMTypeKind kind = LLVMGetTypeKind(*found); if (kind == LLVMStructTypeKind) { - type->llvm_type = LLVMStructCreateNamed(ctx, alloc_cstring(heap_allocator(), lb_get_entity_name(global_module, type->Named.type_name))); - lb_clone_struct_type(type->llvm_type, base->llvm_type); + LLVMTypeRef llvm_type = LLVMStructCreateNamed(ctx, alloc_cstring(heap_allocator(), lb_get_entity_name(m, type->Named.type_name))); + map_set(&m->types, hash_type(type), llvm_type); + lb_clone_struct_type(llvm_type, *found); } } @@ -325,51 +332,54 @@ LLVMTypeRef lb_type_internal(Type *type) { case Type_Struct: case Type_Union: case Type_BitField: - type->llvm_type = LLVMStructCreateNamed(ctx, alloc_cstring(heap_allocator(), lb_get_entity_name(global_module, type->Named.type_name))); - lb_clone_struct_type(type->llvm_type, lb_type(base)); - return type->llvm_type; + { + LLVMTypeRef llvm_type = LLVMStructCreateNamed(ctx, alloc_cstring(heap_allocator(), lb_get_entity_name(m, type->Named.type_name))); + map_set(&m->types, hash_type(type), llvm_type); + lb_clone_struct_type(llvm_type, lb_type(m, base)); + return llvm_type; + } } - return lb_type(base); + return lb_type(m, base); } case Type_Pointer: - return LLVMPointerType(lb_type(type_deref(type)), 0); + return LLVMPointerType(lb_type(m, type_deref(type)), 0); case Type_Opaque: - return lb_type(base_type(type)); + return lb_type(m, base_type(type)); case Type_Array: - return LLVMArrayType(lb_type(type->Array.elem), cast(unsigned)type->Array.count); + return LLVMArrayType(lb_type(m, type->Array.elem), cast(unsigned)type->Array.count); case Type_EnumeratedArray: - return LLVMArrayType(lb_type(type->EnumeratedArray.elem), cast(unsigned)type->EnumeratedArray.count); + return LLVMArrayType(lb_type(m, type->EnumeratedArray.elem), cast(unsigned)type->EnumeratedArray.count); case Type_Slice: { LLVMTypeRef fields[2] = { - LLVMPointerType(lb_type(type->Slice.elem), 0), // data - lb_type(t_int), // len + LLVMPointerType(lb_type(m, type->Slice.elem), 0), // data + lb_type(m, t_int), // len }; - return LLVMStructType(fields, 2, false); + return LLVMStructTypeInContext(ctx, fields, 2, false); } break; case Type_DynamicArray: { LLVMTypeRef fields[4] = { - LLVMPointerType(lb_type(type->DynamicArray.elem), 0), // data - lb_type(t_int), // len - lb_type(t_int), // cap - lb_type(t_allocator), // allocator + LLVMPointerType(lb_type(m, type->DynamicArray.elem), 0), // data + lb_type(m, t_int), // len + lb_type(m, t_int), // cap + lb_type(m, t_allocator), // allocator }; - return LLVMStructType(fields, 4, false); + return LLVMStructTypeInContext(ctx, fields, 4, false); } break; case Type_Map: - return lb_type(type->Map.internal_type); + return lb_type(m, type->Map.internal_type); case Type_Struct: { @@ -378,9 +388,9 @@ LLVMTypeRef lb_type_internal(Type *type) { LLVMTypeRef *fields = gb_alloc_array(heap_allocator(), LLVMTypeRef, field_count); i64 alignment = type_align_of(type); unsigned size_of_union = cast(unsigned)type_size_of(type); - fields[0] = lb_alignment_prefix_type_hack(alignment); - fields[1] = LLVMArrayType(lb_type(t_u8), size_of_union); - return LLVMStructType(fields, field_count, false); + fields[0] = lb_alignment_prefix_type_hack(m, alignment); + fields[1] = LLVMArrayType(lb_type(m, t_u8), size_of_union); + return LLVMStructTypeInContext(ctx, fields, field_count, false); } isize offset = 0; @@ -395,20 +405,20 @@ LLVMTypeRef lb_type_internal(Type *type) { for_array(i, type->Struct.fields) { Entity *field = type->Struct.fields[i]; - fields[i+offset] = lb_type(field->type); + fields[i+offset] = lb_type(m, field->type); } if (type->Struct.custom_align > 0) { - fields[0] = lb_alignment_prefix_type_hack(type->Struct.custom_align); + fields[0] = lb_alignment_prefix_type_hack(m, type->Struct.custom_align); } - return LLVMStructType(fields, field_count, type->Struct.is_packed); + return LLVMStructTypeInContext(ctx, fields, field_count, type->Struct.is_packed); } break; case Type_Union: if (type->Union.variants.count == 0) { - return LLVMStructType(nullptr, 0, false); + return LLVMStructTypeInContext(ctx, nullptr, 0, false); } else { // NOTE(bill): The zero size array is used to fix the alignment used in a structure as // LLVM takes the first element's alignment as the entire alignment (like C) @@ -416,30 +426,30 @@ LLVMTypeRef lb_type_internal(Type *type) { i64 size = type_size_of(type); if (is_type_union_maybe_pointer_original_alignment(type)) { - LLVMTypeRef fields[1] = {lb_type(type->Union.variants[0])}; - return LLVMStructType(fields, 1, false); + LLVMTypeRef fields[1] = {lb_type(m, type->Union.variants[0])}; + return LLVMStructTypeInContext(ctx, fields, 1, false); } unsigned block_size = cast(unsigned)type->Union.variant_block_size; LLVMTypeRef fields[3] = {}; unsigned field_count = 1; - fields[0] = lb_alignment_prefix_type_hack(align); + fields[0] = lb_alignment_prefix_type_hack(m, align); if (is_type_union_maybe_pointer(type)) { field_count += 1; - fields[1] = lb_type(type->Union.variants[0]); + fields[1] = lb_type(m, type->Union.variants[0]); } else { field_count += 2; - fields[1] = LLVMArrayType(lb_type(t_u8), block_size); - fields[2] = lb_type(union_tag_type(type)); + fields[1] = LLVMArrayType(lb_type(m, t_u8), block_size); + fields[2] = lb_type(m, union_tag_type(type)); } - return LLVMStructType(fields, field_count, false); + return LLVMStructTypeInContext(ctx, fields, field_count, false); } break; case Type_Enum: - return lb_type(base_enum_type(type)); + return lb_type(m, base_enum_type(type)); case Type_Tuple: { @@ -449,22 +459,22 @@ LLVMTypeRef lb_type_internal(Type *type) { for_array(i, type->Tuple.variables) { Entity *field = type->Tuple.variables[i]; - fields[i] = lb_type(field->type); + fields[i] = lb_type(m, field->type); } - return LLVMStructType(fields, field_count, type->Tuple.is_packed); + return LLVMStructTypeInContext(ctx, fields, field_count, type->Tuple.is_packed); } case Type_Proc: { set_procedure_abi_types(heap_allocator(), type); - LLVMTypeRef return_type = LLVMVoidType(); + LLVMTypeRef return_type = LLVMVoidTypeInContext(ctx); isize offset = 0; if (type->Proc.return_by_pointer) { offset = 1; } else if (type->Proc.abi_compat_result_type != nullptr) { - return_type = lb_type(type->Proc.abi_compat_result_type); + return_type = lb_type(m, type->Proc.abi_compat_result_type); } isize extra_param_count = offset; @@ -478,13 +488,13 @@ LLVMTypeRef lb_type_internal(Type *type) { for_array(i, type->Proc.abi_compat_params) { Type *param = type->Proc.abi_compat_params[i]; - param_types[i+offset] = lb_type(param); + param_types[i+offset] = lb_type(m, param); } if (type->Proc.return_by_pointer) { - param_types[0] = LLVMPointerType(lb_type(type->Proc.abi_compat_result_type), 0); + param_types[0] = LLVMPointerType(lb_type(m, type->Proc.abi_compat_result_type), 0); } if (type->Proc.calling_convention == ProcCC_Odin) { - param_types[param_count-1] = lb_type(t_context_ptr); + param_types[param_count-1] = lb_type(m, t_context_ptr); } LLVMTypeRef t = LLVMFunctionType(return_type, param_types, param_count, type->Proc.c_vararg); @@ -508,7 +518,7 @@ LLVMTypeRef lb_type_internal(Type *type) { fields[i] = LLVMIntType(size); } - internal_type = LLVMStructType(fields, field_count, true); + internal_type = LLVMStructTypeInContext(ctx, fields, field_count, true); } unsigned field_count = 2; LLVMTypeRef *fields = gb_alloc_array(heap_allocator(), LLVMTypeRef, field_count); @@ -517,34 +527,36 @@ LLVMTypeRef lb_type_internal(Type *type) { if (type->BitField.custom_align > 0) { alignment = type->BitField.custom_align; } - fields[0] = lb_alignment_prefix_type_hack(alignment); + fields[0] = lb_alignment_prefix_type_hack(m, alignment); fields[1] = internal_type; - return LLVMStructType(fields, field_count, true); + return LLVMStructTypeInContext(ctx, fields, field_count, true); } break; case Type_BitSet: return LLVMIntType(8*cast(unsigned)type_size_of(type)); case Type_SimdVector: if (type->SimdVector.is_x86_mmx) { - return LLVMX86MMXType(); + return LLVMX86MMXTypeInContext(ctx); } - return LLVMVectorType(lb_type(type->SimdVector.elem), cast(unsigned)type->SimdVector.count); + return LLVMVectorType(lb_type(m, type->SimdVector.elem), cast(unsigned)type->SimdVector.count); } - GB_PANIC("Invalid type"); - return LLVMInt32Type(); + GB_PANIC("Invalid type %s", type_to_string(type)); + return LLVMInt32TypeInContext(ctx); } -LLVMTypeRef lb_type(Type *type) { +LLVMTypeRef lb_type(lbModule *m, Type *type) { type = default_type(type); - if (type->llvm_type) { - return type->llvm_type; + LLVMTypeRef *found = map_get(&m->types, hash_type(type)); + if (found) { + return *found; } - LLVMTypeRef llvm_type = lb_type_internal(type); - type->llvm_type = llvm_type; + LLVMTypeRef llvm_type = lb_type_internal(m, type); + + map_set(&m->types, hash_type(type), llvm_type); return llvm_type; } @@ -580,12 +592,13 @@ void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *nam -lbProcedure *lb_create_procedure(lbModule *module, Entity *entity) { +lbProcedure *lb_create_procedure(lbModule *m, Entity *entity) { lbProcedure *p = gb_alloc_item(heap_allocator(), lbProcedure); - p->module = module; + entity->code_gen_module = m; + p->module = m; p->entity = entity; - p->name = lb_get_entity_name(module, entity); + p->name = lb_get_entity_name(m, entity); DeclInfo *decl = entity->decl_info; @@ -608,17 +621,20 @@ lbProcedure *lb_create_procedure(lbModule *module, Entity *entity) { p->params.allocator = heap_allocator(); p->blocks.allocator = heap_allocator(); p->branch_blocks.allocator = heap_allocator(); + p->context_stack.allocator = heap_allocator(); char *name = alloc_cstring(heap_allocator(), p->name); - LLVMTypeRef func_ptr_type = lb_type(p->type); + LLVMTypeRef func_ptr_type = lb_type(m, p->type); LLVMTypeRef func_type = LLVMGetElementType(func_ptr_type); - p->value = LLVMAddFunction(module->mod, name, func_type); - lb_add_entity(module, entity, lbValue{p->value, p->type}); - lb_add_member(module, p->name, lbValue{p->value, p->type}); + p->value = LLVMAddFunction(m->mod, name, func_type); + LLVMSetFunctionCallConv(p->value, lb_calling_convention_map[pt->Proc.calling_convention]); + lbValue proc_value = {p->value, p->type}; + lb_add_entity(m, entity, proc_value); + lb_add_member(m, p->name, proc_value); - LLVMContextRef ctx = LLVMGetModuleContext(module->mod); + LLVMContextRef ctx = LLVMGetModuleContext(m->mod); // NOTE(bill): offset==0 is the return value isize offset = 1; @@ -663,7 +679,6 @@ lbProcedure *lb_create_procedure(lbModule *module, Entity *entity) { } - return p; } @@ -726,7 +741,7 @@ void lb_end_procedure(lbProcedure *p) { lbBlock *lb_create_block(lbProcedure *p, char const *name) { lbBlock *b = gb_alloc_item(heap_allocator(), lbBlock); - b->block = LLVMAppendBasicBlock(p->value, name); + b->block = LLVMAppendBasicBlockInContext(p->module->ctx, p->value, name); b->scope = p->curr_scope; b->scope_index = p->scope_index; array_add(&p->blocks, b); @@ -736,7 +751,7 @@ lbBlock *lb_create_block(lbProcedure *p, char const *name) { lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr) { LLVMPositionBuilderAtEnd(p->builder, p->decl_block->block); - LLVMTypeRef llvm_type = lb_type(type); + LLVMTypeRef llvm_type = lb_type(p->module, type); LLVMValueRef ptr = LLVMBuildAlloca(p->builder, llvm_type, ""); LLVMSetAlignment(ptr, 16); @@ -755,70 +770,11 @@ lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr) { lbAddr lb_add_local_generated(lbProcedure *p, Type *type, bool zero_init) { lbAddr addr = lb_add_local(p, type, nullptr); - lb_addr_store(p, addr, lb_const_nil(type)); + lb_addr_store(p, addr, lb_const_nil(p->module, type)); return addr; } - -bool lb_init_generator(lbGenerator *gen, Checker *c) { - if (global_error_collector.count != 0) { - return false; - } - - isize tc = c->parser->total_token_count; - if (tc < 2) { - return false; - } - - - String init_fullpath = c->parser->init_fullpath; - - if (build_context.out_filepath.len == 0) { - gen->output_name = remove_directory_from_path(init_fullpath); - gen->output_name = remove_extension_from_path(gen->output_name); - gen->output_base = gen->output_name; - } else { - gen->output_name = build_context.out_filepath; - isize pos = string_extension_position(gen->output_name); - if (pos < 0) { - gen->output_base = gen->output_name; - } else { - gen->output_base = substring(gen->output_name, 0, pos); - } - } - gbAllocator ha = heap_allocator(); - gen->output_base = path_to_full_path(ha, gen->output_base); - - gbString output_file_path = gb_string_make_length(ha, gen->output_base.text, gen->output_base.len); - output_file_path = gb_string_appendc(output_file_path, ".obj"); - defer (gb_string_free(output_file_path)); - - gbFileError err = gb_file_create(&gen->output_file, output_file_path); - if (err != gbFileError_None) { - gb_printf_err("Failed to create file %s\n", output_file_path); - return false; - } - - gen->info = &c->info; - gen->module.info = &c->info; - - gen->module.mod = LLVMModuleCreateWithName("odin_module"); - map_init(&gen->module.values, heap_allocator()); - map_init(&gen->module.members, heap_allocator()); - map_init(&gen->module.const_strings, heap_allocator()); - map_init(&gen->module.const_string_byte_slices, heap_allocator()); - - global_module = &gen->module; - - lb_zero32 = LLVMConstInt(lb_type(t_i32), 0, false); - lb_one32 = LLVMConstInt(lb_type(t_i32), 1, false); - - - return true; -} - - void lb_build_stmt_list(lbProcedure *p, Array const &stmts) { for_array(i, stmts) { Ast *stmt = stmts[i]; @@ -842,7 +798,7 @@ lbValue lb_build_gep(lbProcedure *p, lbValue const &value, i32 index) { GB_ASSERT(elem_type != nullptr); - return lbValue{LLVMBuildStructGEP2(p->builder, lb_type(elem_type), value.value, index, ""), elem_type}; + return lbValue{LLVMBuildStructGEP2(p->builder, lb_type(p->module, elem_type), value.value, index, ""), elem_type}; } void lb_build_when_stmt(lbProcedure *p, AstWhenStmt *ws) { @@ -926,7 +882,7 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { char *c_name = alloc_cstring(heap_allocator(), mangled_name); - LLVMValueRef global = LLVMAddGlobal(p->module->mod, lb_type(e->type), c_name); + LLVMValueRef global = LLVMAddGlobal(p->module->mod, lb_type(p->module, e->type), c_name); if (value.value != nullptr) { LLVMSetInitializer(global, value.value); } @@ -974,7 +930,7 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { lbAddr local = lb_add_local(p, e->type, e); addrs[i] = local; if (vd->values.count == 0) { - lb_addr_store(p, addrs[i], lb_const_nil(lb_addr_type(addrs[i]))); + lb_addr_store(p, addrs[i], lb_const_nil(p->module, lb_addr_type(addrs[i]))); } } } @@ -1033,7 +989,7 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { if (res.value != nullptr) { lb_addr_store(p, p->return_ptr, res); } else { - lb_addr_store(p, p->return_ptr, lb_const_nil(p->type->Proc.abi_compat_result_type)); + lb_addr_store(p, p->return_ptr, lb_const_nil(p->module, p->type->Proc.abi_compat_result_type)); } LLVMBuildRetVoid(p->builder); } else { @@ -1065,22 +1021,22 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { } } -lbValue lb_const_nil(Type *type) { - LLVMValueRef v = LLVMConstNull(lb_type(type)); +lbValue lb_const_nil(lbModule *m, Type *type) { + LLVMValueRef v = LLVMConstNull(lb_type(m, type)); return lbValue{v, type}; } -lbValue lb_const_int(Type *type, u64 value) { +lbValue lb_const_int(lbModule *m, Type *type, u64 value) { lbValue res = {}; - res.value = LLVMConstInt(lb_type(type), value, !is_type_unsigned(type)); + res.value = LLVMConstInt(lb_type(m, type), value, !is_type_unsigned(type)); res.type = type; return res; } -LLVMValueRef llvm_const_f32(f32 f, Type *type=t_f32) { +LLVMValueRef llvm_const_f32(lbModule *m, f32 f, Type *type=t_f32) { u32 u = bit_cast(f); - LLVMValueRef i = LLVMConstInt(LLVMInt32Type(), u, false); - return LLVMConstBitCast(i, lb_type(type)); + LLVMValueRef i = LLVMConstInt(LLVMInt32TypeInContext(m->ctx), u, false); + return LLVMConstBitCast(i, lb_type(m, type)); } @@ -1189,12 +1145,14 @@ lbValue lb_typeid(lbModule *m, Type *type, Type *typeid_type=t_typeid) { lbValue res = {}; - res.value = LLVMConstInt(lb_type(typeid_type), data, false); + res.value = LLVMConstInt(lb_type(m, typeid_type), data, false); res.type = typeid_type; return res; } lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { + LLVMContextRef ctx = m->ctx; + Type *original_type = type; lbValue res = {}; @@ -1212,7 +1170,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { isize count = cl->elems.count; if (count == 0) { - return lb_const_nil(type); + return lb_const_nil(m, type); } count = gb_max(cl->max_count, count); Type *elem = base_type(type)->Slice.elem; @@ -1228,7 +1186,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { String name = make_string(str, len-1); Entity *e = alloc_entity_constant(nullptr, make_token_ident(name), t, value); - LLVMValueRef global_data = LLVMAddGlobal(m->mod, lb_type(t), cast(char const *)str); + LLVMValueRef global_data = LLVMAddGlobal(m->mod, lb_type(m, t), cast(char const *)str); LLVMSetInitializer(global_data, backing_array.value); lbValue g = {}; @@ -1239,20 +1197,21 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { lb_add_member(m, name, g); { - LLVMValueRef indices[2] = {lb_zero32, lb_zero32}; + LLVMValueRef indices[2] = {lb_zero32(m), lb_zero32(m)}; LLVMValueRef ptr = LLVMConstInBoundsGEP(global_data, indices, 2); - LLVMValueRef len = LLVMConstInt(lb_type(t_int), count, true); + LLVMValueRef len = LLVMConstInt(lb_type(m, t_int), count, true); LLVMValueRef values[2] = {ptr, len}; - res.value = LLVMConstNamedStruct(lb_type(original_type), values, 2); + res.value = LLVMConstNamedStruct(lb_type(m, original_type), values, 2); return res; } } } else if (is_type_array(type) && value.kind == ExactValue_String && !is_type_u8(core_array_type(type))) { - LLVMValueRef data = LLVMConstString(cast(char const *)value.value_string.text, - cast(unsigned)value.value_string.len, - false); + LLVMValueRef data = LLVMConstStringInContext(ctx, + cast(char const *)value.value_string.text, + cast(unsigned)value.value_string.len, + false); res.value = data; return res; } else if (is_type_array(type) && @@ -1271,16 +1230,16 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { elems[i] = single_elem.value; } - res.value = LLVMConstArray(lb_type(elem), elems, cast(unsigned)count); + res.value = LLVMConstArray(lb_type(m, elem), elems, cast(unsigned)count); return res; } switch (value.kind) { case ExactValue_Invalid: - res.value = LLVMConstNull(lb_type(original_type)); + res.value = LLVMConstNull(lb_type(m, original_type)); return res; case ExactValue_Bool: - res.value = LLVMConstInt(lb_type(original_type), value.value_bool, false); + res.value = LLVMConstInt(lb_type(m, original_type), value.value_bool, false); return res; case ExactValue_String: { @@ -1291,10 +1250,11 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { return res; } - LLVMValueRef indices[2] = {lb_zero32, lb_zero32}; - LLVMValueRef data = LLVMConstString(cast(char const *)value.value_string.text, - cast(unsigned)value.value_string.len, - false); + LLVMValueRef indices[2] = {lb_zero32(m), lb_zero32(m)}; + LLVMValueRef data = LLVMConstStringInContext(ctx, + cast(char const *)value.value_string.text, + cast(unsigned)value.value_string.len, + false); LLVMValueRef global_data = LLVMAddGlobal(m->mod, LLVMTypeOf(data), "test_string_data"); LLVMSetInitializer(global_data, data); @@ -1305,10 +1265,10 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { return res; } - LLVMValueRef len = LLVMConstInt(lb_type(t_int), value.value_string.len, true); + LLVMValueRef len = LLVMConstInt(lb_type(m, t_int), value.value_string.len, true); LLVMValueRef values[2] = {ptr, len}; - res.value = LLVMConstNamedStruct(lb_type(original_type), values, 2); + res.value = LLVMConstNamedStruct(lb_type(m, original_type), values, 2); map_set(&m->const_strings, key, res); @@ -1317,35 +1277,35 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { case ExactValue_Integer: if (is_type_pointer(type)) { - LLVMValueRef i = LLVMConstIntOfArbitraryPrecision(lb_type(t_uintptr), cast(unsigned)value.value_integer.len, big_int_ptr(&value.value_integer)); - res.value = LLVMConstBitCast(i, lb_type(original_type)); + LLVMValueRef i = LLVMConstIntOfArbitraryPrecision(lb_type(m, t_uintptr), cast(unsigned)value.value_integer.len, big_int_ptr(&value.value_integer)); + res.value = LLVMConstBitCast(i, lb_type(m, original_type)); } else { - res.value = LLVMConstIntOfArbitraryPrecision(lb_type(original_type), cast(unsigned)value.value_integer.len, big_int_ptr(&value.value_integer)); + res.value = LLVMConstIntOfArbitraryPrecision(lb_type(m, original_type), cast(unsigned)value.value_integer.len, big_int_ptr(&value.value_integer)); } return res; case ExactValue_Float: if (type_size_of(type) == 4) { f32 f = cast(f32)value.value_float; - res.value = llvm_const_f32(f, type); + res.value = llvm_const_f32(m, f, type); return res; } - res.value = LLVMConstReal(lb_type(original_type), value.value_float); + res.value = LLVMConstReal(lb_type(m, original_type), value.value_float); return res; case ExactValue_Complex: { LLVMValueRef values[2] = {}; switch (8*type_size_of(type)) { case 64: - values[0] = llvm_const_f32(cast(f32)value.value_complex.real); - values[1] = llvm_const_f32(cast(f32)value.value_complex.imag); + values[0] = llvm_const_f32(m, cast(f32)value.value_complex.real); + values[1] = llvm_const_f32(m, cast(f32)value.value_complex.imag); break; case 128: - values[0] = LLVMConstReal(lb_type(t_f64), value.value_complex.real); - values[1] = LLVMConstReal(lb_type(t_f64), value.value_complex.imag); + values[0] = LLVMConstReal(lb_type(m, t_f64), value.value_complex.real); + values[1] = LLVMConstReal(lb_type(m, t_f64), value.value_complex.imag); break; } - res.value = LLVMConstNamedStruct(lb_type(original_type), values, 2); + res.value = LLVMConstNamedStruct(lb_type(m, original_type), values, 2); return res; } break; @@ -1355,27 +1315,27 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { switch (8*type_size_of(type)) { case 128: // @QuaternionLayout - values[3] = llvm_const_f32(cast(f32)value.value_quaternion.real); - values[0] = llvm_const_f32(cast(f32)value.value_quaternion.imag); - values[1] = llvm_const_f32(cast(f32)value.value_quaternion.jmag); - values[2] = llvm_const_f32(cast(f32)value.value_quaternion.kmag); + values[3] = llvm_const_f32(m, cast(f32)value.value_quaternion.real); + values[0] = llvm_const_f32(m, cast(f32)value.value_quaternion.imag); + values[1] = llvm_const_f32(m, cast(f32)value.value_quaternion.jmag); + values[2] = llvm_const_f32(m, cast(f32)value.value_quaternion.kmag); break; case 256: // @QuaternionLayout - values[3] = LLVMConstReal(lb_type(t_f64), value.value_quaternion.real); - values[0] = LLVMConstReal(lb_type(t_f64), value.value_quaternion.imag); - values[1] = LLVMConstReal(lb_type(t_f64), value.value_quaternion.jmag); - values[2] = LLVMConstReal(lb_type(t_f64), value.value_quaternion.kmag); + values[3] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion.real); + values[0] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion.imag); + values[1] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion.jmag); + values[2] = LLVMConstReal(lb_type(m, t_f64), value.value_quaternion.kmag); break; } - res.value = LLVMConstNamedStruct(lb_type(original_type), values, 4); + res.value = LLVMConstNamedStruct(lb_type(m, original_type), values, 4); return res; } break; case ExactValue_Pointer: - res.value = LLVMConstBitCast(LLVMConstInt(lb_type(t_uintptr), value.value_pointer, false), lb_type(original_type)); + res.value = LLVMConstBitCast(LLVMConstInt(lb_type(m, t_uintptr), value.value_pointer, false), lb_type(m, original_type)); return res; case ExactValue_Compound: @@ -1386,7 +1346,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { Type *elem_type = type->Array.elem; isize elem_count = cl->elems.count; if (elem_count == 0) { - return lb_const_nil(original_type); + return lb_const_nil(m, original_type); } if (cl->elems[0]->kind == Ast_FieldValue) { // TODO(bill): This is O(N*M) and will be quite slow; it should probably be sorted before hand @@ -1446,11 +1406,11 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { } if (!found) { - values[value_index++] = LLVMConstNull(lb_type(elem_type)); + values[value_index++] = LLVMConstNull(lb_type(m, elem_type)); } } - res.value = LLVMConstArray(lb_type(elem_type), values, cast(unsigned int)type->Array.count); + res.value = LLVMConstArray(lb_type(m, elem_type), values, cast(unsigned int)type->Array.count); return res; } else { GB_ASSERT_MSG(elem_count == type->Array.count, "%td != %td", elem_count, type->Array.count); @@ -1464,10 +1424,10 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { values[i] = lb_const_value(m, elem_type, tav.value).value; } for (isize i = elem_count; i < type->Array.count; i++) { - values[i] = LLVMConstNull(lb_type(elem_type)); + values[i] = LLVMConstNull(lb_type(m, elem_type)); } - res.value = LLVMConstArray(lb_type(elem_type), values, cast(unsigned int)type->Array.count); + res.value = LLVMConstArray(lb_type(m, elem_type), values, cast(unsigned int)type->Array.count); return res; } } else if (is_type_enumerated_array(type)) { @@ -1475,7 +1435,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { Type *elem_type = type->EnumeratedArray.elem; isize elem_count = cl->elems.count; if (elem_count == 0) { - return lb_const_nil(original_type); + return lb_const_nil(m, original_type); } if (cl->elems[0]->kind == Ast_FieldValue) { // TODO(bill): This is O(N*M) and will be quite slow; it should probably be sorted before hand @@ -1539,11 +1499,11 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { } if (!found) { - values[value_index++] = LLVMConstNull(lb_type(elem_type)); + values[value_index++] = LLVMConstNull(lb_type(m, elem_type)); } } - res.value = LLVMConstArray(lb_type(elem_type), values, cast(unsigned int)type->EnumeratedArray.count); + res.value = LLVMConstArray(lb_type(m, elem_type), values, cast(unsigned int)type->EnumeratedArray.count); return res; } else { GB_ASSERT_MSG(elem_count == type->EnumeratedArray.count, "%td != %td", elem_count, type->EnumeratedArray.count); @@ -1557,10 +1517,10 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { values[i] = lb_const_value(m, elem_type, tav.value).value; } for (isize i = elem_count; i < type->EnumeratedArray.count; i++) { - values[i] = LLVMConstNull(lb_type(elem_type)); + values[i] = LLVMConstNull(lb_type(m, elem_type)); } - res.value = LLVMConstArray(lb_type(elem_type), values, cast(unsigned int)type->EnumeratedArray.count); + res.value = LLVMConstArray(lb_type(m, elem_type), values, cast(unsigned int)type->EnumeratedArray.count); return res; } } else if (is_type_simd_vector(type)) { @@ -1569,7 +1529,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { Type *elem_type = type->SimdVector.elem; isize elem_count = cl->elems.count; if (elem_count == 0) { - return lb_const_nil(original_type); + return lb_const_nil(m, original_type); } isize total_elem_count = type->SimdVector.count; @@ -1582,7 +1542,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { values[i] = lb_const_value(m, elem_type, tav.value).value; } for (isize i = elem_count; i < type->SimdVector.count; i++) { - values[i] = LLVMConstNull(lb_type(elem_type)); + values[i] = LLVMConstNull(lb_type(m, elem_type)); } res.value = LLVMConstVector(values, cast(unsigned)total_elem_count); @@ -1591,7 +1551,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { ast_node(cl, CompoundLit, value.value_compound); if (cl->elems.count == 0) { - return lb_const_nil(type); + return lb_const_nil(m, type); } isize offset = 0; @@ -1640,25 +1600,25 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { for (isize i = 0; i < type->Struct.fields.count; i++) { if (!visited[offset+i]) { GB_ASSERT(values[offset+i] == nullptr); - values[offset+i] = lb_const_nil(type->Struct.fields[i]->type).value; + values[offset+i] = lb_const_nil(m, type->Struct.fields[i]->type).value; } } if (type->Struct.custom_align > 0) { - values[0] = LLVMConstNull(lb_alignment_prefix_type_hack(type->Struct.custom_align)); + values[0] = LLVMConstNull(lb_alignment_prefix_type_hack(m, type->Struct.custom_align)); } - res.value = LLVMConstNamedStruct(lb_type(original_type), values, cast(unsigned)value_count); + res.value = LLVMConstNamedStruct(lb_type(m, original_type), values, cast(unsigned)value_count); return res; } else if (is_type_bit_set(type)) { ast_node(cl, CompoundLit, value.value_compound); if (cl->elems.count == 0) { - return lb_const_nil(original_type); + return lb_const_nil(m, original_type); } i64 sz = type_size_of(type); if (sz == 0) { - return lb_const_nil(original_type); + return lb_const_nil(m, original_type); } u64 bits = 0; @@ -1684,10 +1644,10 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { } } - res.value = LLVMConstInt(lb_type(original_type), bits, false); + res.value = LLVMConstInt(lb_type(m, original_type), bits, false); return res; } else { - return lb_const_nil(original_type); + return lb_const_nil(m, original_type); } break; case ExactValue_Procedure: @@ -1697,7 +1657,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { return lb_typeid(m, value.value_typeid, original_type); } - return lb_const_nil(original_type); + return lb_const_nil(m, original_type); } u64 lb_generate_source_code_location_hash(TokenPos const &pos) { @@ -1711,21 +1671,25 @@ u64 lb_generate_source_code_location_hash(TokenPos const &pos) { } lbValue lb_emit_source_code_location(lbProcedure *p, String const &procedure, TokenPos const &pos) { + lbModule *m = p->module; + LLVMValueRef fields[5] = {}; fields[0]/*file*/ = lb_find_or_add_entity_string(p->module, pos.file).value; - fields[1]/*line*/ = lb_const_int(t_int, pos.line).value; - fields[2]/*column*/ = lb_const_int(t_int, pos.column).value; + fields[1]/*line*/ = lb_const_int(m, t_int, pos.line).value; + fields[2]/*column*/ = lb_const_int(m, t_int, pos.column).value; fields[3]/*procedure*/ = lb_find_or_add_entity_string(p->module, procedure).value; - fields[4]/*hash*/ = lb_const_int(t_u64, lb_generate_source_code_location_hash(pos)).value; + fields[4]/*hash*/ = lb_const_int(m, t_u64, lb_generate_source_code_location_hash(pos)).value; lbValue res = {}; - res.value = LLVMConstNamedStruct(lb_type(t_source_code_location), fields, 5); + res.value = LLVMConstNamedStruct(lb_type(m, t_source_code_location), fields, 5); res.type = t_source_code_location; return res; } lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Type *type) { + lbModule *m = p->module; + lbValue res = {}; res.type = type; @@ -1804,7 +1768,7 @@ lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Ty return res; case Token_AndNot: { - LLVMValueRef all_ones = LLVMConstAllOnes(lb_type(type)); + LLVMValueRef all_ones = LLVMConstAllOnes(lb_type(m, type)); LLVMValueRef new_rhs = LLVMBuildXor(p->builder, all_ones, rhs.value, ""); res.value = LLVMBuildAnd(p->builder, lhs.value, new_rhs, ""); return res; @@ -1852,10 +1816,344 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { return value; } -lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, ProcInlining inlining = ProcInlining_none, bool use_return_ptr_hint = false) { +lbValue lb_emit_transmute(lbProcedure *p, lbValue value, Type *t) { + // TODO(bill): lb_emit_transmute + return value; +} + + +void lb_emit_init_context(lbProcedure *p, lbValue c) { + lbModule *m = p->module; + gbAllocator a = heap_allocator(); + auto args = array_make(a, 1); + args[0] = c.value != nullptr ? c : m->global_default_context.addr; + // ir_emit_runtime_call(p, "__init_context", args); +} + +void lb_push_context_onto_stack(lbProcedure *p, lbAddr ctx) { + lbContextData cd = {ctx, p->scope_index}; + array_add(&p->context_stack, cd); +} + + +lbAddr lb_find_or_generate_context_ptr(lbProcedure *p) { + if (p->context_stack.count > 0) { + return p->context_stack[p->context_stack.count-1].ctx; + } + + lbBlock *tmp_block = p->curr_block; + p->curr_block = p->blocks[0]; + + defer (p->curr_block = tmp_block); + + lbAddr c = lb_add_local_generated(p, t_context, true); + lb_push_context_onto_stack(p, c); + lb_addr_store(p, c, lb_addr_load(p, p->module->global_default_context)); + lb_emit_init_context(p, c.addr); + return c; +} + +lbValue lb_address_from_load_or_generate_local(lbProcedure *p, lbValue value) { + if (LLVMIsALoadInst(value.value)) { + lbValue res = {}; + res.value = LLVMGetOperand(value.value, 0); + res.type = alloc_type_pointer(value.type); + return res; + } + + lbAddr res = lb_add_local_generated(p, value.type, false); + lb_addr_store(p, res, value); + return res.addr; +} + +lbValue lb_copy_value_to_ptr(lbProcedure *p, lbValue val, Type *new_type, i64 alignment) { + i64 type_alignment = type_align_of(new_type); + if (alignment < type_alignment) { + alignment = type_alignment; + } + GB_ASSERT_MSG(are_types_identical(new_type, val.type), "%s %s", type_to_string(new_type), type_to_string(val.type)); + + lbAddr ptr = lb_add_local_generated(p, new_type, false); + LLVMSetAlignment(ptr.addr.value, cast(unsigned)alignment); + lb_addr_store(p, ptr, val); + + return ptr.addr; +} + +lbValue lb_emit_struct_ep(lbProcedure *p, lbValue s, i32 index) { return {}; } +lbValue lb_emit_struct_ev(lbProcedure *p, lbValue s, i32 index) { + if (LLVMIsALoadInst(s.value)) { + lbValue res = {}; + res.value = LLVMGetOperand(s.value, 0); + res.type = alloc_type_pointer(s.type); + lbValue ptr = lb_emit_struct_ep(p, res, index); + return lb_emit_load(p, ptr); + } + + gbAllocator a = heap_allocator(); + Type *t = base_type(s.type); + Type *result_type = nullptr; + + switch (t->kind) { + case Type_Basic: + switch (t->Basic.kind) { + case Basic_string: + switch (index) { + case 0: result_type = t_u8_ptr; break; + case 1: result_type = t_int; break; + } + break; + case Basic_any: + switch (index) { + case 0: result_type = t_rawptr; break; + case 1: result_type = t_typeid; break; + } + break; + case Basic_complex64: case Basic_complex128: + { + Type *ft = base_complex_elem_type(t); + switch (index) { + case 0: result_type = ft; break; + case 1: result_type = ft; break; + } + break; + } + case Basic_quaternion128: case Basic_quaternion256: + { + Type *ft = base_complex_elem_type(t); + switch (index) { + case 0: result_type = ft; break; + case 1: result_type = ft; break; + case 2: result_type = ft; break; + case 3: result_type = ft; break; + } + break; + } + } + break; + case Type_Struct: + result_type = t->Struct.fields[index]->type; + break; + case Type_Union: + GB_ASSERT(index == -1); + // return lb_emit_union_tag_value(proc, s); + GB_PANIC("lb_emit_union_tag_value"); + + case Type_Tuple: + GB_ASSERT(t->Tuple.variables.count > 0); + result_type = t->Tuple.variables[index]->type; + break; + case Type_Slice: + switch (index) { + case 0: result_type = alloc_type_pointer(t->Slice.elem); break; + case 1: result_type = t_int; break; + } + break; + case Type_DynamicArray: + switch (index) { + case 0: result_type = alloc_type_pointer(t->DynamicArray.elem); break; + case 1: result_type = t_int; break; + case 2: result_type = t_int; break; + case 3: result_type = t_allocator; break; + } + break; + + case Type_Map: + { + init_map_internal_types(t); + Type *gst = t->Map.generated_struct_type; + switch (index) { + case 0: result_type = gst->Struct.fields[0]->type; break; + case 1: result_type = gst->Struct.fields[1]->type; break; + } + } + break; + + case Type_Array: + result_type = t->Array.elem; + break; + + default: + GB_PANIC("TODO(bill): struct_ev type: %s, %d", type_to_string(s.type), index); + break; + } + + GB_ASSERT_MSG(result_type != nullptr, "%s, %d", type_to_string(s.type), index); + + + lbValue res = {}; + res.value = LLVMBuildExtractValue(p->builder, s.value, cast(unsigned)index, ""); + res.type = result_type; + return res; +} + + +lbValue lb_emit_call_internal(lbProcedure *p, lbValue value, lbValue return_ptr, Array const &processed_args, Type *abi_rt, lbAddr context_ptr, ProcInlining inlining) { + unsigned arg_count = cast(unsigned)processed_args.count; + if (return_ptr.value != nullptr) { + arg_count += 1; + } + if (context_ptr.addr.value != nullptr) { + arg_count += 1; + } + + LLVMValueRef *args = gb_alloc_array(heap_allocator(), LLVMValueRef, arg_count); + isize arg_index = 0; + if (return_ptr.value != nullptr) { + args[arg_index++] = return_ptr.value; + } + for_array(i, processed_args) { + lbValue arg = processed_args[i]; + args[arg_index++] = arg.value; + } + if (context_ptr.addr.value != nullptr) { + args[arg_index++] = context_ptr.addr.value; + } + + + lbValue res = {}; + res.value = LLVMBuildCall(p->builder, value.value, args, arg_count, ""); + res.type = abi_rt; + return res; +} + +lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, ProcInlining inlining = ProcInlining_none, bool use_return_ptr_hint = false) { + lbModule *m = p->module; + + Type *pt = base_type(value.type); + GB_ASSERT(pt->kind == Type_Proc); + Type *results = pt->Proc.results; + + if (p->entity != nullptr) { + if (p->entity->flags & EntityFlag_Disabled) { + return {}; + } + } + + lbAddr context_ptr = {}; + if (pt->Proc.calling_convention == ProcCC_Odin) { + context_ptr = lb_find_or_generate_context_ptr(p); + } + + set_procedure_abi_types(heap_allocator(), pt); + + bool is_c_vararg = pt->Proc.c_vararg; + isize param_count = pt->Proc.param_count; + if (is_c_vararg) { + GB_ASSERT(param_count-1 <= args.count); + param_count -= 1; + } else { + GB_ASSERT_MSG(param_count == args.count, "%td == %td", param_count, args.count); + } + + auto processed_args = array_make(heap_allocator(), 0, args.count); + + for (isize i = 0; i < param_count; i++) { + Entity *e = pt->Proc.params->Tuple.variables[i]; + if (e->kind != Entity_Variable) { + array_add(&processed_args, args[i]); + continue; + } + GB_ASSERT(e->flags & EntityFlag_Param); + + Type *original_type = e->type; + Type *new_type = pt->Proc.abi_compat_params[i]; + Type *arg_type = args[i].type; + if (are_types_identical(arg_type, new_type)) { + // NOTE(bill): Done + array_add(&processed_args, args[i]); + } else if (!are_types_identical(original_type, new_type)) { + if (is_type_pointer(new_type) && !is_type_pointer(original_type)) { + if (e->flags&EntityFlag_ImplicitReference) { + array_add(&processed_args, lb_address_from_load_or_generate_local(p, args[i])); + } else if (!is_type_pointer(arg_type)) { + array_add(&processed_args, lb_copy_value_to_ptr(p, args[i], original_type, 16)); + } + } else if (is_type_integer(new_type) || is_type_float(new_type)) { + array_add(&processed_args, lb_emit_transmute(p, args[i], new_type)); + } else if (new_type == t_llvm_bool) { + array_add(&processed_args, lb_emit_conv(p, args[i], new_type)); + } else if (is_type_simd_vector(new_type)) { + array_add(&processed_args, lb_emit_transmute(p, args[i], new_type)); + } else if (is_type_tuple(new_type)) { + Type *abi_type = pt->Proc.abi_compat_params[i]; + Type *st = struct_type_from_systemv_distribute_struct_fields(abi_type); + lbValue x = lb_emit_transmute(p, args[i], st); + for (isize j = 0; j < new_type->Tuple.variables.count; j++) { + lbValue xx = lb_emit_struct_ev(p, x, cast(i32)j); + array_add(&processed_args, xx); + } + } + } else { + lbValue x = lb_emit_conv(p, args[i], new_type); + array_add(&processed_args, x); + } + } + + if (inlining == ProcInlining_none) { + inlining = p->inlining; + } + + lbValue result = {}; + + Type *abi_rt = pt->Proc.abi_compat_result_type; + Type *rt = reduce_tuple_to_single_type(results); + if (pt->Proc.return_by_pointer) { + lbValue return_ptr = {}; + if (use_return_ptr_hint && p->return_ptr_hint_value.value != nullptr) { + if (are_types_identical(type_deref(p->return_ptr_hint_value.type), rt)) { + return_ptr = p->return_ptr_hint_value; + p->return_ptr_hint_used = true; + } + } + if (return_ptr.value == nullptr) { + lbAddr r = lb_add_local_generated(p, rt, true); + return_ptr = r.addr; + } + GB_ASSERT(is_type_pointer(return_ptr.type)); + lb_emit_call_internal(p, value, return_ptr, processed_args, nullptr, context_ptr, inlining); + result = lb_emit_load(p, return_ptr); + } else { + lb_emit_call_internal(p, value, {}, processed_args, abi_rt, context_ptr, inlining); + if (abi_rt != results) { + result = lb_emit_transmute(p, result, rt); + } + } + + // if (value->kind == irValue_Proc) { + // lbProcedure *the_proc = &value->Proc; + // Entity *e = the_proc->entity; + // if (e != nullptr && entity_has_deferred_procedure(e)) { + // DeferredProcedureKind kind = e->Procedure.deferred_procedure.kind; + // Entity *deferred_entity = e->Procedure.deferred_procedure.entity; + // lbValue *deferred_found = map_get(&p->module->values, hash_entity(deferred_entity)); + // GB_ASSERT(deferred_found != nullptr); + // lbValue deferred = *deferred_found; + + + // auto in_args = args; + // Array result_as_args = {}; + // switch (kind) { + // case DeferredProcedure_none: + // break; + // case DeferredProcedure_in: + // result_as_args = in_args; + // break; + // case DeferredProcedure_out: + // result_as_args = ir_value_to_array(p, result); + // break; + // } + + // ir_add_defer_proc(p, p->scope_index, deferred, result_as_args); + // } + // } + + return result; +} + lbValue lb_emit_ev(lbProcedure *p, lbValue value, i32 index) { return {}; } @@ -1870,6 +2168,8 @@ void lb_fill_slice(lbProcedure *p, lbAddr slice, lbValue base_elem, lbValue len) lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { + lbModule *m = p->module; + TypeAndValue tv = type_and_value_of_expr(expr); ast_node(ce, CallExpr, expr); @@ -1906,7 +2206,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { { u64 u = big_int_to_u64(&v.value_integer); lbValue x = {}; - x.value = LLVMConstInt(lb_type(t_uintptr), u, false); + x.value = LLVMConstInt(lb_type(m, t_uintptr), u, false); x.type = t_uintptr; x = lb_emit_conv(p, x, t_rawptr); value = lb_emit_conv(p, x, proc_expr->tav.type); @@ -1916,7 +2216,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { { u64 u = cast(u64)v.value_pointer; lbValue x = {}; - x.value = LLVMConstInt(lb_type(t_uintptr), u, false); + x.value = LLVMConstInt(lb_type(m, t_uintptr), u, false); x.type = t_uintptr; x = lb_emit_conv(p, x, t_rawptr); value = lb_emit_conv(p, x, proc_expr->tav.type); @@ -1947,7 +2247,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { GB_ASSERT(index >= 0); TypeAndValue tav = type_and_value_of_expr(fv->value); if (tav.mode == Addressing_Type) { - args[index] = lb_const_nil(tav.type); + args[index] = lb_const_nil(m, tav.type); } else { args[index] = lb_build_expr(p, fv->value); } @@ -1956,7 +2256,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { for (isize i = 0; i < args.count; i++) { Entity *e = params->variables[i]; if (e->kind == Entity_TypeName) { - args[i] = lb_const_nil(e->type); + args[i] = lb_const_nil(m, e->type); } else if (e->kind == Entity_Constant) { continue; } else { @@ -1967,7 +2267,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { args[i] = lb_const_value(p->module, e->type, e->Variable.param_value.value); break; case ParameterValue_Nil: - args[i] = lb_const_nil(e->type); + args[i] = lb_const_nil(m, e->type); break; case ParameterValue_Location: args[i] = lb_emit_source_code_location(p, p->entity->token.string, ast_token(expr).pos); @@ -2029,7 +2329,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { Ast *arg = ce->args[i]; TypeAndValue arg_tv = type_and_value_of_expr(arg); if (arg_tv.mode == Addressing_Type) { - args[arg_index++] = lb_const_nil(arg_tv.type); + args[arg_index++] = lb_const_nil(m, arg_tv.type); } else { lbValue a = lb_build_expr(p, arg); Type *at = a.type; @@ -2064,7 +2364,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { args[arg_index++] = lb_const_value(p->module, e->type, e->Variable.param_value.value); break; case ParameterValue_Nil: - args[arg_index++] = lb_const_nil(e->type); + args[arg_index++] = lb_const_nil(m, e->type); break; case ParameterValue_Location: args[arg_index++] = lb_emit_source_code_location(p, proc_name, pos); @@ -2141,7 +2441,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { } lbValue base_elem = lb_emit_array_epi(p, base_array.addr, 0); - lbValue len = lb_const_int(t_int, slice_len); + lbValue len = lb_const_int(m, t_int, slice_len); lb_fill_slice(p, slice, base_elem, len); } @@ -2158,7 +2458,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { args[i] = lb_const_value(p->module, e->type, e->Variable.param_value.value); break; case ParameterValue_Nil: - args[i] = lb_const_nil(e->type); + args[i] = lb_const_nil(m, e->type); break; case ParameterValue_Location: args[i] = lb_emit_source_code_location(p, proc_name, pos); @@ -2181,6 +2481,8 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { lbValue lb_build_expr(lbProcedure *p, Ast *expr) { + lbModule *m = p->module; + expr = unparen_expr(expr); TypeAndValue tv = type_and_value_of_expr(expr); @@ -2210,7 +2512,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { case_end; case_ast_node(u, Undef, expr); - return lbValue{LLVMGetUndef(lb_type(tv.type)), tv.type}; + return lbValue{LLVMGetUndef(lb_type(m, tv.type)), tv.type}; case_end; case_ast_node(i, Ident, expr); @@ -2223,7 +2525,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { LIT(token.pos.file), token.pos.line, token.pos.column); return {}; } else if (e->kind == Entity_Nil) { - return lb_const_nil(tv.type); + return lb_const_nil(m, tv.type); } auto *found = map_get(&p->module->values, hash_entity(e)); @@ -2257,6 +2559,82 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { +bool lb_init_generator(lbGenerator *gen, Checker *c) { + if (global_error_collector.count != 0) { + return false; + } + + isize tc = c->parser->total_token_count; + if (tc < 2) { + return false; + } + + + String init_fullpath = c->parser->init_fullpath; + + if (build_context.out_filepath.len == 0) { + gen->output_name = remove_directory_from_path(init_fullpath); + gen->output_name = remove_extension_from_path(gen->output_name); + gen->output_base = gen->output_name; + } else { + gen->output_name = build_context.out_filepath; + isize pos = string_extension_position(gen->output_name); + if (pos < 0) { + gen->output_base = gen->output_name; + } else { + gen->output_base = substring(gen->output_name, 0, pos); + } + } + gbAllocator ha = heap_allocator(); + gen->output_base = path_to_full_path(ha, gen->output_base); + + gbString output_file_path = gb_string_make_length(ha, gen->output_base.text, gen->output_base.len); + output_file_path = gb_string_appendc(output_file_path, ".obj"); + defer (gb_string_free(output_file_path)); + + gbFileError err = gb_file_create(&gen->output_file, output_file_path); + if (err != gbFileError_None) { + gb_printf_err("Failed to create file %s\n", output_file_path); + return false; + } + + + gen->info = &c->info; + gen->module.info = &c->info; + + // gen->ctx = LLVMContextCreate(); + gen->module.ctx = LLVMGetGlobalContext(); + gen->module.mod = LLVMModuleCreateWithNameInContext("odin_module", gen->module.ctx); + map_init(&gen->module.types, heap_allocator()); + map_init(&gen->module.values, heap_allocator()); + map_init(&gen->module.members, heap_allocator()); + map_init(&gen->module.const_strings, heap_allocator()); + map_init(&gen->module.const_string_byte_slices, heap_allocator()); + + return true; +} + +lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value={}) { + GB_ASSERT(type != nullptr); + type = default_type(type); + + isize max_len = 7+8+1; + u8 *str = cast(u8 *)gb_alloc_array(heap_allocator(), u8, max_len); + isize len = gb_snprintf(cast(char *)str, max_len, "ggv$%x", m->global_generated_index); + m->global_generated_index++; + String name = make_string(str, len-1); + + Scope *scope = nullptr; + Entity *e = alloc_entity_variable(scope, make_token_ident(name), type); + lbValue g = {}; + g.type = alloc_type_pointer(type); + g.value = LLVMAddGlobal(m->mod, lb_type(m, type), cast(char const *)str); + lb_add_entity(m, e, g); + lb_add_member(m, name, g); + return lb_addr(g); +} + + void lb_generate_module(lbGenerator *gen) { lbModule *m = &gen->module; LLVMModuleRef mod = gen->module.mod; @@ -2266,10 +2644,107 @@ void lb_generate_module(lbGenerator *gen) { arena_init(&temp_arena, heap_allocator()); gbAllocator temp_allocator = arena_allocator(&temp_arena); - Entity *entry_point = info->entry_point; + gen->module.global_default_context = lb_add_global_generated(m, t_context, {}); + auto *min_dep_set = &info->minimum_dependency_set; + + isize global_variable_max_count = 0; + Entity *entry_point = info->entry_point; + bool has_dll_main = false; + bool has_win_main = false; + + for_array(i, info->entities) { + Entity *e = info->entities[i]; + String name = e->token.string; + + bool is_global = e->pkg != nullptr; + + if (e->kind == Entity_Variable) { + global_variable_max_count++; + } else if (e->kind == Entity_Procedure && !is_global) { + if ((e->scope->flags&ScopeFlag_Init) && name == "main") { + GB_ASSERT(e == entry_point); + // entry_point = e; + } + if (e->Procedure.is_export || + (e->Procedure.link_name.len > 0) || + ((e->scope->flags&ScopeFlag_File) && e->Procedure.link_name.len > 0)) { + if (!has_dll_main && name == "DllMain") { + has_dll_main = true; + } else if (!has_win_main && name == "WinMain") { + has_win_main = true; + } + } + } + } + + struct GlobalVariable { + lbValue var; + lbValue init; + DeclInfo *decl; + }; + auto global_variables = array_make(heap_allocator(), 0, global_variable_max_count); + + for_array(i, info->variable_init_order) { + DeclInfo *d = info->variable_init_order[i]; + + Entity *e = d->entity; + + if ((e->scope->flags & ScopeFlag_File) == 0) { + continue; + } + + if (!ptr_set_exists(min_dep_set, e)) { + continue; + } + DeclInfo *decl = decl_info_of_entity(e); + if (decl == nullptr) { + continue; + } + GB_ASSERT(e->kind == Entity_Variable); + + bool is_foreign = e->Variable.is_foreign; + bool is_export = e->Variable.is_export; + + String name = lb_get_entity_name(m, e); + + if (true) { + continue; + } + + lbValue g = {}; + g.value = LLVMAddGlobal(m->mod, lb_type(m, e->type), alloc_cstring(heap_allocator(), name)); + g.type = alloc_type_pointer(e->type); + // lbValue g = ir_value_global(e, nullptr); + // g->Global.name = name; + // g->Global.thread_local_model = e->Variable.thread_local_model; + // g->Global.is_foreign = is_foreign; + // g->Global.is_export = is_export; + + GlobalVariable var = {}; + var.var = g; + var.decl = decl; + + if (decl->init_expr != nullptr && !is_type_any(e->type)) { + TypeAndValue tav = type_and_value_of_expr(decl->init_expr); + if (tav.mode != Addressing_Invalid) { + if (tav.value.kind != ExactValue_Invalid) { + ExactValue v = tav.value; + lbValue init = lb_const_value(m, tav.type, v); + LLVMSetInitializer(g.value, init.value); + } + } + } + + array_add(&global_variables, var); + + lb_add_entity(m, e, g); + lb_add_member(m, name, g); + } + + for_array(i, info->entities) { // arena_free_all(&temp_arena); // gbAllocator a = temp_allocator; @@ -2311,30 +2786,34 @@ void lb_generate_module(lbGenerator *gen) { continue; } - String mangled_name = lb_get_entity_name(m, e); - - if (e->pkg->name != "demo") { + if (is_type_polymorphic(e->type)) { continue; } + String mangled_name = lb_get_entity_name(m, e); + switch (e->kind) { case Entity_TypeName: + lb_type(m, e->type); break; case Entity_Procedure: - break; - } + { + if (e->pkg->name != "demo") { + continue; + } - if (e->kind == Entity_Procedure) { - lbProcedure *p = lb_create_procedure(m, e); + lbProcedure *p = lb_create_procedure(m, e); - if (p->body != nullptr) { // Build Procedure - lb_begin_procedure_body(p); - lb_build_stmt(p, p->body); - lb_end_procedure_body(p); + if (p->body != nullptr) { // Build Procedure + lb_begin_procedure_body(p); + lb_build_stmt(p, p->body); + lb_end_procedure_body(p); + } + + lb_end_procedure(p); } - - lb_end_procedure(p); + break; } } diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp new file mode 100644 index 000000000..a9fd6de7e --- /dev/null +++ b/src/llvm_backend.hpp @@ -0,0 +1,231 @@ +#include "llvm-c/Core.h" +#include "llvm-c/ExecutionEngine.h" +#include "llvm-c/Target.h" +#include "llvm-c/Analysis.h" +#include "llvm-c/Object.h" +#include "llvm-c/BitWriter.h" +#include "llvm-c/Transforms/AggressiveInstCombine.h" +#include "llvm-c/Transforms/InstCombine.h" +#include "llvm-c/Transforms/IPO.h" + +struct lbValue { + LLVMValueRef value; + Type *type; +}; + + +enum lbAddrKind { + lbAddr_Default, + lbAddr_Map, + lbAddr_BitField, + lbAddr_Context, + lbAddr_SoaVariable, +}; + +struct lbAddr { + lbAddrKind kind; + lbValue addr; + union { + struct { + lbValue key; + Type *type; + Type *result; + } map; + struct { + i32 value_index; + } bit_field; + struct { + Selection sel; + } ctx; + struct { + lbValue index; + Ast *index_expr; + } soa; + }; +}; + +struct lbModule { + LLVMModuleRef mod; + LLVMContextRef ctx; + CheckerInfo *info; + + Map types; // Key: Type * + + Map values; // Key: Entity * + Map members; // Key: String + + Map const_strings; // Key: String + Map const_string_byte_slices; // Key: String + + lbAddr global_default_context; + + u32 global_array_index; + u32 global_generated_index; +}; + +struct lbGenerator { + lbModule module; + CheckerInfo *info; + + gbFile output_file; + String output_base; + String output_name; +}; + + +struct lbBlock { + LLVMBasicBlockRef block; + Scope *scope; + isize scope_index; +}; + +struct lbBranchBlocks { + Ast *label; + lbBlock *break_; + lbBlock *continue_; +}; + +enum lbCallingConventionKind { + lbCallingConvention_C = 0, + lbCallingConvention_Fast = 8, + lbCallingConvention_Cold = 9, + lbCallingConvention_GHC = 10, + lbCallingConvention_HiPE = 11, + lbCallingConvention_WebKit_JS = 12, + lbCallingConvention_AnyReg = 13, + lbCallingConvention_PreserveMost = 14, + lbCallingConvention_PreserveAll = 15, + lbCallingConvention_Swift = 16, + lbCallingConvention_CXX_FAST_TLS = 17, + lbCallingConvention_FirstTargetCC = 64, + lbCallingConvention_X86_StdCall = 64, + lbCallingConvention_X86_FastCall = 65, + lbCallingConvention_ARM_APCS = 66, + lbCallingConvention_ARM_AAPCS = 67, + lbCallingConvention_ARM_AAPCS_VFP = 68, + lbCallingConvention_MSP430_INTR = 69, + lbCallingConvention_X86_ThisCall = 70, + lbCallingConvention_PTX_Kernel = 71, + lbCallingConvention_PTX_Device = 72, + lbCallingConvention_SPIR_FUNC = 75, + lbCallingConvention_SPIR_KERNEL = 76, + lbCallingConvention_Intel_OCL_BI = 77, + lbCallingConvention_X86_64_SysV = 78, + lbCallingConvention_Win64 = 79, + lbCallingConvention_X86_VectorCall = 80, + lbCallingConvention_HHVM = 81, + lbCallingConvention_HHVM_C = 82, + lbCallingConvention_X86_INTR = 83, + lbCallingConvention_AVR_INTR = 84, + lbCallingConvention_AVR_SIGNAL = 85, + lbCallingConvention_AVR_BUILTIN = 86, + lbCallingConvention_AMDGPU_VS = 87, + lbCallingConvention_AMDGPU_GS = 88, + lbCallingConvention_AMDGPU_PS = 89, + lbCallingConvention_AMDGPU_CS = 90, + lbCallingConvention_AMDGPU_KERNEL = 91, + lbCallingConvention_X86_RegCall = 92, + lbCallingConvention_AMDGPU_HS = 93, + lbCallingConvention_MSP430_BUILTIN = 94, + lbCallingConvention_AMDGPU_LS = 95, + lbCallingConvention_AMDGPU_ES = 96, + lbCallingConvention_AArch64_VectorCall = 97, + lbCallingConvention_MaxID = 1023, +}; + +lbCallingConventionKind const lb_calling_convention_map[ProcCC_MAX] = { + lbCallingConvention_C, // ProcCC_Invalid, + lbCallingConvention_C, // ProcCC_Odin, + lbCallingConvention_C, // ProcCC_Contextless, + lbCallingConvention_C, // ProcCC_CDecl, + lbCallingConvention_X86_StdCall, // ProcCC_StdCall, + lbCallingConvention_X86_FastCall, // ProcCC_FastCall, + + lbCallingConvention_C, // ProcCC_None, +}; + +struct lbContextData { + lbAddr ctx; + isize scope_index; +}; + + +struct lbProcedure { + lbProcedure *parent; + Array children; + + Entity * entity; + lbModule * module; + String name; + Type * type; + Ast * type_expr; + Ast * body; + u64 tags; + ProcInlining inlining; + bool is_foreign; + bool is_export; + bool is_entry_point; + + + LLVMValueRef value; + LLVMBuilderRef builder; + + lbAddr return_ptr; + Array params; + Array blocks; + Array branch_blocks; + Scope * curr_scope; + i32 scope_index; + lbBlock * decl_block; + lbBlock * entry_block; + lbBlock * curr_block; + + Array context_stack; + + lbValue return_ptr_hint_value; + Ast * return_ptr_hint_ast; + bool return_ptr_hint_used; +}; + + +bool lb_init_generator(lbGenerator *gen, Checker *c); +void lb_generate_module(lbGenerator *gen); + +String lb_mangle_name(lbModule *m, Entity *e); +String lb_get_entity_name(lbModule *m, Entity *e, String name = {}); + +LLVMAttributeRef lb_create_enum_attribute(LLVMContextRef ctx, char const *name, u64 value); +void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *name, u64 value); +void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *name); +lbProcedure *lb_create_procedure(lbModule *module, Entity *entity); +void lb_end_procedure(lbProcedure *p); + + +LLVMTypeRef lb_type(lbModule *m, Type *type); + +lbBlock *lb_create_block(lbProcedure *p, char const *name); + +lbValue lb_const_nil(lbModule *m, Type *type); +lbValue lb_const_value(lbModule *m, Type *type, ExactValue value); + + +lbAddr lb_addr(lbValue addr); +Type *lb_addr_type(lbAddr const &addr); +LLVMTypeRef lb_addr_lb_type(lbAddr const &addr); +void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue const &value); +lbValue lb_addr_load(lbProcedure *p, lbAddr const &addr); +lbValue lb_emit_load(lbProcedure *p, lbValue v); + +void lb_build_stmt (lbProcedure *p, Ast *stmt); +lbValue lb_build_expr (lbProcedure *p, Ast *expr); +void lb_build_stmt_list(lbProcedure *p, Array const &stmts); + +lbValue lb_build_gep(lbProcedure *p, lbValue const &value, i32 index) ; + + +lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Type *type); + + + +lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t); +lbValue lb_build_call_expr(lbProcedure *p, Ast *expr); diff --git a/src/parser.hpp b/src/parser.hpp index cdfd4eba1..28c5d880a 100644 --- a/src/parser.hpp +++ b/src/parser.hpp @@ -174,12 +174,10 @@ enum ProcCallingConvention { ProcCC_StdCall, ProcCC_FastCall, - // TODO(bill): Add extra calling conventions - // ProcCC_VectorCall, - // ProcCC_ClrCall, - ProcCC_None, + ProcCC_MAX, + ProcCC_ForeignBlockDefault = -1, }; diff --git a/src/types.cpp b/src/types.cpp index a6f1e2ae5..fde8cd5a5 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -301,7 +301,6 @@ struct Type { i64 cached_size; i64 cached_align; u32 flags; // TypeFlag - LLVMTypeRef llvm_type; bool failure; }; From 992858b687d9ff53b53239864114ff7ece22449d Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Feb 2020 22:39:23 +0000 Subject: [PATCH 07/46] Add ReturnStmt --- src/llvm_backend.cpp | 1616 +++++++++++++++++++++++++++++++++++++++++- src/llvm_backend.hpp | 26 +- src/types.cpp | 14 +- 3 files changed, 1627 insertions(+), 29 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index c036da85c..5d9d0b544 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -452,7 +452,9 @@ LLVMTypeRef lb_type_internal(lbModule *m, Type *type) { return lb_type(m, base_enum_type(type)); case Type_Tuple: - { + if (type->Tuple.variables.count == 1) { + return lb_type(m, type->Tuple.variables[0]->type); + } else { unsigned field_count = cast(unsigned)(type->Tuple.variables.count); LLVMTypeRef *fields = gb_alloc_array(heap_allocator(), LLVMTypeRef, field_count); defer (gb_free(heap_allocator(), fields)); @@ -682,6 +684,103 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity) { return p; } +lbValue lb_value_param(lbProcedure *p, Entity *e, Type *abi_type, i32 index, lbParamPasskind *kind_) { + lbParamPasskind kind = lbParamPass_Value; + + if (e != nullptr && abi_type != e->type) { + if (is_type_pointer(abi_type)) { + GB_ASSERT(e->kind == Entity_Variable); + kind = lbParamPass_Pointer; + if (e->flags&EntityFlag_Value) { + kind = lbParamPass_ConstRef; + } + } else if (is_type_integer(abi_type)) { + kind = lbParamPass_Integer; + } else if (abi_type == t_llvm_bool) { + kind = lbParamPass_Value; + } else if (is_type_simd_vector(abi_type)) { + kind = lbParamPass_BitCast; + } else if (is_type_float(abi_type)) { + kind = lbParamPass_BitCast; + } else if (is_type_tuple(abi_type)) { + kind = lbParamPass_Tuple; + } else { + GB_PANIC("Invalid abi type pass kind %s", type_to_string(abi_type)); + } + } + + if (kind_) *kind_ = kind; + lbValue res = {}; + res.value = LLVMGetParam(p->value, cast(unsigned)index); + res.type = abi_type; + return res; +} + +lbValue lb_add_param(lbProcedure *p, Entity *e, Ast *expr, Type *abi_type, i32 index) { + lbParamPasskind kind = lbParamPass_Value; + lbValue v = lb_value_param(p, e, abi_type, index, &kind); + array_add(&p->params, v); + + lbValue res = {}; + + switch (kind) { + case lbParamPass_Value: { + lbAddr l = lb_add_local(p, e->type, e, false, index); + lbValue x = v; + if (abi_type == t_llvm_bool) { + x = lb_emit_conv(p, x, t_bool); + } + lb_addr_store(p, l, x); + return x; + } + case lbParamPass_Pointer: + lb_add_entity(p->module, e, v); + return lb_emit_load(p, v); + + case lbParamPass_Integer: { + lbAddr l = lb_add_local(p, e->type, e, false, index); + lbValue iptr = lb_emit_conv(p, l.addr, alloc_type_pointer(p->type)); + lb_emit_store(p, iptr, v); + return lb_addr_load(p, l); + } + + case lbParamPass_ConstRef: + lb_add_entity(p->module, e, v); + return lb_emit_load(p, v); + + case lbParamPass_BitCast: { + lbAddr l = lb_add_local(p, e->type, e, false, index); + lbValue x = lb_emit_transmute(p, v, e->type); + lb_addr_store(p, l, x); + return x; + } + case lbParamPass_Tuple: { + lbAddr l = lb_add_local(p, e->type, e, true, index); + Type *st = struct_type_from_systemv_distribute_struct_fields(abi_type); + lbValue ptr = lb_emit_transmute(p, l.addr, alloc_type_pointer(st)); + if (abi_type->Tuple.variables.count > 0) { + array_pop(&p->params); + } + for_array(i, abi_type->Tuple.variables) { + Type *t = abi_type->Tuple.variables[i]->type; + + lbParamPasskind elem_kind = lbParamPass_Value; + lbValue elem = lb_value_param(p, nullptr, t, index+cast(i32)i, &elem_kind); + array_add(&p->params, elem); + + lbValue dst = lb_emit_struct_ep(p, ptr, cast(i32)i); + lb_emit_store(p, dst, elem); + } + return lb_addr_load(p, l); + } + + } + + GB_PANIC("Unreachable"); + return {}; +} + + void lb_begin_procedure_body(lbProcedure *p) { DeclInfo *decl = decl_info_of_entity(p->entity); if (decl != nullptr) { @@ -702,6 +801,8 @@ void lb_begin_procedure_body(lbProcedure *p) { GB_ASSERT(p->type != nullptr); + i32 parameter_index = 0; + if (p->type->Proc.return_by_pointer) { // NOTE(bill): this must be parameter 0 Type *ptr_type = alloc_type_pointer(reduce_tuple_to_single_type(p->type->Proc.results)); @@ -714,9 +815,124 @@ void lb_begin_procedure_body(lbProcedure *p) { p->return_ptr = lb_addr(return_ptr_value); lb_add_entity(p->module, e, return_ptr_value); + + parameter_index += 1; + } + + if (p->type->Proc.params != nullptr) { + TypeTuple *params = &p->type->Proc.params->Tuple; + if (p->type_expr != nullptr) { + ast_node(pt, ProcType, p->type_expr); + isize param_index = 0; + isize q_index = 0; + + for_array(i, params->variables) { + ast_node(fl, FieldList, pt->params); + GB_ASSERT(fl->list.count > 0); + GB_ASSERT(fl->list[0]->kind == Ast_Field); + if (q_index == fl->list[param_index]->Field.names.count) { + q_index = 0; + param_index++; + } + ast_node(field, Field, fl->list[param_index]); + Ast *name = field->names[q_index++]; + + Entity *e = params->variables[i]; + if (e->kind != Entity_Variable) { + parameter_index += 1; + continue; + } + + Type *abi_type = p->type->Proc.abi_compat_params[i]; + if (e->token.string != "") { + lb_add_param(p, e, name, abi_type, parameter_index); + } + + if (is_type_tuple(abi_type)) { + parameter_index += cast(i32)abi_type->Tuple.variables.count; + } else { + parameter_index += 1; + } + } + } else { + auto abi_types = p->type->Proc.abi_compat_params; + + for_array(i, params->variables) { + Entity *e = params->variables[i]; + if (e->kind != Entity_Variable) { + parameter_index += 1; + continue; + } + Type *abi_type = e->type; + if (abi_types.count > 0) { + abi_type = abi_types[i]; + } + if (e->token.string != "") { + lb_add_param(p, e, nullptr, abi_type, parameter_index); + } + if (is_type_tuple(abi_type)) { + parameter_index += cast(i32)abi_type->Tuple.variables.count; + } else { + parameter_index += 1; + } + } + } } + if (p->type->Proc.has_named_results) { + GB_ASSERT(p->type->Proc.result_count > 0); + TypeTuple *results = &p->type->Proc.results->Tuple; + LLVMValueRef return_ptr = LLVMGetParam(p->value, 0); + + isize result_index = 0; + + for_array(i, results->variables) { + Entity *e = results->variables[i]; + if (e->kind != Entity_Variable) { + continue; + } + + if (e->token.string != "") { + GB_ASSERT(!is_blank_ident(e->token)); + + lbAddr res = lb_add_local(p, e->type, e); + gb_printf_err("%.*s\n", LIT(e->token.string)); + + lbValue c = {}; + switch (e->Variable.param_value.kind) { + case ParameterValue_Constant: + c = lb_const_value(p->module, e->type, e->Variable.param_value.value); + break; + case ParameterValue_Nil: + c = lb_const_nil(p->module, e->type); + break; + case ParameterValue_Location: + GB_PANIC("ParameterValue_Location"); + break; + } + if (c.value != nullptr) { + lb_addr_store(p, res, c); + } + } + + result_index += 1; + } + } + + if (p->type->Proc.calling_convention == ProcCC_Odin) { + Entity *e = alloc_entity_param(nullptr, make_token_ident(str_lit("__.context_ptr")), t_context_ptr, false, false); + e->flags |= EntityFlag_NoAlias; + lbValue param = {}; + param.value = LLVMGetParam(p->value, LLVMCountParams(p->value)-1); + param.type = e->type; + lb_add_entity(p->module, e, param); + lbAddr ctx_addr = {}; + ctx_addr.kind = lbAddr_Context; + ctx_addr.addr = param; + lbContextData ctx = {ctx_addr, p->scope_index}; + array_add(&p->context_stack, ctx); + } } void lb_end_procedure_body(lbProcedure *p) { @@ -748,13 +964,17 @@ lbBlock *lb_create_block(lbProcedure *p, char const *name) { return b; } -lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr) { +lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e, bool zero_init, i32 param_index) { LLVMPositionBuilderAtEnd(p->builder, p->decl_block->block); LLVMTypeRef llvm_type = lb_type(p->module, type); LLVMValueRef ptr = LLVMBuildAlloca(p->builder, llvm_type, ""); LLVMSetAlignment(ptr, 16); + if (zero_init) { + LLVMBuildStore(p->builder, LLVMConstNull(lb_type(p->module, type)), ptr); + } + LLVMPositionBuilderAtEnd(p->builder, p->curr_block->block); lbValue val = {}; @@ -951,6 +1171,76 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { case_end; case_ast_node(as, AssignStmt, node); + if (as->op.kind == Token_Eq) { + auto lvals = array_make(heap_allocator(), 0, as->lhs.count); + + for_array(i, as->lhs) { + Ast *lhs = as->lhs[i]; + lbAddr lval = {}; + if (!is_blank_ident(lhs)) { + lval = lb_build_addr(p, lhs); + } + array_add(&lvals, lval); + } + + if (as->lhs.count == as->rhs.count) { + if (as->lhs.count == 1) { + Ast *rhs = as->rhs[0]; + lbValue init = lb_build_expr(p, rhs); + lb_addr_store(p, lvals[0], init); + } else { + auto inits = array_make(heap_allocator(), 0, lvals.count); + + for_array(i, as->rhs) { + lbValue init = lb_build_expr(p, as->rhs[i]); + array_add(&inits, init); + } + + for_array(i, inits) { + auto lval = lvals[i]; + lb_addr_store(p, lval, inits[i]); + } + } + } else { + auto inits = array_make(heap_allocator(), 0, lvals.count); + + for_array(i, as->rhs) { + lbValue init = lb_build_expr(p, as->rhs[i]); + Type *t = init.type; + // TODO(bill): refactor for code reuse as this is repeated a bit + if (t->kind == Type_Tuple) { + for_array(i, t->Tuple.variables) { + Entity *e = t->Tuple.variables[i]; + lbValue v = lb_emit_struct_ev(p, init, cast(i32)i); + array_add(&inits, v); + } + } else { + array_add(&inits, init); + } + } + + for_array(i, inits) { + lb_addr_store(p, lvals[i], inits[i]); + } + } + } else { + // // NOTE(bill): Only 1 += 1 is allowed, no tuples + // // +=, -=, etc + // i32 op = cast(i32)as->op.kind; + // op += Token_Add - Token_AddEq; // Convert += to + + // if (op == Token_CmpAnd || op == Token_CmpOr) { + // Type *type = as->lhs[0]->tav.type; + // lbValue new_value = lb_emit_logical_binary_expr(p, cast(TokenKind)op, as->lhs[0], as->rhs[0], type); + + // lbAddr lhs = lb_build_addr(p, as->lhs[0]); + // lb_addr_store(p, lhs, new_value); + // } else { + // lbAddr lhs = lb_build_addr(p, as->lhs[0]); + // lbValue value = lb_build_expr(p, as->rhs[0]); + // ir_build_assign_op(p, lhs, value, cast(TokenKind)op); + // } + return; + } case_end; case_ast_node(es, ExprStmt, node); @@ -974,15 +1264,53 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { } else if (return_count == 1) { Entity *e = tuple->variables[0]; if (res_count == 0) { - // lbValue *found = map_get(&p->module->values, hash_entity(e)); - // GB_ASSERT(found); - // res = lb_emit_load(p, *found); + lbValue *found = map_get(&p->module->values, hash_entity(e)); + GB_ASSERT(found); + res = lb_emit_load(p, *found); } else { res = lb_build_expr(p, rs->results[0]); res = lb_emit_conv(p, res, e->type); } } else { + auto results = array_make(heap_allocator(), 0, return_count); + if (res_count != 0) { + for (isize res_index = 0; res_index < res_count; res_index++) { + lbValue res = lb_build_expr(p, rs->results[res_index]); + Type *t = res.type; + if (t->kind == Type_Tuple) { + for_array(i, t->Tuple.variables) { + Entity *e = t->Tuple.variables[i]; + lbValue v = lb_emit_struct_ev(p, res, cast(i32)i); + array_add(&results, v); + } + } else { + array_add(&results, res); + } + } + } else { + for (isize res_index = 0; res_index < return_count; res_index++) { + Entity *e = tuple->variables[res_index]; + lbValue *found = map_get(&p->module->values, hash_entity(e)); + GB_ASSERT(found); + lbValue res = lb_emit_load(p, *found); + array_add(&results, res); + } + } + + GB_ASSERT(results.count == return_count); + + Type *ret_type = p->type->Proc.results; + // NOTE(bill): Doesn't need to be zero because it will be initialized in the loops + res = lb_add_local_generated(p, ret_type, false).addr; + for_array(i, results) { + Entity *e = tuple->variables[i]; + lbValue res = lb_emit_conv(p, results[i], e->type); + lbValue field = lb_emit_struct_ep(p, res, cast(i32)i); + lb_emit_store(p, field, res); + } + + res = lb_emit_load(p, res); } if (p->type->Proc.return_by_pointer) { @@ -1876,12 +2204,88 @@ lbValue lb_copy_value_to_ptr(lbProcedure *p, lbValue val, Type *new_type, i64 al lbAddr ptr = lb_add_local_generated(p, new_type, false); LLVMSetAlignment(ptr.addr.value, cast(unsigned)alignment); lb_addr_store(p, ptr, val); - + ptr.kind = lbAddr_Context; return ptr.addr; } lbValue lb_emit_struct_ep(lbProcedure *p, lbValue s, i32 index) { - return {}; + gbAllocator a = heap_allocator(); + GB_ASSERT(is_type_pointer(s.type)); + Type *t = base_type(type_deref(s.type)); + Type *result_type = nullptr; + + if (t->kind == Type_Opaque) { + t = t->Opaque.elem; + } + + if (is_type_struct(t)) { + result_type = alloc_type_pointer(t->Struct.fields[index]->type); + } else if (is_type_union(t)) { + GB_ASSERT(index == -1); + // return ir_emit_union_tag_ptr(proc, s); + GB_PANIC("ir_emit_union_tag_ptr"); + } else if (is_type_tuple(t)) { + GB_ASSERT(t->Tuple.variables.count > 0); + result_type = alloc_type_pointer(t->Tuple.variables[index]->type); + } else if (is_type_complex(t)) { + Type *ft = base_complex_elem_type(t); + switch (index) { + case 0: result_type = alloc_type_pointer(ft); break; + case 1: result_type = alloc_type_pointer(ft); break; + } + } else if (is_type_quaternion(t)) { + Type *ft = base_complex_elem_type(t); + switch (index) { + case 0: result_type = alloc_type_pointer(ft); break; + case 1: result_type = alloc_type_pointer(ft); break; + case 2: result_type = alloc_type_pointer(ft); break; + case 3: result_type = alloc_type_pointer(ft); break; + } + } else if (is_type_slice(t)) { + switch (index) { + case 0: result_type = alloc_type_pointer(alloc_type_pointer(t->Slice.elem)); break; + case 1: result_type = alloc_type_pointer(t_int); break; + } + } else if (is_type_string(t)) { + switch (index) { + case 0: result_type = alloc_type_pointer(t_u8_ptr); break; + case 1: result_type = alloc_type_pointer(t_int); break; + } + } else if (is_type_any(t)) { + switch (index) { + case 0: result_type = alloc_type_pointer(t_rawptr); break; + case 1: result_type = alloc_type_pointer(t_typeid); break; + } + } else if (is_type_dynamic_array(t)) { + switch (index) { + case 0: result_type = alloc_type_pointer(alloc_type_pointer(t->DynamicArray.elem)); break; + case 1: result_type = t_int_ptr; break; + case 2: result_type = t_int_ptr; break; + case 3: result_type = t_allocator_ptr; break; + } + } else if (is_type_map(t)) { + init_map_internal_types(t); + Type *itp = alloc_type_pointer(t->Map.internal_type); + s = lb_emit_transmute(p, s, itp); + + Type *gst = t->Map.internal_type; + GB_ASSERT(gst->kind == Type_Struct); + switch (index) { + case 0: result_type = alloc_type_pointer(gst->Struct.fields[0]->type); break; + case 1: result_type = alloc_type_pointer(gst->Struct.fields[1]->type); break; + } + } else if (is_type_array(t)) { + return lb_emit_array_epi(p, s, index); + } else { + GB_PANIC("TODO(bill): struct_gep type: %s, %d", type_to_string(s.type), index); + } + + GB_ASSERT_MSG(result_type != nullptr, "%s %d", type_to_string(t), index); + + lbValue res = {}; + res.value = LLVMBuildStructGEP2(p->builder, lb_type(p->module, result_type), s.value, cast(unsigned)index, ""); + res.type = result_type; + return res; } lbValue lb_emit_struct_ev(lbProcedure *p, lbValue s, i32 index) { @@ -2049,7 +2453,7 @@ lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, GB_ASSERT_MSG(param_count == args.count, "%td == %td", param_count, args.count); } - auto processed_args = array_make(heap_allocator(), 0, args.count); + auto processed_args = array_make(heap_allocator(), 0, args.count); for (isize i = 0; i < param_count; i++) { Entity *e = pt->Proc.params->Tuple.variables[i]; @@ -2135,7 +2539,7 @@ lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, // auto in_args = args; - // Array result_as_args = {}; + // Array result_as_args = {}; // switch (kind) { // case DeferredProcedure_none: // break; @@ -2154,12 +2558,18 @@ lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, return result; } -lbValue lb_emit_ev(lbProcedure *p, lbValue value, i32 index) { - return {}; -} +lbValue lb_emit_array_epi(lbProcedure *p, lbValue s, i32 index) { + Type *t = s.type; + GB_ASSERT(is_type_pointer(t)); + Type *st = base_type(type_deref(t)); + GB_ASSERT_MSG(is_type_array(st) || is_type_enumerated_array(st), "%s", type_to_string(st)); -lbValue lb_emit_array_epi(lbProcedure *p, lbValue value, i32 index){ - return {}; + GB_ASSERT(0 <= index); + Type *ptr = base_array_type(st); + lbValue res = {}; + res.value = LLVMBuildStructGEP2(p->builder, lb_type(p->module, ptr), s.value, index, ""); + res.type = alloc_type_pointer(ptr); + return res; } void lb_fill_slice(lbProcedure *p, lbAddr slice, lbValue base_elem, lbValue len) { @@ -2236,7 +2646,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { set_procedure_abi_types(heap_allocator(), proc_type_); if (is_call_expr_field_value(ce)) { - auto args = array_make(heap_allocator(), pt->param_count); + auto args = array_make(heap_allocator(), pt->param_count); for_array(arg_index, ce->args) { Ast *arg = ce->args[arg_index]; @@ -2307,7 +2717,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { param_count = pt->params->Tuple.variables.count; } - auto args = array_make(heap_allocator(), cast(isize)gb_max(param_count, arg_count)); + auto args = array_make(heap_allocator(), cast(isize)gb_max(param_count, arg_count)); isize variadic_index = pt->variadic_index; bool variadic = pt->variadic && variadic_index >= 0; bool vari_expand = ce->ellipsis.pos.line != 0; @@ -2336,7 +2746,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { if (at->kind == Type_Tuple) { for_array(i, at->Tuple.variables) { Entity *e = at->Tuple.variables[i]; - lbValue v = lb_emit_ev(p, a, cast(i32)i); + lbValue v = lb_emit_struct_ev(p, a, cast(i32)i); args[arg_index++] = v; } } else { @@ -2507,7 +2917,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { case_end; case_ast_node(i, Implicit, expr); - // return ir_addr_load(p, ir_build_addr(p, expr)); + // return ir_addr_load(p, lb_build_addr(p, expr)); GB_PANIC("TODO(bill): Implicit"); case_end; @@ -2537,7 +2947,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { } return lb_emit_load(p, v); // } else if (e != nullptr && e->kind == Entity_Variable) { - // return ir_addr_load(p, ir_build_addr(p, expr)); + // return ir_addr_load(p, lb_build_addr(p, expr)); } GB_PANIC("nullptr value for expression from identifier: %.*s : %s @ %p", LIT(i->token.string), type_to_string(e->type), expr); return {}; @@ -2557,6 +2967,1167 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { } +lbAddr lb_build_addr_from_entity(lbProcedure *p, Entity *e, Ast *expr) { + GB_ASSERT(e != nullptr); + if (e->kind == Entity_Constant) { + Type *t = default_type(type_of_expr(expr)); + lbValue v = lb_const_value(p->module, t, e->Constant.value); + lbAddr g = lb_add_global_generated(p->module, t, v); + return g; + } + + + lbValue v = {}; + lbValue *found = map_get(&p->module->values, hash_entity(e)); + if (found) { + v = *found; + } else if (e->kind == Entity_Variable && e->flags & EntityFlag_Using) { + // NOTE(bill): Calculate the using variable every time + GB_PANIC("HERE: using variable"); + // v = lb_get_using_variable(p, e); + } + + if (v.value == nullptr) { + error(expr, "%.*s Unknown value: %.*s, entity: %p %.*s", + LIT(p->name), + LIT(e->token.string), e, LIT(entity_strings[e->kind])); + GB_PANIC("Unknown value"); + } + + return lb_addr(v); +} + +lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { + expr = unparen_expr(expr); + + switch (expr->kind) { + case_ast_node(i, Implicit, expr); + lbAddr v = {}; + switch (i->kind) { + case Token_context: + v = lb_find_or_generate_context_ptr(p); + break; + } + + GB_ASSERT(v.addr.value != nullptr); + return v; + case_end; + + case_ast_node(i, Ident, expr); + if (is_blank_ident(expr)) { + lbAddr val = {}; + return val; + } + String name = i->token.string; + Entity *e = entity_of_ident(expr); + // GB_ASSERT(name == e->token.string); + return lb_build_addr_from_entity(p, e, expr); + case_end; + +#if 0 + case_ast_node(se, SelectorExpr, expr); + ir_emit_comment(proc, str_lit("SelectorExpr")); + Ast *sel = unparen_expr(se->selector); + if (sel->kind == Ast_Ident) { + String selector = sel->Ident.token.string; + TypeAndValue tav = type_and_value_of_expr(se->expr); + + if (tav.mode == Addressing_Invalid) { + // NOTE(bill): Imports + Entity *imp = entity_of_ident(se->expr); + if (imp != nullptr) { + GB_ASSERT(imp->kind == Entity_ImportName); + } + return ir_build_addr(proc, unparen_expr(se->selector)); + } + + + Type *type = base_type(tav.type); + if (tav.mode == Addressing_Type) { // Addressing_Type + Selection sel = lookup_field(type, selector, true); + Entity *e = sel.entity; + GB_ASSERT(e->kind == Entity_Variable); + GB_ASSERT(e->flags & EntityFlag_TypeField); + String name = e->token.string; + if (name == "names") { + lbValue ti_ptr = ir_type_info(proc, type); + lbValue variant = ir_emit_struct_ep(proc, ti_ptr, 2); + + lbValue names_ptr = nullptr; + + if (is_type_enum(type)) { + lbValue enum_info = ir_emit_conv(proc, variant, t_type_info_enum_ptr); + names_ptr = ir_emit_struct_ep(proc, enum_info, 1); + } else if (type->kind == Type_Struct) { + lbValue struct_info = ir_emit_conv(proc, variant, t_type_info_struct_ptr); + names_ptr = ir_emit_struct_ep(proc, struct_info, 1); + } + return ir_addr(names_ptr); + } else { + GB_PANIC("Unhandled TypeField %.*s", LIT(name)); + } + GB_PANIC("Unreachable"); + } + + Selection sel = lookup_field(type, selector, false); + GB_ASSERT(sel.entity != nullptr); + + + if (sel.entity->type->kind == Type_BitFieldValue) { + irAddr addr = ir_build_addr(proc, se->expr); + Type *bft = type_deref(ir_addr_type(addr)); + if (sel.index.count == 1) { + GB_ASSERT(is_type_bit_field(bft)); + i32 index = sel.index[0]; + return ir_addr_bit_field(ir_addr_get_ptr(proc, addr), index); + } else { + Selection s = sel; + s.index.count--; + i32 index = s.index[s.index.count-1]; + lbValue a = ir_addr_get_ptr(proc, addr); + a = ir_emit_deep_field_gep(proc, a, s); + return ir_addr_bit_field(a, index); + } + } else { + irAddr addr = ir_build_addr(proc, se->expr); + if (addr.kind == irAddr_Context) { + GB_ASSERT(sel.index.count > 0); + if (addr.ctx.sel.index.count >= 0) { + sel = selection_combine(addr.ctx.sel, sel); + } + addr.ctx.sel = sel; + + return addr; + } else if (addr.kind == irAddr_SoaVariable) { + lbValue index = addr.soa.index; + i32 first_index = sel.index[0]; + Selection sub_sel = sel; + sub_sel.index.data += 1; + sub_sel.index.count -= 1; + + lbValue arr = ir_emit_struct_ep(proc, addr.addr, first_index); + + Type *t = base_type(type_deref(ir_type(addr.addr))); + GB_ASSERT(is_type_soa_struct(t)); + + if (addr.soa.index->kind != irValue_Constant || t->Struct.soa_kind != StructSoa_Fixed) { + lbValue len = ir_soa_struct_len(proc, addr.addr); + ir_emit_bounds_check(proc, ast_token(addr.soa.index_expr), addr.soa.index, len); + } + + lbValue item = nullptr; + + if (t->Struct.soa_kind == StructSoa_Fixed) { + item = ir_emit_array_ep(proc, arr, index); + } else { + item = ir_emit_load(proc, ir_emit_ptr_offset(proc, arr, index)); + } + if (sub_sel.index.count > 0) { + item = ir_emit_deep_field_gep(proc, item, sub_sel); + } + return ir_addr(item); + } + lbValue a = ir_addr_get_ptr(proc, addr); + a = ir_emit_deep_field_gep(proc, a, sel); + return ir_addr(a); + } + } else { + GB_PANIC("Unsupported selector expression"); + } + case_end; + + case_ast_node(ta, TypeAssertion, expr); + gbAllocator a = ir_allocator(); + TokenPos pos = ast_token(expr).pos; + lbValue e = ir_build_expr(proc, ta->expr); + Type *t = type_deref(ir_type(e)); + if (is_type_union(t)) { + Type *type = type_of_expr(expr); + lbValue v = ir_add_local_generated(proc, type, false); + ir_emit_comment(proc, str_lit("cast - union_cast")); + ir_emit_store(proc, v, ir_emit_union_cast(proc, ir_build_expr(proc, ta->expr), type, pos)); + return ir_addr(v); + } else if (is_type_any(t)) { + ir_emit_comment(proc, str_lit("cast - any_cast")); + Type *type = type_of_expr(expr); + return ir_emit_any_cast_addr(proc, ir_build_expr(proc, ta->expr), type, pos); + } else { + GB_PANIC("TODO(bill): type assertion %s", type_to_string(ir_type(e))); + } + case_end; + + case_ast_node(ue, UnaryExpr, expr); + switch (ue->op.kind) { + case Token_And: { + return ir_build_addr(proc, ue->expr); + } + default: + GB_PANIC("Invalid unary expression for ir_build_addr"); + } + case_end; + + case_ast_node(be, BinaryExpr, expr); + lbValue v = ir_build_expr(proc, expr); + Type *t = ir_type(v); + if (is_type_pointer(t)) { + return ir_addr(v); + } + return ir_addr(ir_address_from_load_or_generate_local(proc, v)); + case_end; + + case_ast_node(ie, IndexExpr, expr); + ir_emit_comment(proc, str_lit("IndexExpr")); + Type *t = base_type(type_of_expr(ie->expr)); + gbAllocator a = ir_allocator(); + + bool deref = is_type_pointer(t); + t = base_type(type_deref(t)); + if (is_type_soa_struct(t)) { + // SOA STRUCTURES!!!! + lbValue val = ir_build_addr_ptr(proc, ie->expr); + if (deref) { + val = ir_emit_load(proc, val); + } + + lbValue index = ir_build_expr(proc, ie->index); + return ir_addr_soa_variable(val, index, ie->index); + } + + if (ie->expr->tav.mode == Addressing_SoaVariable) { + // SOA Structures for slices/dynamic arrays + GB_ASSERT(is_type_pointer(type_of_expr(ie->expr))); + + lbValue field = ir_build_expr(proc, ie->expr); + lbValue index = ir_build_expr(proc, ie->index); + + + if (!build_context.no_bounds_check) { + // TODO HACK(bill): Clean up this hack to get the length for bounds checking + GB_ASSERT(field->kind == irValue_Instr); + irInstr *instr = &field->Instr; + + GB_ASSERT(instr->kind == irInstr_Load); + lbValue a = instr->Load.address; + + GB_ASSERT(a->kind == irValue_Instr); + irInstr *b = &a->Instr; + GB_ASSERT(b->kind == irInstr_StructElementPtr); + lbValue base_struct = b->StructElementPtr.address; + + GB_ASSERT(is_type_soa_struct(type_deref(ir_type(base_struct)))); + lbValue len = ir_soa_struct_len(proc, base_struct); + ir_emit_bounds_check(proc, ast_token(ie->index), index, len); + } + + lbValue val = ir_emit_ptr_offset(proc, field, index); + return ir_addr(val); + } + + GB_ASSERT_MSG(is_type_indexable(t), "%s %s", type_to_string(t), expr_to_string(expr)); + + if (is_type_map(t)) { + lbValue map_val = ir_build_addr_ptr(proc, ie->expr); + if (deref) { + map_val = ir_emit_load(proc, map_val); + } + + lbValue key = ir_build_expr(proc, ie->index); + key = ir_emit_conv(proc, key, t->Map.key); + + Type *result_type = type_of_expr(expr); + return ir_addr_map(map_val, key, t, result_type); + } + + lbValue using_addr = nullptr; + + switch (t->kind) { + case Type_Array: { + lbValue array = nullptr; + if (using_addr != nullptr) { + array = using_addr; + } else { + array = ir_build_addr_ptr(proc, ie->expr); + if (deref) { + array = ir_emit_load(proc, array); + } + } + lbValue index = ir_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + lbValue elem = ir_emit_array_ep(proc, array, index); + + auto index_tv = type_and_value_of_expr(ie->index); + if (index_tv.mode != Addressing_Constant) { + lbValue len = ir_const_int(t->Array.count); + ir_emit_bounds_check(proc, ast_token(ie->index), index, len); + } + return ir_addr(elem); + } + + case Type_EnumeratedArray: { + lbValue array = nullptr; + if (using_addr != nullptr) { + array = using_addr; + } else { + array = ir_build_addr_ptr(proc, ie->expr); + if (deref) { + array = ir_emit_load(proc, array); + } + } + + Type *index_type = t->EnumeratedArray.index; + + auto index_tv = type_and_value_of_expr(ie->index); + + lbValue index = nullptr; + if (compare_exact_values(Token_NotEq, t->EnumeratedArray.min_value, exact_value_i64(0))) { + if (index_tv.mode == Addressing_Constant) { + ExactValue idx = exact_value_sub(index_tv.value, t->EnumeratedArray.min_value); + index = ir_value_constant(index_type, idx); + } else { + index = ir_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + index = ir_emit_arith(proc, Token_Sub, index, ir_value_constant(index_type, t->EnumeratedArray.min_value), index_type); + } + } else { + index = ir_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + } + + lbValue elem = ir_emit_array_ep(proc, array, index); + + if (index_tv.mode != Addressing_Constant) { + lbValue len = ir_const_int(t->EnumeratedArray.count); + ir_emit_bounds_check(proc, ast_token(ie->index), index, len); + } + return ir_addr(elem); + } + + case Type_Slice: { + lbValue slice = nullptr; + if (using_addr != nullptr) { + slice = ir_emit_load(proc, using_addr); + } else { + slice = ir_build_expr(proc, ie->expr); + if (deref) { + slice = ir_emit_load(proc, slice); + } + } + lbValue elem = ir_slice_elem(proc, slice); + lbValue index = ir_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + lbValue len = ir_slice_len(proc, slice); + ir_emit_bounds_check(proc, ast_token(ie->index), index, len); + lbValue v = ir_emit_ptr_offset(proc, elem, index); + return ir_addr(v); + } + + case Type_DynamicArray: { + lbValue dynamic_array = nullptr; + if (using_addr != nullptr) { + dynamic_array = ir_emit_load(proc, using_addr); + } else { + dynamic_array = ir_build_expr(proc, ie->expr); + if (deref) { + dynamic_array = ir_emit_load(proc, dynamic_array); + } + } + lbValue elem = ir_dynamic_array_elem(proc, dynamic_array); + lbValue len = ir_dynamic_array_len(proc, dynamic_array); + lbValue index = ir_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + ir_emit_bounds_check(proc, ast_token(ie->index), index, len); + lbValue v = ir_emit_ptr_offset(proc, elem, index); + return ir_addr(v); + } + + + case Type_Basic: { // Basic_string + lbValue str; + lbValue elem; + lbValue len; + lbValue index; + + if (using_addr != nullptr) { + str = ir_emit_load(proc, using_addr); + } else { + str = ir_build_expr(proc, ie->expr); + if (deref) { + str = ir_emit_load(proc, str); + } + } + elem = ir_string_elem(proc, str); + len = ir_string_len(proc, str); + + index = ir_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + ir_emit_bounds_check(proc, ast_token(ie->index), index, len); + + return ir_addr(ir_emit_ptr_offset(proc, elem, index)); + } + } + case_end; + + case_ast_node(se, SliceExpr, expr); + ir_emit_comment(proc, str_lit("SliceExpr")); + gbAllocator a = ir_allocator(); + lbValue low = v_zero; + lbValue high = nullptr; + + if (se->low != nullptr) low = ir_build_expr(proc, se->low); + if (se->high != nullptr) high = ir_build_expr(proc, se->high); + + bool no_indices = se->low == nullptr && se->high == nullptr; + + lbValue addr = ir_build_addr_ptr(proc, se->expr); + lbValue base = ir_emit_load(proc, addr); + Type *type = base_type(ir_type(base)); + + if (is_type_pointer(type)) { + type = base_type(type_deref(type)); + addr = base; + base = ir_emit_load(proc, base); + } + // TODO(bill): Cleanup like mad! + + switch (type->kind) { + case Type_Slice: { + Type *slice_type = type; + lbValue len = ir_slice_len(proc, base); + if (high == nullptr) high = len; + + if (!no_indices) { + ir_emit_slice_bounds_check(proc, se->open, low, high, len, se->low != nullptr); + } + + lbValue elem = ir_emit_ptr_offset(proc, ir_slice_elem(proc, base), low); + lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); + + lbValue slice = ir_add_local_generated(proc, slice_type, false); + ir_fill_slice(proc, slice, elem, new_len); + return ir_addr(slice); + } + + case Type_DynamicArray: { + Type *elem_type = type->DynamicArray.elem; + Type *slice_type = alloc_type_slice(elem_type); + + lbValue len = ir_dynamic_array_len(proc, base); + if (high == nullptr) high = len; + + if (!no_indices) { + ir_emit_slice_bounds_check(proc, se->open, low, high, len, se->low != nullptr); + } + + lbValue elem = ir_emit_ptr_offset(proc, ir_dynamic_array_elem(proc, base), low); + lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); + + lbValue slice = ir_add_local_generated(proc, slice_type, false); + ir_fill_slice(proc, slice, elem, new_len); + return ir_addr(slice); + } + + + case Type_Array: { + Type *slice_type = alloc_type_slice(type->Array.elem); + lbValue len = ir_array_len(proc, base); + + if (high == nullptr) high = len; + + bool low_const = type_and_value_of_expr(se->low).mode == Addressing_Constant; + bool high_const = type_and_value_of_expr(se->high).mode == Addressing_Constant; + + if (!low_const || !high_const) { + if (!no_indices) { + ir_emit_slice_bounds_check(proc, se->open, low, high, len, se->low != nullptr); + } + } + lbValue elem = ir_emit_ptr_offset(proc, ir_array_elem(proc, addr), low); + lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); + + lbValue slice = ir_add_local_generated(proc, slice_type, false); + ir_fill_slice(proc, slice, elem, new_len); + return ir_addr(slice); + } + + case Type_Basic: { + GB_ASSERT(type == t_string); + lbValue len = ir_string_len(proc, base); + if (high == nullptr) high = len; + + if (!no_indices) { + ir_emit_slice_bounds_check(proc, se->open, low, high, len, se->low != nullptr); + } + + lbValue elem = ir_emit_ptr_offset(proc, ir_string_elem(proc, base), low); + lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); + + lbValue str = ir_add_local_generated(proc, t_string, false); + ir_fill_string(proc, str, elem, new_len); + return ir_addr(str); + } + + + case Type_Struct: + if (is_type_soa_struct(type)) { + lbValue len = ir_soa_struct_len(proc, addr); + if (high == nullptr) high = len; + + if (!no_indices) { + ir_emit_slice_bounds_check(proc, se->open, low, high, len, se->low != nullptr); + } + + lbValue dst = ir_add_local_generated(proc, type_of_expr(expr), true); + if (type->Struct.soa_kind == StructSoa_Fixed) { + i32 field_count = cast(i32)type->Struct.fields.count; + for (i32 i = 0; i < field_count; i++) { + lbValue field_dst = ir_emit_struct_ep(proc, dst, i); + lbValue field_src = ir_emit_struct_ep(proc, addr, i); + field_src = ir_emit_array_ep(proc, field_src, low); + ir_emit_store(proc, field_dst, field_src); + } + + lbValue len_dst = ir_emit_struct_ep(proc, dst, field_count); + lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); + ir_emit_store(proc, len_dst, new_len); + } else if (type->Struct.soa_kind == StructSoa_Slice) { + if (no_indices) { + ir_emit_store(proc, dst, base); + } else { + i32 field_count = cast(i32)type->Struct.fields.count - 1; + for (i32 i = 0; i < field_count; i++) { + lbValue field_dst = ir_emit_struct_ep(proc, dst, i); + lbValue field_src = ir_emit_struct_ev(proc, base, i); + field_src = ir_emit_ptr_offset(proc, field_src, low); + ir_emit_store(proc, field_dst, field_src); + } + + + lbValue len_dst = ir_emit_struct_ep(proc, dst, field_count); + lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); + ir_emit_store(proc, len_dst, new_len); + } + } else if (type->Struct.soa_kind == StructSoa_Dynamic) { + i32 field_count = cast(i32)type->Struct.fields.count - 3; + for (i32 i = 0; i < field_count; i++) { + lbValue field_dst = ir_emit_struct_ep(proc, dst, i); + lbValue field_src = ir_emit_struct_ev(proc, base, i); + field_src = ir_emit_ptr_offset(proc, field_src, low); + ir_emit_store(proc, field_dst, field_src); + } + + + lbValue len_dst = ir_emit_struct_ep(proc, dst, field_count); + lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); + ir_emit_store(proc, len_dst, new_len); + } + + return ir_addr(dst); + } + break; + + } + + GB_PANIC("Unknown slicable type"); + case_end; + + case_ast_node(de, DerefExpr, expr); + // TODO(bill): Is a ptr copy needed? + lbValue addr = ir_build_expr(proc, de->expr); + addr = ir_emit_ptr_offset(proc, addr, v_zero); + return ir_addr(addr); + case_end; + + case_ast_node(ce, CallExpr, expr); + // NOTE(bill): This is make sure you never need to have an 'array_ev' + lbValue e = ir_build_expr(proc, expr); + lbValue v = ir_add_local_generated(proc, ir_type(e), false); + ir_emit_store(proc, v, e); + return ir_addr(v); + case_end; + + case_ast_node(cl, CompoundLit, expr); + ir_emit_comment(proc, str_lit("CompoundLit")); + Type *type = type_of_expr(expr); + Type *bt = base_type(type); + + lbValue v = ir_add_local_generated(proc, type, true); + + Type *et = nullptr; + switch (bt->kind) { + case Type_Array: et = bt->Array.elem; break; + case Type_EnumeratedArray: et = bt->EnumeratedArray.elem; break; + case Type_Slice: et = bt->Slice.elem; break; + case Type_BitSet: et = bt->BitSet.elem; break; + case Type_SimdVector: et = bt->SimdVector.elem; break; + } + + String proc_name = {}; + if (proc->entity) { + proc_name = proc->entity->token.string; + } + TokenPos pos = ast_token(expr).pos; + + switch (bt->kind) { + default: GB_PANIC("Unknown CompoundLit type: %s", type_to_string(type)); break; + + case Type_Struct: { + + // TODO(bill): "constant" '#raw_union's are not initialized constantly at the moment. + // NOTE(bill): This is due to the layout of the unions when printed to LLVM-IR + bool is_raw_union = is_type_raw_union(bt); + GB_ASSERT(is_type_struct(bt) || is_raw_union); + TypeStruct *st = &bt->Struct; + if (cl->elems.count > 0) { + ir_emit_store(proc, v, lb_const_value(proc->module, type, exact_value_compound(expr))); + for_array(field_index, cl->elems) { + Ast *elem = cl->elems[field_index]; + + lbValue field_expr = nullptr; + Entity *field = nullptr; + isize index = field_index; + + if (elem->kind == Ast_FieldValue) { + ast_node(fv, FieldValue, elem); + String name = fv->field->Ident.token.string; + Selection sel = lookup_field(bt, name, false); + index = sel.index[0]; + elem = fv->value; + TypeAndValue tav = type_and_value_of_expr(elem); + } else { + TypeAndValue tav = type_and_value_of_expr(elem); + Selection sel = lookup_field_from_index(bt, st->fields[field_index]->Variable.field_src_index); + index = sel.index[0]; + } + + field = st->fields[index]; + Type *ft = field->type; + if (!is_raw_union && !is_type_typeid(ft) && ir_is_elem_const(proc->module, elem, ft)) { + continue; + } + + field_expr = ir_build_expr(proc, elem); + + + GB_ASSERT(ir_type(field_expr)->kind != Type_Tuple); + + Type *fet = ir_type(field_expr); + // HACK TODO(bill): THIS IS A MASSIVE HACK!!!! + if (is_type_union(ft) && !are_types_identical(fet, ft) && !is_type_untyped(fet)) { + GB_ASSERT_MSG(union_variant_index(ft, fet) > 0, "%s", type_to_string(fet)); + + lbValue gep = ir_emit_struct_ep(proc, v, cast(i32)index); + ir_emit_store_union_variant(proc, gep, field_expr, fet); + } else { + lbValue fv = ir_emit_conv(proc, field_expr, ft); + lbValue gep = ir_emit_struct_ep(proc, v, cast(i32)index); + ir_emit_store(proc, gep, fv); + } + } + } + break; + } + + case Type_Map: { + if (cl->elems.count == 0) { + break; + } + gbAllocator a = ir_allocator(); + { + auto args = array_make(a, 3); + args[0] = ir_gen_map_header(proc, v, type); + args[1] = ir_const_int(2*cl->elems.count); + args[2] = ir_emit_source_code_location(proc, proc_name, pos); + ir_emit_runtime_call(proc, "__dynamic_map_reserve", args); + } + for_array(field_index, cl->elems) { + Ast *elem = cl->elems[field_index]; + ast_node(fv, FieldValue, elem); + + lbValue key = ir_build_expr(proc, fv->field); + lbValue value = ir_build_expr(proc, fv->value); + ir_insert_dynamic_map_key_and_value(proc, v, type, key, value); + } + break; + } + + case Type_Array: { + if (cl->elems.count > 0) { + ir_emit_store(proc, v, lb_const_value(proc->module, type, exact_value_compound(expr))); + + auto temp_data = array_make(heap_allocator(), 0, cl->elems.count); + defer (array_free(&temp_data)); + + // NOTE(bill): Separate value, gep, store into their own chunks + for_array(i, cl->elems) { + Ast *elem = cl->elems[i]; + if (elem->kind == Ast_FieldValue) { + ast_node(fv, FieldValue, elem); + if (ir_is_elem_const(proc->module, fv->value, et)) { + continue; + } + if (is_ast_range(fv->field)) { + ast_node(ie, BinaryExpr, fv->field); + TypeAndValue lo_tav = ie->left->tav; + TypeAndValue hi_tav = ie->right->tav; + GB_ASSERT(lo_tav.mode == Addressing_Constant); + GB_ASSERT(hi_tav.mode == Addressing_Constant); + + TokenKind op = ie->op.kind; + i64 lo = exact_value_to_i64(lo_tav.value); + i64 hi = exact_value_to_i64(hi_tav.value); + if (op == Token_Ellipsis) { + hi += 1; + } + + lbValue value = ir_build_expr(proc, fv->value); + + for (i64 k = lo; k < hi; k++) { + irCompoundLitElemTempData data = {}; + data.value = value; + data.elem_index = cast(i32)k; + array_add(&temp_data, data); + } + + } else { + auto tav = fv->field->tav; + GB_ASSERT(tav.mode == Addressing_Constant); + i64 index = exact_value_to_i64(tav.value); + + irCompoundLitElemTempData data = {}; + data.value = ir_emit_conv(proc, ir_build_expr(proc, fv->value), et); + data.expr = fv->value; + data.elem_index = cast(i32)index; + array_add(&temp_data, data); + } + + } else { + if (ir_is_elem_const(proc->module, elem, et)) { + continue; + } + irCompoundLitElemTempData data = {}; + data.expr = elem; + data.elem_index = cast(i32)i; + array_add(&temp_data, data); + } + } + + for_array(i, temp_data) { + temp_data[i].gep = ir_emit_array_epi(proc, v, temp_data[i].elem_index); + } + + for_array(i, temp_data) { + auto return_ptr_hint_ast = proc->return_ptr_hint_ast; + auto return_ptr_hint_value = proc->return_ptr_hint_value; + auto return_ptr_hint_used = proc->return_ptr_hint_used; + defer (proc->return_ptr_hint_ast = return_ptr_hint_ast); + defer (proc->return_ptr_hint_value = return_ptr_hint_value); + defer (proc->return_ptr_hint_used = return_ptr_hint_used); + + lbValue field_expr = temp_data[i].value; + Ast *expr = temp_data[i].expr; + + proc->return_ptr_hint_value = temp_data[i].gep; + proc->return_ptr_hint_ast = unparen_expr(expr); + + if (field_expr == nullptr) { + field_expr = ir_build_expr(proc, expr); + } + Type *t = ir_type(field_expr); + GB_ASSERT(t->kind != Type_Tuple); + lbValue ev = ir_emit_conv(proc, field_expr, et); + + if (!proc->return_ptr_hint_used) { + temp_data[i].value = ev; + } + } + + for_array(i, temp_data) { + if (temp_data[i].value != nullptr) { + ir_emit_store(proc, temp_data[i].gep, temp_data[i].value, false); + } + } + } + break; + } + case Type_EnumeratedArray: { + if (cl->elems.count > 0) { + ir_emit_store(proc, v, lb_const_value(proc->module, type, exact_value_compound(expr))); + + auto temp_data = array_make(heap_allocator(), 0, cl->elems.count); + defer (array_free(&temp_data)); + + // NOTE(bill): Separate value, gep, store into their own chunks + for_array(i, cl->elems) { + Ast *elem = cl->elems[i]; + if (elem->kind == Ast_FieldValue) { + ast_node(fv, FieldValue, elem); + if (ir_is_elem_const(proc->module, fv->value, et)) { + continue; + } + if (is_ast_range(fv->field)) { + ast_node(ie, BinaryExpr, fv->field); + TypeAndValue lo_tav = ie->left->tav; + TypeAndValue hi_tav = ie->right->tav; + GB_ASSERT(lo_tav.mode == Addressing_Constant); + GB_ASSERT(hi_tav.mode == Addressing_Constant); + + TokenKind op = ie->op.kind; + i64 lo = exact_value_to_i64(lo_tav.value); + i64 hi = exact_value_to_i64(hi_tav.value); + if (op == Token_Ellipsis) { + hi += 1; + } + + lbValue value = ir_build_expr(proc, fv->value); + + for (i64 k = lo; k < hi; k++) { + irCompoundLitElemTempData data = {}; + data.value = value; + data.elem_index = cast(i32)k; + array_add(&temp_data, data); + } + + } else { + auto tav = fv->field->tav; + GB_ASSERT(tav.mode == Addressing_Constant); + i64 index = exact_value_to_i64(tav.value); + + irCompoundLitElemTempData data = {}; + data.value = ir_emit_conv(proc, ir_build_expr(proc, fv->value), et); + data.expr = fv->value; + data.elem_index = cast(i32)index; + array_add(&temp_data, data); + } + + } else { + if (ir_is_elem_const(proc->module, elem, et)) { + continue; + } + irCompoundLitElemTempData data = {}; + data.expr = elem; + data.elem_index = cast(i32)i; + array_add(&temp_data, data); + } + } + + + i32 index_offset = cast(i32)exact_value_to_i64(bt->EnumeratedArray.min_value); + + for_array(i, temp_data) { + i32 index = temp_data[i].elem_index - index_offset; + temp_data[i].gep = ir_emit_array_epi(proc, v, index); + } + + for_array(i, temp_data) { + auto return_ptr_hint_ast = proc->return_ptr_hint_ast; + auto return_ptr_hint_value = proc->return_ptr_hint_value; + auto return_ptr_hint_used = proc->return_ptr_hint_used; + defer (proc->return_ptr_hint_ast = return_ptr_hint_ast); + defer (proc->return_ptr_hint_value = return_ptr_hint_value); + defer (proc->return_ptr_hint_used = return_ptr_hint_used); + + lbValue field_expr = temp_data[i].value; + Ast *expr = temp_data[i].expr; + + proc->return_ptr_hint_value = temp_data[i].gep; + proc->return_ptr_hint_ast = unparen_expr(expr); + + if (field_expr == nullptr) { + field_expr = ir_build_expr(proc, expr); + } + Type *t = ir_type(field_expr); + GB_ASSERT(t->kind != Type_Tuple); + lbValue ev = ir_emit_conv(proc, field_expr, et); + + if (!proc->return_ptr_hint_used) { + temp_data[i].value = ev; + } + } + + for_array(i, temp_data) { + if (temp_data[i].value != nullptr) { + ir_emit_store(proc, temp_data[i].gep, temp_data[i].value, false); + } + } + } + break; + } + case Type_Slice: { + if (cl->elems.count > 0) { + Type *elem_type = bt->Slice.elem; + Type *elem_ptr_type = alloc_type_pointer(elem_type); + Type *elem_ptr_ptr_type = alloc_type_pointer(elem_ptr_type); + lbValue slice = lb_const_value(proc->module, type, exact_value_compound(expr)); + GB_ASSERT(slice->kind == irValue_ConstantSlice); + + lbValue data = ir_emit_array_ep(proc, slice->ConstantSlice.backing_array, v_zero32); + + auto temp_data = array_make(heap_allocator(), 0, cl->elems.count); + defer (array_free(&temp_data)); + + for_array(i, cl->elems) { + Ast *elem = cl->elems[i]; + if (elem->kind == Ast_FieldValue) { + ast_node(fv, FieldValue, elem); + + if (ir_is_elem_const(proc->module, fv->value, et)) { + continue; + } + + if (is_ast_range(fv->field)) { + ast_node(ie, BinaryExpr, fv->field); + TypeAndValue lo_tav = ie->left->tav; + TypeAndValue hi_tav = ie->right->tav; + GB_ASSERT(lo_tav.mode == Addressing_Constant); + GB_ASSERT(hi_tav.mode == Addressing_Constant); + + TokenKind op = ie->op.kind; + i64 lo = exact_value_to_i64(lo_tav.value); + i64 hi = exact_value_to_i64(hi_tav.value); + if (op == Token_Ellipsis) { + hi += 1; + } + + lbValue value = ir_emit_conv(proc, ir_build_expr(proc, fv->value), et); + + for (i64 k = lo; k < hi; k++) { + irCompoundLitElemTempData data = {}; + data.value = value; + data.elem_index = cast(i32)k; + array_add(&temp_data, data); + } + + } else { + GB_ASSERT(fv->field->tav.mode == Addressing_Constant); + i64 index = exact_value_to_i64(fv->field->tav.value); + + lbValue field_expr = ir_build_expr(proc, fv->value); + GB_ASSERT(!is_type_tuple(ir_type(field_expr))); + + lbValue ev = ir_emit_conv(proc, field_expr, et); + + irCompoundLitElemTempData data = {}; + data.value = ev; + data.elem_index = cast(i32)index; + array_add(&temp_data, data); + } + } else { + if (ir_is_elem_const(proc->module, elem, et)) { + continue; + } + lbValue field_expr = ir_build_expr(proc, elem); + GB_ASSERT(!is_type_tuple(ir_type(field_expr))); + + lbValue ev = ir_emit_conv(proc, field_expr, et); + + irCompoundLitElemTempData data = {}; + data.value = ev; + data.elem_index = cast(i32)i; + array_add(&temp_data, data); + } + } + + for_array(i, temp_data) { + temp_data[i].gep = ir_emit_ptr_offset(proc, data, ir_const_int(temp_data[i].elem_index)); + } + + for_array(i, temp_data) { + ir_emit_store(proc, temp_data[i].gep, temp_data[i].value); + } + + lbValue count = ir_const_int(slice->ConstantSlice.count); + ir_fill_slice(proc, v, data, count); + } + break; + } + + case Type_DynamicArray: { + if (cl->elems.count == 0) { + break; + } + Type *et = bt->DynamicArray.elem; + gbAllocator a = ir_allocator(); + lbValue size = ir_const_int(type_size_of(et)); + lbValue align = ir_const_int(type_align_of(et)); + + i64 item_count = gb_max(cl->max_count, cl->elems.count); + { + + auto args = array_make(a, 5); + args[0] = ir_emit_conv(proc, v, t_rawptr); + args[1] = size; + args[2] = align; + args[3] = ir_const_int(2*item_count); // TODO(bill): Is this too much waste? + args[4] = ir_emit_source_code_location(proc, proc_name, pos); + ir_emit_runtime_call(proc, "__dynamic_array_reserve", args); + } + + lbValue items = ir_generate_array(proc->module, et, item_count, str_lit("dacl$"), cast(i64)cast(intptr)expr); + + for_array(i, cl->elems) { + Ast *elem = cl->elems[i]; + if (elem->kind == Ast_FieldValue) { + ast_node(fv, FieldValue, elem); + if (is_ast_range(fv->field)) { + ast_node(ie, BinaryExpr, fv->field); + TypeAndValue lo_tav = ie->left->tav; + TypeAndValue hi_tav = ie->right->tav; + GB_ASSERT(lo_tav.mode == Addressing_Constant); + GB_ASSERT(hi_tav.mode == Addressing_Constant); + + TokenKind op = ie->op.kind; + i64 lo = exact_value_to_i64(lo_tav.value); + i64 hi = exact_value_to_i64(hi_tav.value); + if (op == Token_Ellipsis) { + hi += 1; + } + + lbValue value = ir_emit_conv(proc, ir_build_expr(proc, fv->value), et); + + for (i64 k = lo; k < hi; k++) { + lbValue ep = ir_emit_array_epi(proc, items, cast(i32)k); + ir_emit_store(proc, ep, value); + } + } else { + GB_ASSERT(fv->field->tav.mode == Addressing_Constant); + + i64 field_index = exact_value_to_i64(fv->field->tav.value); + + lbValue ev = ir_build_expr(proc, fv->value); + lbValue value = ir_emit_conv(proc, ev, et); + lbValue ep = ir_emit_array_epi(proc, items, cast(i32)field_index); + ir_emit_store(proc, ep, value); + } + } else { + lbValue value = ir_emit_conv(proc, ir_build_expr(proc, elem), et); + lbValue ep = ir_emit_array_epi(proc, items, cast(i32)i); + ir_emit_store(proc, ep, value); + } + } + + { + auto args = array_make(a, 6); + args[0] = ir_emit_conv(proc, v, t_rawptr); + args[1] = size; + args[2] = align; + args[3] = ir_emit_conv(proc, items, t_rawptr); + args[4] = ir_const_int(item_count); + args[5] = ir_emit_source_code_location(proc, proc_name, pos); + ir_emit_runtime_call(proc, "__dynamic_array_append", args); + } + break; + } + + case Type_Basic: { + GB_ASSERT(is_type_any(bt)); + if (cl->elems.count > 0) { + ir_emit_store(proc, v, lb_const_value(proc->module, type, exact_value_compound(expr))); + String field_names[2] = { + str_lit("data"), + str_lit("id"), + }; + Type *field_types[2] = { + t_rawptr, + t_typeid, + }; + + for_array(field_index, cl->elems) { + Ast *elem = cl->elems[field_index]; + + lbValue field_expr = nullptr; + isize index = field_index; + + if (elem->kind == Ast_FieldValue) { + ast_node(fv, FieldValue, elem); + Selection sel = lookup_field(bt, fv->field->Ident.token.string, false); + index = sel.index[0]; + elem = fv->value; + } else { + TypeAndValue tav = type_and_value_of_expr(elem); + Selection sel = lookup_field(bt, field_names[field_index], false); + index = sel.index[0]; + } + + field_expr = ir_build_expr(proc, elem); + + GB_ASSERT(ir_type(field_expr)->kind != Type_Tuple); + + Type *ft = field_types[index]; + lbValue fv = ir_emit_conv(proc, field_expr, ft); + lbValue gep = ir_emit_struct_ep(proc, v, cast(i32)index); + ir_emit_store(proc, gep, fv); + } + } + + break; + } + + case Type_BitSet: { + i64 sz = type_size_of(type); + if (cl->elems.count > 0 && sz > 0) { + ir_emit_store(proc, v, lb_const_value(proc->module, type, exact_value_compound(expr))); + + lbValue lower = ir_value_constant(t_int, exact_value_i64(bt->BitSet.lower)); + for_array(i, cl->elems) { + Ast *elem = cl->elems[i]; + GB_ASSERT(elem->kind != Ast_FieldValue); + + if (ir_is_elem_const(proc->module, elem, et)) { + continue; + } + + lbValue expr = ir_build_expr(proc, elem); + GB_ASSERT(ir_type(expr)->kind != Type_Tuple); + + Type *it = bit_set_to_int(bt); + lbValue e = ir_emit_conv(proc, expr, it); + e = ir_emit_arith(proc, Token_Sub, e, lower, it); + e = ir_emit_arith(proc, Token_Shl, v_one, e, it); + + lbValue old_value = ir_emit_bitcast(proc, ir_emit_load(proc, v), it); + lbValue new_value = ir_emit_arith(proc, Token_Or, old_value, e, it); + new_value = ir_emit_bitcast(proc, new_value, type); + ir_emit_store(proc, v, new_value); + } + } + break; + } + + } + + return ir_addr(v); + case_end; + + case_ast_node(tc, TypeCast, expr); + Type *type = type_of_expr(expr); + lbValue x = ir_build_expr(proc, tc->expr); + lbValue e = nullptr; + switch (tc->token.kind) { + case Token_cast: + e = ir_emit_conv(proc, x, type); + break; + case Token_transmute: + e = lb_emit_transmute(proc, x, type); + break; + default: + GB_PANIC("Invalid AST TypeCast"); + } + lbValue v = ir_add_local_generated(proc, type, false); + ir_emit_store(proc, v, e); + return ir_addr(v); + case_end; + + case_ast_node(ac, AutoCast, expr); + return ir_build_addr(proc, ac->expr); + case_end; +#endif + } + + TokenPos token_pos = ast_token(expr).pos; + GB_PANIC("Unexpected address expression\n" + "\tAst: %.*s @ " + "%.*s(%td:%td)\n", + LIT(ast_strings[expr->kind]), + LIT(token_pos.file), token_pos.line, token_pos.column); + + + return {}; +} + bool lb_init_generator(lbGenerator *gen, Checker *c) { @@ -2614,7 +4185,7 @@ bool lb_init_generator(lbGenerator *gen, Checker *c) { return true; } -lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value={}) { +lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value) { GB_ASSERT(type != nullptr); type = default_type(type); @@ -2629,6 +4200,11 @@ lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value={}) { lbValue g = {}; g.type = alloc_type_pointer(type); g.value = LLVMAddGlobal(m->mod, lb_type(m, type), cast(char const *)str); + if (value.value != nullptr) { + GB_ASSERT(LLVMIsConstant(value.value)); + LLVMSetInitializer(g.value, value.value); + } + lb_add_entity(m, e, g); lb_add_member(m, name, g); return lb_addr(g); diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index a9fd6de7e..3046ebfea 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -187,6 +187,16 @@ struct lbProcedure { bool return_ptr_hint_used; }; +enum lbParamPasskind { + lbParamPass_Value, // Pass by value + lbParamPass_Pointer, // Pass as a pointer rather than by value + lbParamPass_Integer, // Pass as an integer of the same size + lbParamPass_ConstRef, // Pass as a pointer but the value is immutable + lbParamPass_BitCast, // Pass by value and bit cast to the correct type + lbParamPass_Tuple, // Pass across multiple parameters (System V AMD64, up to 2) +}; + + bool lb_init_generator(lbGenerator *gen, Checker *c); void lb_generate_module(lbGenerator *gen); @@ -216,12 +226,17 @@ void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue const &value); lbValue lb_addr_load(lbProcedure *p, lbAddr const &addr); lbValue lb_emit_load(lbProcedure *p, lbValue v); -void lb_build_stmt (lbProcedure *p, Ast *stmt); -lbValue lb_build_expr (lbProcedure *p, Ast *expr); +void lb_build_stmt(lbProcedure *p, Ast *stmt); +lbValue lb_build_expr(lbProcedure *p, Ast *expr); +lbAddr lb_build_addr(lbProcedure *p, Ast *expr); void lb_build_stmt_list(lbProcedure *p, Array const &stmts); lbValue lb_build_gep(lbProcedure *p, lbValue const &value, i32 index) ; +lbValue lb_emit_struct_ep(lbProcedure *p, lbValue s, i32 index); +lbValue lb_emit_struct_ev(lbProcedure *p, lbValue s, i32 index); +lbValue lb_emit_array_epi(lbProcedure *p, lbValue value, i32 index); + lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Type *type); @@ -229,3 +244,10 @@ lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Ty lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t); lbValue lb_build_call_expr(lbProcedure *p, Ast *expr); + + +lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value={}); + +lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr, bool zero_init=true, i32 param_index=0); + +lbValue lb_emit_transmute(lbProcedure *p, lbValue value, Type *t); diff --git a/src/types.cpp b/src/types.cpp index fde8cd5a5..2afba733c 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -1143,13 +1143,13 @@ bool is_type_simd_vector(Type *t) { } Type *base_array_type(Type *t) { - if (is_type_array(t)) { - t = base_type(t); - return t->Array.elem; - } - if (is_type_simd_vector(t)) { - t = base_type(t); - return t->SimdVector.elem; + Type *bt = base_type(t); + if (is_type_array(bt)) { + return bt->Array.elem; + } else if (is_type_enumerated_array(bt)) { + return bt->EnumeratedArray.elem; + } else if (is_type_simd_vector(bt)) { + return bt->SimdVector.elem; } return t; } From 09e1cf0737e9fd950ca63f94fe3d9da62ef48ef9 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 5 Feb 2020 23:41:10 +0000 Subject: [PATCH 08/46] IfStmt --- src/llvm_backend.cpp | 630 ++++++++++++++++++++++++++++++++++++++++++- src/llvm_backend.hpp | 236 ++++++++-------- 2 files changed, 753 insertions(+), 113 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 5d9d0b544..41de200e2 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -897,7 +897,6 @@ void lb_begin_procedure_body(lbProcedure *p) { GB_ASSERT(!is_blank_ident(e->token)); lbAddr res = lb_add_local(p, e->type, e); - gb_printf_err("%.*s\n", LIT(e->token.string)); lbValue c = {}; switch (e->Variable.param_value.kind) { @@ -964,6 +963,57 @@ lbBlock *lb_create_block(lbProcedure *p, char const *name) { return b; } +void lb_start_block(lbProcedure *p, lbBlock *b) { + p->curr_block = b; + LLVMPositionBuilderAtEnd(p->builder, b->block); +} + +void lb_emit_jump(lbProcedure *p, lbBlock *target_block) { + if (p->curr_block == nullptr) { + return; + } + LLVMBuildBr(p->builder, target_block->block); + p->curr_block = nullptr; +} + +lbValue lb_build_cond(lbProcedure *p, Ast *cond, lbBlock *true_block, lbBlock *false_block) { + switch (cond->kind) { + case_ast_node(pe, ParenExpr, cond); + return lb_build_cond(p, pe->expr, true_block, false_block); + case_end; + + case_ast_node(ue, UnaryExpr, cond); + if (ue->op.kind == Token_Not) { + return lb_build_cond(p, ue->expr, false_block, true_block); + } + case_end; + + case_ast_node(be, BinaryExpr, cond); + if (be->op.kind == Token_CmpAnd) { + lbBlock *block = lb_create_block(p, "cmp.and"); + lb_build_cond(p, be->left, block, false_block); + lb_start_block(p, block); + return lb_build_cond(p, be->right, true_block, false_block); + } else if (be->op.kind == Token_CmpOr) { + lbBlock *block = lb_create_block(p, "cmp.or"); + lb_build_cond(p, be->left, true_block, block); + lb_start_block(p, block); + return lb_build_cond(p, be->right, true_block, false_block); + } + case_end; + } + + lbValue v = lb_build_expr(p, cond); + // v = lb_emit_conv(p, v, t_bool); + v = lb_emit_conv(p, v, t_llvm_bool); + + LLVMBuildCondBr(p->builder, v.value, true_block->block, false_block->block); + + return v; +} + + + lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e, bool zero_init, i32 param_index) { LLVMPositionBuilderAtEnd(p->builder, p->decl_block->block); @@ -1021,6 +1071,95 @@ lbValue lb_build_gep(lbProcedure *p, lbValue const &value, i32 index) { return lbValue{LLVMBuildStructGEP2(p->builder, lb_type(p->module, elem_type), value.value, index, ""), elem_type}; } + +lbBranchBlocks lb_lookup_branch_blocks(lbProcedure *p, Ast *ident) { + GB_ASSERT(ident->kind == Ast_Ident); + Entity *e = entity_of_ident(ident); + GB_ASSERT(e->kind == Entity_Label); + for_array(i, p->branch_blocks) { + lbBranchBlocks *b = &p->branch_blocks[i]; + if (b->label == e->Label.node) { + return *b; + } + } + + GB_PANIC("Unreachable"); + lbBranchBlocks empty = {}; + return empty; +} + + +lbTargetList *lb_push_target_list(lbProcedure *p, Ast *label, lbBlock *break_, lbBlock *continue_, lbBlock *fallthrough_) { + lbTargetList *tl = gb_alloc_item(heap_allocator(), lbTargetList); + tl->prev = p->target_list; + tl->break_ = break_; + tl->continue_ = continue_; + tl->fallthrough_ = fallthrough_; + p->target_list = tl; + + if (label != nullptr) { // Set label blocks + GB_ASSERT(label->kind == Ast_Label); + + for_array(i, p->branch_blocks) { + lbBranchBlocks *b = &p->branch_blocks[i]; + GB_ASSERT(b->label != nullptr && label != nullptr); + GB_ASSERT(b->label->kind == Ast_Label); + if (b->label == label) { + b->break_ = break_; + b->continue_ = continue_; + return tl; + } + } + + GB_PANIC("Unreachable"); + } + + return tl; +} + +void lb_pop_target_list(lbProcedure *p) { + p->target_list = p->target_list->prev; +} + + + + +void lb_open_scope(lbProcedure *p) { + p->scope_index += 1; +} + +void lb_close_scope(lbProcedure *p, lbDeferExitKind kind, lbBlock *block, bool pop_stack=true) { + GB_ASSERT(p->scope_index > 0); + + // NOTE(bill): Remove `context`s made in that scope + + isize end_idx = p->context_stack.count-1; + isize pop_count = 0; + + for (;;) { + if (end_idx < 0) { + break; + } + lbContextData *end = &p->context_stack[end_idx]; + if (end == nullptr) { + break; + } + if (end->scope_index != p->scope_index) { + break; + } + end_idx -= 1; + pop_count += 1; + } + if (pop_stack) { + for (isize i = 0; i < pop_count; i++) { + array_pop(&p->context_stack); + } + } + + + p->scope_index -= 1; +} + void lb_build_when_stmt(lbProcedure *p, AstWhenStmt *ws) { TypeAndValue tv = type_and_value_of_expr(ws->cond); GB_ASSERT(is_type_boolean(tv.type)); @@ -1056,7 +1195,22 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { case_ast_node(bs, BlockStmt, node); - lb_build_stmt_list(p, bs->stmts); + if (bs->label != nullptr) { + lbBlock *done = lb_create_block(p, "block.done"); + lbTargetList *tl = lb_push_target_list(p, bs->label, done, nullptr, nullptr); + tl->is_block = true; + + lb_open_scope(p); + lb_build_stmt_list(p, bs->stmts); + lb_close_scope(p, lbDeferExit_Default, nullptr); + + lb_emit_jump(p, done); + lb_start_block(p, done); + } else { + lb_open_scope(p); + lb_build_stmt_list(p, bs->stmts); + lb_close_scope(p, lbDeferExit_Default, nullptr); + } case_end; case_ast_node(vd, ValueDecl, node); @@ -1327,6 +1481,49 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { case_end; case_ast_node(is, IfStmt, node); + lb_open_scope(p); // Scope #1 + + if (is->init != nullptr) { + // TODO(bill): Should this have a separate block to begin with? + #if 1 + lbBlock *init = lb_create_block(p, "if.init"); + lb_emit_jump(p, init); + lb_start_block(p, init); + #endif + lb_build_stmt(p, is->init); + } + lbBlock *then = lb_create_block(p, "if.then"); + lbBlock *done = lb_create_block(p, "if.done"); + lbBlock *else_ = done; + if (is->else_stmt != nullptr) { + else_ = lb_create_block(p, "if.else"); + } + + lb_build_cond(p, is->cond, then, else_); + lb_start_block(p, then); + + if (is->label != nullptr) { + lbTargetList *tl = lb_push_target_list(p, is->label, done, nullptr, nullptr); + tl->is_block = true; + } + + lb_build_stmt(p, is->body); + + lb_emit_jump(p, done); + + if (is->else_stmt != nullptr) { + lb_start_block(p, else_); + + lb_open_scope(p); + lb_build_stmt(p, is->else_stmt); + lb_close_scope(p, lbDeferExit_Default, nullptr); + + lb_emit_jump(p, done); + } + + + lb_start_block(p, done); + lb_close_scope(p, lbDeferExit_Default, nullptr); case_end; case_ast_node(fs, ForStmt, node); @@ -1345,6 +1542,34 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { case_end; case_ast_node(bs, BranchStmt, node); + lbBlock *block = nullptr; + + if (bs->label != nullptr) { + lbBranchBlocks bb = lb_lookup_branch_blocks(p, bs->label); + switch (bs->token.kind) { + case Token_break: block = bb.break_; break; + case Token_continue: block = bb.continue_; break; + case Token_fallthrough: + GB_PANIC("fallthrough cannot have a label"); + break; + } + } else { + for (lbTargetList *t = p->target_list; t != nullptr && block == nullptr; t = t->prev) { + if (t->is_block) { + continue; + } + + switch (bs->token.kind) { + case Token_break: block = t->break_; break; + case Token_continue: block = t->continue_; break; + case Token_fallthrough: block = t->fallthrough_; break; + } + } + } + if (block != nullptr) { + // ir_emit_defer_stmts(p, irDeferExit_Branch, block); + } + lb_emit_jump(p, block); case_end; } } @@ -1354,6 +1579,12 @@ lbValue lb_const_nil(lbModule *m, Type *type) { return lbValue{v, type}; } +lbValue lb_const_undef(lbModule *m, Type *type) { + LLVMValueRef v = LLVMGetUndef(lb_type(m, type)); + return lbValue{v, type}; +} + + lbValue lb_const_int(lbModule *m, Type *type, u64 value) { lbValue res = {}; res.value = LLVMConstInt(lb_type(m, type), value, !is_type_unsigned(type)); @@ -2140,8 +2371,397 @@ lbValue lb_build_binary_expr(lbProcedure *p, Ast *expr) { } lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { - // TODO(bill): lb_emit_conv - return value; + lbModule *m = p->module; + + Type *src_type = value.type; + if (are_types_identical(t, src_type)) { + return value; + } + + Type *src = core_type(src_type); + Type *dst = core_type(t); + + + // if (is_type_untyped_nil(src) && type_has_nil(dst)) { + if (is_type_untyped_nil(src)) { + return lb_const_nil(m, t); + } + if (is_type_untyped_undef(src)) { + return lb_const_undef(m, t); + } + + if (LLVMIsConstant(value.value)) { + if (is_type_any(dst)) { + lbAddr default_value = lb_add_local_generated(p, default_type(src_type), false); + lb_addr_store(p, default_value, value); + return lb_emit_conv(p, lb_addr_load(p, default_value), t_any); + } else if (dst->kind == Type_Basic) { + if (is_type_float(dst)) { + return value; + } else if (is_type_integer(dst)) { + return value; + } + // ExactValue ev = value->Constant.value; + // if (is_type_float(dst)) { + // ev = exact_value_to_float(ev); + // } else if (is_type_complex(dst)) { + // ev = exact_value_to_complex(ev); + // } else if (is_type_quaternion(dst)) { + // ev = exact_value_to_quaternion(ev); + // } else if (is_type_string(dst)) { + // // Handled elsewhere + // GB_ASSERT_MSG(ev.kind == ExactValue_String, "%d", ev.kind); + // } else if (is_type_integer(dst)) { + // ev = exact_value_to_integer(ev); + // } else if (is_type_pointer(dst)) { + // // IMPORTANT NOTE(bill): LLVM doesn't support pointer constants expect 'null' + // lbValue i = ir_add_module_constant(p->module, t_uintptr, ev); + // return ir_emit(p, ir_instr_conv(p, irConv_inttoptr, i, t_uintptr, dst)); + // } + // return lb_const_value(p->module, t, ev); + } + } + + if (are_types_identical(src, dst)) { + if (!are_types_identical(src_type, t)) { + return lb_emit_transmute(p, value, t); + } + return value; + } + + + + // bool <-> llvm bool + if (is_type_boolean(src) && dst == t_llvm_bool) { + lbValue res = {}; + res.value = LLVMBuildTrunc(p->builder, value.value, lb_type(m, dst), ""); + res.type = dst; + return res; + } + if (src == t_llvm_bool && is_type_boolean(dst)) { + lbValue res = {}; + res.value = LLVMBuildZExt(p->builder, value.value, lb_type(m, dst), ""); + res.type = dst; + return res; + } + +#if 0 + + // integer -> integer + if (is_type_integer(src) && is_type_integer(dst)) { + GB_ASSERT(src->kind == Type_Basic && + dst->kind == Type_Basic); + i64 sz = type_size_of(default_type(src)); + i64 dz = type_size_of(default_type(dst)); + + if (sz > 1 && is_type_different_to_arch_endianness(src)) { + Type *platform_src_type = integer_endian_type_to_platform_type(src); + value = ir_emit_byte_swap(p, value, platform_src_type); + } + irConvKind kind = irConv_trunc; + + if (dz < sz) { + kind = irConv_trunc; + } else if (dz == sz) { + // NOTE(bill): In LLVM, all integers are signed and rely upon 2's compliment + // NOTE(bill): Copy the value just for type correctness + kind = irConv_bitcast; + } else if (dz > sz) { + if (is_type_unsigned(src)) { + kind = irConv_zext; // zero extent + } else { + kind = irConv_sext; // sign extent + } + } + + if (dz > 1 && is_type_different_to_arch_endianness(dst)) { + Type *platform_dst_type = integer_endian_type_to_platform_type(dst); + lbValue res = ir_emit(p, ir_instr_conv(p, kind, value, src_type, platform_dst_type)); + return ir_emit_byte_swap(p, res, t); + } else { + return ir_emit(p, ir_instr_conv(p, kind, value, src_type, t)); + } + } + + // boolean -> boolean/integer + if (is_type_boolean(src) && (is_type_boolean(dst) || is_type_integer(dst))) { + lbValue b = ir_emit(p, ir_instr_binary_op(p, Token_NotEq, value, v_zero, t_llvm_bool)); + return ir_emit(p, ir_instr_conv(p, irConv_zext, b, t_llvm_bool, t)); + } + + if (is_type_cstring(src) && is_type_u8_ptr(dst)) { + return ir_emit_bitcast(p, value, dst); + } + if (is_type_u8_ptr(src) && is_type_cstring(dst)) { + return ir_emit_bitcast(p, value, dst); + } + if (is_type_cstring(src) && is_type_rawptr(dst)) { + return ir_emit_bitcast(p, value, dst); + } + if (is_type_rawptr(src) && is_type_cstring(dst)) { + return ir_emit_bitcast(p, value, dst); + } + + if (are_types_identical(src, t_cstring) && are_types_identical(dst, t_string)) { + lbValue c = ir_emit_conv(p, value, t_cstring); + auto args = array_make(ir_allocator(), 1); + args[0] = c; + lbValue s = ir_emit_runtime_call(p, "cstring_to_string", args); + return ir_emit_conv(p, s, dst); + } + + + // integer -> boolean + if (is_type_integer(src) && is_type_boolean(dst)) { + return ir_emit_comp(p, Token_NotEq, value, v_zero); + } + + // float -> float + if (is_type_float(src) && is_type_float(dst)) { + gbAllocator a = ir_allocator(); + i64 sz = type_size_of(src); + i64 dz = type_size_of(dst); + irConvKind kind = irConv_fptrunc; + if (dz >= sz) { + kind = irConv_fpext; + } + return ir_emit(p, ir_instr_conv(p, kind, value, src_type, t)); + } + + if (is_type_complex(src) && is_type_complex(dst)) { + Type *ft = base_complex_elem_type(dst); + lbValue gen = ir_add_local_generated(p, dst, false); + lbValue real = ir_emit_conv(p, ir_emit_struct_ev(p, value, 0), ft); + lbValue imag = ir_emit_conv(p, ir_emit_struct_ev(p, value, 1), ft); + ir_emit_store(p, ir_emit_struct_ep(p, gen, 0), real); + ir_emit_store(p, ir_emit_struct_ep(p, gen, 1), imag); + return ir_emit_load(p, gen); + } + + if (is_type_quaternion(src) && is_type_quaternion(dst)) { + // @QuaternionLayout + Type *ft = base_complex_elem_type(dst); + lbValue gen = ir_add_local_generated(p, dst, false); + lbValue q0 = ir_emit_conv(p, ir_emit_struct_ev(p, value, 0), ft); + lbValue q1 = ir_emit_conv(p, ir_emit_struct_ev(p, value, 1), ft); + lbValue q2 = ir_emit_conv(p, ir_emit_struct_ev(p, value, 2), ft); + lbValue q3 = ir_emit_conv(p, ir_emit_struct_ev(p, value, 3), ft); + ir_emit_store(p, ir_emit_struct_ep(p, gen, 0), q0); + ir_emit_store(p, ir_emit_struct_ep(p, gen, 1), q1); + ir_emit_store(p, ir_emit_struct_ep(p, gen, 2), q2); + ir_emit_store(p, ir_emit_struct_ep(p, gen, 3), q3); + return ir_emit_load(p, gen); + } + + if (is_type_float(src) && is_type_complex(dst)) { + Type *ft = base_complex_elem_type(dst); + lbValue gen = ir_add_local_generated(p, dst, true); + lbValue real = ir_emit_conv(p, value, ft); + ir_emit_store(p, ir_emit_struct_ep(p, gen, 0), real); + return ir_emit_load(p, gen); + } + if (is_type_float(src) && is_type_quaternion(dst)) { + Type *ft = base_complex_elem_type(dst); + lbValue gen = ir_add_local_generated(p, dst, true); + lbValue real = ir_emit_conv(p, value, ft); + // @QuaternionLayout + ir_emit_store(p, ir_emit_struct_ep(p, gen, 3), real); + return ir_emit_load(p, gen); + } + if (is_type_complex(src) && is_type_quaternion(dst)) { + Type *ft = base_complex_elem_type(dst); + lbValue gen = ir_add_local_generated(p, dst, true); + lbValue real = ir_emit_conv(p, ir_emit_struct_ev(p, value, 0), ft); + lbValue imag = ir_emit_conv(p, ir_emit_struct_ev(p, value, 1), ft); + // @QuaternionLayout + ir_emit_store(p, ir_emit_struct_ep(p, gen, 3), real); + ir_emit_store(p, ir_emit_struct_ep(p, gen, 0), imag); + return ir_emit_load(p, gen); + } + + + + // float <-> integer + if (is_type_float(src) && is_type_integer(dst)) { + irConvKind kind = irConv_fptosi; + if (is_type_unsigned(dst)) { + kind = irConv_fptoui; + } + return ir_emit(p, ir_instr_conv(p, kind, value, src_type, t)); + } + if (is_type_integer(src) && is_type_float(dst)) { + irConvKind kind = irConv_sitofp; + if (is_type_unsigned(src)) { + kind = irConv_uitofp; + } + return ir_emit(p, ir_instr_conv(p, kind, value, src_type, t)); + } + + // Pointer <-> uintptr + if (is_type_pointer(src) && is_type_uintptr(dst)) { + return ir_emit_ptr_to_uintptr(p, value, t); + } + if (is_type_uintptr(src) && is_type_pointer(dst)) { + return ir_emit_uintptr_to_ptr(p, value, t); + } + + if (is_type_union(dst)) { + for_array(i, dst->Union.variants) { + Type *vt = dst->Union.variants[i]; + if (are_types_identical(vt, src_type)) { + ir_emit_comment(p, str_lit("union - child to parent")); + gbAllocator a = ir_allocator(); + lbValue parent = ir_add_local_generated(p, t, true); + ir_emit_store_union_variant(p, parent, value, vt); + return ir_emit_load(p, parent); + } + } + } + + // NOTE(bill): This has to be done before 'Pointer <-> Pointer' as it's + // subtype polymorphism casting + if (check_is_assignable_to_using_subtype(src_type, t)) { + Type *st = type_deref(src_type); + Type *pst = st; + st = type_deref(st); + + bool st_is_ptr = is_type_pointer(src_type); + st = base_type(st); + + Type *dt = t; + bool dt_is_ptr = type_deref(dt) != dt; + + GB_ASSERT(is_type_struct(st) || is_type_raw_union(st)); + String field_name = ir_lookup_subtype_polymorphic_field(p->module->info, t, src_type); + if (field_name.len > 0) { + // NOTE(bill): It can be casted + Selection sel = lookup_field(st, field_name, false, true); + if (sel.entity != nullptr) { + ir_emit_comment(p, str_lit("cast - polymorphism")); + if (st_is_ptr) { + lbValue res = ir_emit_deep_field_gep(p, value, sel); + Type *rt = ir_type(res); + if (!are_types_identical(rt, dt) && are_types_identical(type_deref(rt), dt)) { + res = ir_emit_load(p, res); + } + return res; + } else { + if (is_type_pointer(ir_type(value))) { + Type *rt = ir_type(value); + if (!are_types_identical(rt, dt) && are_types_identical(type_deref(rt), dt)) { + value = ir_emit_load(p, value); + } else { + value = ir_emit_deep_field_gep(p, value, sel); + return ir_emit_load(p, value); + } + } + + return ir_emit_deep_field_ev(p, value, sel); + + } + } else { + GB_PANIC("invalid subtype cast %s.%.*s", type_to_string(src_type), LIT(field_name)); + } + } + } + + + + // Pointer <-> Pointer + if (is_type_pointer(src) && is_type_pointer(dst)) { + return ir_emit_bitcast(p, value, t); + } + + + + // proc <-> proc + if (is_type_p(src) && is_type_p(dst)) { + return ir_emit_bitcast(p, value, t); + } + + // pointer -> proc + if (is_type_pointer(src) && is_type_p(dst)) { + return ir_emit_bitcast(p, value, t); + } + // proc -> pointer + if (is_type_p(src) && is_type_pointer(dst)) { + return ir_emit_bitcast(p, value, t); + } + + + + // []byte/[]u8 <-> string + if (is_type_u8_slice(src) && is_type_string(dst)) { + lbValue elem = ir_slice_elem(p, value); + lbValue len = ir_slice_len(p, value); + return ir_emit_string(p, elem, len); + } + if (is_type_string(src) && is_type_u8_slice(dst)) { + lbValue elem = ir_string_elem(p, value); + lbValue elem_ptr = ir_add_local_generated(p, ir_type(elem), false); + ir_emit_store(p, elem_ptr, elem); + + lbValue len = ir_string_len(p, value); + lbValue slice = ir_add_local_slice(p, t, elem_ptr, v_zero, len); + return ir_emit_load(p, slice); + } + + if (is_type_array(dst)) { + Type *elem = dst->Array.elem; + lbValue e = ir_emit_conv(p, value, elem); + // NOTE(bill): Doesn't need to be zero because it will be initialized in the loops + lbValue v = ir_add_local_generated(p, t, false); + isize index_count = cast(isize)dst->Array.count; + + for (i32 i = 0; i < index_count; i++) { + lbValue elem = ir_emit_array_epi(p, v, i); + ir_emit_store(p, elem, e); + } + return ir_emit_load(p, v); + } + + if (is_type_any(dst)) { + lbValue result = ir_add_local_generated(p, t_any, true); + + if (is_type_untyped_nil(src)) { + return ir_emit_load(p, result); + } + + Type *st = default_type(src_type); + + lbValue data = ir_address_from_load_or_generate_local(p, value); + GB_ASSERT_MSG(is_type_pointer(ir_type(data)), type_to_string(ir_type(data))); + GB_ASSERT_MSG(is_type_typed(st), "%s", type_to_string(st)); + data = ir_emit_conv(p, data, t_rawptr); + + + lbValue id = ir_typeid(p->module, st); + + ir_emit_store(p, ir_emit_struct_ep(p, result, 0), data); + ir_emit_store(p, ir_emit_struct_ep(p, result, 1), id); + + return ir_emit_load(p, result); + } + + if (is_type_untyped(src)) { + if (is_type_string(src) && is_type_string(dst)) { + lbValue result = ir_add_local_generated(p, t, false); + ir_emit_store(p, result, value); + return ir_emit_load(p, result); + } + } +#endif + + gb_printf_err("ir_emit_conv: src -> dst\n"); + gb_printf_err("Not Identical %s != %s\n", type_to_string(src_type), type_to_string(t)); + gb_printf_err("Not Identical %s != %s\n", type_to_string(src), type_to_string(dst)); + + + GB_PANIC("Invalid type conversion: '%s' to '%s' for procedure '%.*s'", + type_to_string(src_type), type_to_string(t), + LIT(p->name)); + + return {}; } lbValue lb_emit_transmute(lbProcedure *p, lbValue value, Type *t) { @@ -3627,7 +4247,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { } gbAllocator a = ir_allocator(); { - auto args = array_make(a, 3); + auto args = array_make(a, 3); args[0] = ir_gen_map_header(proc, v, type); args[1] = ir_const_int(2*cl->elems.count); args[2] = ir_emit_source_code_location(proc, proc_name, pos); diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index 3046ebfea..0dfd14163 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -85,6 +85,134 @@ struct lbBranchBlocks { lbBlock *continue_; }; + +struct lbContextData { + lbAddr ctx; + isize scope_index; +}; + +enum lbParamPasskind { + lbParamPass_Value, // Pass by value + lbParamPass_Pointer, // Pass as a pointer rather than by value + lbParamPass_Integer, // Pass as an integer of the same size + lbParamPass_ConstRef, // Pass as a pointer but the value is immutable + lbParamPass_BitCast, // Pass by value and bit cast to the correct type + lbParamPass_Tuple, // Pass across multiple parameters (System V AMD64, up to 2) +}; + +enum lbDeferExitKind { + lbDeferExit_Default, + lbDeferExit_Return, + lbDeferExit_Branch, +}; + +struct lbTargetList { + lbTargetList *prev; + bool is_block; + lbBlock * break_; + lbBlock * continue_; + lbBlock * fallthrough_; +}; + + + +struct lbProcedure { + lbProcedure *parent; + Array children; + + Entity * entity; + lbModule * module; + String name; + Type * type; + Ast * type_expr; + Ast * body; + u64 tags; + ProcInlining inlining; + bool is_foreign; + bool is_export; + bool is_entry_point; + + + LLVMValueRef value; + LLVMBuilderRef builder; + + lbAddr return_ptr; + Array params; + Array blocks; + Array branch_blocks; + Scope * curr_scope; + i32 scope_index; + lbBlock * decl_block; + lbBlock * entry_block; + lbBlock * curr_block; + lbTargetList * target_list; + + Array context_stack; + + lbValue return_ptr_hint_value; + Ast * return_ptr_hint_ast; + bool return_ptr_hint_used; +}; + + + + + +bool lb_init_generator(lbGenerator *gen, Checker *c); +void lb_generate_module(lbGenerator *gen); + +String lb_mangle_name(lbModule *m, Entity *e); +String lb_get_entity_name(lbModule *m, Entity *e, String name = {}); + +LLVMAttributeRef lb_create_enum_attribute(LLVMContextRef ctx, char const *name, u64 value); +void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *name, u64 value); +void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *name); +lbProcedure *lb_create_procedure(lbModule *module, Entity *entity); +void lb_end_procedure(lbProcedure *p); + + +LLVMTypeRef lb_type(lbModule *m, Type *type); + +lbBlock *lb_create_block(lbProcedure *p, char const *name); + +lbValue lb_const_nil(lbModule *m, Type *type); +lbValue lb_const_value(lbModule *m, Type *type, ExactValue value); + + +lbAddr lb_addr(lbValue addr); +Type *lb_addr_type(lbAddr const &addr); +LLVMTypeRef lb_addr_lb_type(lbAddr const &addr); +void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue const &value); +lbValue lb_addr_load(lbProcedure *p, lbAddr const &addr); +lbValue lb_emit_load(lbProcedure *p, lbValue v); + +void lb_build_stmt(lbProcedure *p, Ast *stmt); +lbValue lb_build_expr(lbProcedure *p, Ast *expr); +lbAddr lb_build_addr(lbProcedure *p, Ast *expr); +void lb_build_stmt_list(lbProcedure *p, Array const &stmts); + +lbValue lb_build_gep(lbProcedure *p, lbValue const &value, i32 index) ; + +lbValue lb_emit_struct_ep(lbProcedure *p, lbValue s, i32 index); +lbValue lb_emit_struct_ev(lbProcedure *p, lbValue s, i32 index); +lbValue lb_emit_array_epi(lbProcedure *p, lbValue value, i32 index); + + +lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Type *type); + + + +lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t); +lbValue lb_build_call_expr(lbProcedure *p, Ast *expr); + + +lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value={}); + +lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr, bool zero_init=true, i32 param_index=0); + +lbValue lb_emit_transmute(lbProcedure *p, lbValue value, Type *t); + + enum lbCallingConventionKind { lbCallingConvention_C = 0, lbCallingConvention_Fast = 8, @@ -143,111 +271,3 @@ lbCallingConventionKind const lb_calling_convention_map[ProcCC_MAX] = { lbCallingConvention_C, // ProcCC_None, }; - -struct lbContextData { - lbAddr ctx; - isize scope_index; -}; - - -struct lbProcedure { - lbProcedure *parent; - Array children; - - Entity * entity; - lbModule * module; - String name; - Type * type; - Ast * type_expr; - Ast * body; - u64 tags; - ProcInlining inlining; - bool is_foreign; - bool is_export; - bool is_entry_point; - - - LLVMValueRef value; - LLVMBuilderRef builder; - - lbAddr return_ptr; - Array params; - Array blocks; - Array branch_blocks; - Scope * curr_scope; - i32 scope_index; - lbBlock * decl_block; - lbBlock * entry_block; - lbBlock * curr_block; - - Array context_stack; - - lbValue return_ptr_hint_value; - Ast * return_ptr_hint_ast; - bool return_ptr_hint_used; -}; - -enum lbParamPasskind { - lbParamPass_Value, // Pass by value - lbParamPass_Pointer, // Pass as a pointer rather than by value - lbParamPass_Integer, // Pass as an integer of the same size - lbParamPass_ConstRef, // Pass as a pointer but the value is immutable - lbParamPass_BitCast, // Pass by value and bit cast to the correct type - lbParamPass_Tuple, // Pass across multiple parameters (System V AMD64, up to 2) -}; - - - -bool lb_init_generator(lbGenerator *gen, Checker *c); -void lb_generate_module(lbGenerator *gen); - -String lb_mangle_name(lbModule *m, Entity *e); -String lb_get_entity_name(lbModule *m, Entity *e, String name = {}); - -LLVMAttributeRef lb_create_enum_attribute(LLVMContextRef ctx, char const *name, u64 value); -void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *name, u64 value); -void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *name); -lbProcedure *lb_create_procedure(lbModule *module, Entity *entity); -void lb_end_procedure(lbProcedure *p); - - -LLVMTypeRef lb_type(lbModule *m, Type *type); - -lbBlock *lb_create_block(lbProcedure *p, char const *name); - -lbValue lb_const_nil(lbModule *m, Type *type); -lbValue lb_const_value(lbModule *m, Type *type, ExactValue value); - - -lbAddr lb_addr(lbValue addr); -Type *lb_addr_type(lbAddr const &addr); -LLVMTypeRef lb_addr_lb_type(lbAddr const &addr); -void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue const &value); -lbValue lb_addr_load(lbProcedure *p, lbAddr const &addr); -lbValue lb_emit_load(lbProcedure *p, lbValue v); - -void lb_build_stmt(lbProcedure *p, Ast *stmt); -lbValue lb_build_expr(lbProcedure *p, Ast *expr); -lbAddr lb_build_addr(lbProcedure *p, Ast *expr); -void lb_build_stmt_list(lbProcedure *p, Array const &stmts); - -lbValue lb_build_gep(lbProcedure *p, lbValue const &value, i32 index) ; - -lbValue lb_emit_struct_ep(lbProcedure *p, lbValue s, i32 index); -lbValue lb_emit_struct_ev(lbProcedure *p, lbValue s, i32 index); -lbValue lb_emit_array_epi(lbProcedure *p, lbValue value, i32 index); - - -lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Type *type); - - - -lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t); -lbValue lb_build_call_expr(lbProcedure *p, Ast *expr); - - -lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value={}); - -lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr, bool zero_init=true, i32 param_index=0); - -lbValue lb_emit_transmute(lbProcedure *p, lbValue value, Type *t); From 7d9600b740aa815c0eaa8a5424e7949a2ac2963e Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 6 Feb 2020 23:33:41 +0000 Subject: [PATCH 09/46] Ternary Expr; lbAddr extra; Phi node support --- src/llvm_backend.cpp | 1138 ++++++++++++++++++++++++++++++++++++------ src/llvm_backend.hpp | 39 +- src/main.cpp | 2 +- src/tokenizer.cpp | 2 +- src/types.cpp | 6 + 5 files changed, 1037 insertions(+), 150 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 41de200e2..886c87e7d 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -15,12 +15,49 @@ lbAddr lb_addr(lbValue addr) { } Type *lb_addr_type(lbAddr const &addr) { + if (addr.addr.value == nullptr) { + return nullptr; + } + if (addr.kind == lbAddr_Map) { + Type *t = base_type(addr.map.type); + GB_ASSERT(is_type_map(t)); + return t->Map.value; + } return type_deref(addr.addr.type); } LLVMTypeRef lb_addr_lb_type(lbAddr const &addr) { return LLVMGetElementType(LLVMTypeOf(addr.addr.value)); } +lbValue lb_addr_get_ptr(lbProcedure *p, lbAddr const &addr) { + if (addr.addr.value == nullptr) { + GB_PANIC("Illegal addr -> nullptr"); + return {}; + } + + switch (addr.kind) { + case lbAddr_Map: + case lbAddr_BitField: { + lbValue v = lb_addr_load(p, addr); + return lb_address_from_load_or_generate_local(p, v); + } + + case lbAddr_Context: + GB_PANIC("lbAddr_Context should be handled elsewhere"); + } + + return addr.addr; +} + +lbAddr lb_addr_bit_field(lbValue value, i32 index) { + lbAddr addr = {}; + addr.kind = lbAddr_BitField; + addr.addr = value; + addr.bit_field.value_index = index; + return addr; +} + + void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue const &value) { if (addr.addr.value == nullptr) { return; @@ -619,11 +656,13 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity) { p->is_export = false; p->is_entry_point = false; - p->children.allocator = heap_allocator(); - p->params.allocator = heap_allocator(); - p->blocks.allocator = heap_allocator(); - p->branch_blocks.allocator = heap_allocator(); - p->context_stack.allocator = heap_allocator(); + gbAllocator a = heap_allocator(); + p->children.allocator = a; + p->params.allocator = a; + p->defer_stmts.allocator = a; + p->blocks.allocator = a; + p->branch_blocks.allocator = a; + p->context_stack.allocator = a; char *name = alloc_cstring(heap_allocator(), p->name); @@ -953,13 +992,26 @@ void lb_end_procedure(lbProcedure *p) { LLVMDisposeBuilder(p->builder); } +void lb_add_edge(lbBlock *from, lbBlock *to) { + LLVMValueRef instr = LLVMGetLastInstruction(from->block); + if (instr == nullptr || !LLVMIsATerminatorInst(instr)) { + array_add(&from->succs, to); + array_add(&to->preds, from); + } +} + lbBlock *lb_create_block(lbProcedure *p, char const *name) { lbBlock *b = gb_alloc_item(heap_allocator(), lbBlock); b->block = LLVMAppendBasicBlockInContext(p->module->ctx, p->value, name); b->scope = p->curr_scope; b->scope_index = p->scope_index; + + b->preds.allocator = heap_allocator(); + b->succs.allocator = heap_allocator(); + array_add(&p->blocks, b); + return b; } @@ -972,10 +1024,21 @@ void lb_emit_jump(lbProcedure *p, lbBlock *target_block) { if (p->curr_block == nullptr) { return; } + lb_add_edge(p->curr_block, target_block); LLVMBuildBr(p->builder, target_block->block); p->curr_block = nullptr; } +void lb_emit_if(lbProcedure *p, lbValue cond, lbBlock *true_block, lbBlock *false_block) { + lbBlock *b = p->curr_block; + if (b == nullptr) { + return; + } + lb_add_edge(b, true_block); + lb_add_edge(b, false_block); + LLVMBuildCondBr(p->builder, cond.value, true_block->block, false_block->block); +} + lbValue lb_build_cond(lbProcedure *p, Ast *cond, lbBlock *true_block, lbBlock *false_block) { switch (cond->kind) { case_ast_node(pe, ParenExpr, cond); @@ -1039,9 +1102,7 @@ lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e, bool zero_init, i32 p } lbAddr lb_add_local_generated(lbProcedure *p, Type *type, bool zero_init) { - lbAddr addr = lb_add_local(p, type, nullptr); - lb_addr_store(p, addr, lb_const_nil(p->module, type)); - return addr; + return lb_add_local(p, type, nullptr, zero_init); } @@ -1129,6 +1190,7 @@ void lb_open_scope(lbProcedure *p) { } void lb_close_scope(lbProcedure *p, lbDeferExitKind kind, lbBlock *block, bool pop_stack=true) { + lb_emit_defer_stmts(p, kind, block); GB_ASSERT(p->scope_index > 0); // NOTE(bill): Remove `context`s made in that scope @@ -1527,6 +1589,52 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { case_end; case_ast_node(fs, ForStmt, node); + lb_open_scope(p); // Open Scope here + + if (fs->init != nullptr) { + #if 1 + lbBlock *init = lb_create_block(p, "for.init"); + lb_emit_jump(p, init); + lb_start_block(p, init); + #endif + lb_build_stmt(p, fs->init); + } + lbBlock *body = lb_create_block(p, "for.body"); + lbBlock *done = lb_create_block(p, "for.done"); // NOTE(bill): Append later + lbBlock *loop = body; + if (fs->cond != nullptr) { + loop = lb_create_block(p, "for.loop"); + } + lbBlock *post = loop; + if (fs->post != nullptr) { + post = lb_create_block(p, "for.post"); + } + + + lb_emit_jump(p, loop); + lb_start_block(p, loop); + + if (loop != body) { + lb_build_cond(p, fs->cond, body, done); + lb_start_block(p, body); + } + + lb_push_target_list(p, fs->label, done, post, nullptr); + + lb_build_stmt(p, fs->body); + lb_close_scope(p, lbDeferExit_Default, nullptr); + + lb_pop_target_list(p); + + lb_emit_jump(p, post); + + if (fs->post != nullptr) { + lb_start_block(p, post); + lb_build_stmt(p, fs->post); + lb_emit_jump(p, loop); + } + + lb_start_block(p, done); case_end; case_ast_node(rs, RangeStmt, node); @@ -1536,6 +1644,112 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { case_end; case_ast_node(ss, SwitchStmt, node); + if (ss->init != nullptr) { + lb_build_stmt(p, ss->init); + } + lbValue tag = lb_const_bool(p->module, t_llvm_bool, true); + if (ss->tag != nullptr) { + tag = lb_build_expr(p, ss->tag); + } + lbBlock *done = lb_create_block(p, "switch.done"); // NOTE(bill): Append later + + ast_node(body, BlockStmt, ss->body); + + Array default_stmts = {}; + lbBlock *default_fall = nullptr; + lbBlock *default_block = nullptr; + + lbBlock *fall = nullptr; + bool append_fall = false; + + isize case_count = body->stmts.count; + for_array(i, body->stmts) { + Ast *clause = body->stmts[i]; + lbBlock *body = fall; + + ast_node(cc, CaseClause, clause); + + if (body == nullptr) { + if (cc->list.count == 0) { + body = lb_create_block(p, "switch.dflt.body"); + } else { + body = lb_create_block(p, "switch.case.body"); + } + } + if (append_fall && body == fall) { + append_fall = false; + } + + fall = done; + if (i+1 < case_count) { + append_fall = true; + fall = lb_create_block(p, "switch.fall.body"); + } + + if (cc->list.count == 0) { + // default case + default_stmts = cc->stmts; + default_fall = fall; + default_block = body; + continue; + } + + lbBlock *next_cond = nullptr; + for_array(j, cc->list) { + Ast *expr = unparen_expr(cc->list[j]); + next_cond = lb_create_block(p, "switch.case.next"); + lbValue cond = lb_const_bool(p->module, t_llvm_bool, false); + if (is_ast_range(expr)) { + ast_node(ie, BinaryExpr, expr); + TokenKind op = Token_Invalid; + switch (ie->op.kind) { + case Token_Ellipsis: op = Token_LtEq; break; + case Token_RangeHalf: op = Token_Lt; break; + default: GB_PANIC("Invalid interval operator"); break; + } + lbValue lhs = lb_build_expr(p, ie->left); + lbValue rhs = lb_build_expr(p, ie->right); + // TODO(bill): do short circuit here + lbValue cond_lhs = lb_emit_comp(p, Token_LtEq, lhs, tag); + lbValue cond_rhs = lb_emit_comp(p, op, tag, rhs); + cond = lb_emit_arith(p, Token_And, cond_lhs, cond_rhs, t_bool); + } else { + if (expr->tav.mode == Addressing_Type) { + GB_ASSERT(is_type_typeid(tag.type)); + lbValue e = lb_typeid(p->module, expr->tav.type); + e = lb_emit_conv(p, e, tag.type); + cond = lb_emit_comp(p, Token_CmpEq, tag, e); + } else { + cond = lb_emit_comp(p, Token_CmpEq, tag, lb_build_expr(p, expr)); + } + } + lb_emit_if(p, cond, body, next_cond); + lb_start_block(p, next_cond); + } + lb_start_block(p, body); + + lb_push_target_list(p, ss->label, done, nullptr, fall); + lb_open_scope(p); + lb_build_stmt_list(p, cc->stmts); + lb_close_scope(p, lbDeferExit_Default, body); + lb_pop_target_list(p); + + lb_emit_jump(p, done); + p->curr_block = next_cond; + } + + if (default_block != nullptr) { + lb_emit_jump(p, default_block); + lb_start_block(p, default_block); + + lb_push_target_list(p, ss->label, done, nullptr, default_fall); + lb_open_scope(p); + lb_build_stmt_list(p, default_stmts); + lb_close_scope(p, lbDeferExit_Default, default_block); + lb_pop_target_list(p); + } + lb_emit_jump(p, done); + lb_start_block(p, done); case_end; case_ast_node(ss, TypeSwitchStmt, node); @@ -1567,7 +1781,7 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { } } if (block != nullptr) { - // ir_emit_defer_stmts(p, irDeferExit_Branch, block); + lb_emit_defer_stmts(p, lbDeferExit_Branch, block); } lb_emit_jump(p, block); case_end; @@ -1592,6 +1806,13 @@ lbValue lb_const_int(lbModule *m, Type *type, u64 value) { return res; } +lbValue lb_const_bool(lbModule *m, Type *type, bool value) { + lbValue res = {}; + res.value = LLVMConstInt(lb_type(m, type), value, false); + res.type = type; + return res; +} + LLVMValueRef llvm_const_f32(lbModule *m, f32 f, Type *type=t_f32) { u32 u = bit_cast(f); LLVMValueRef i = LLVMConstInt(LLVMInt32TypeInContext(m->ctx), u, false); @@ -1640,7 +1861,7 @@ isize lb_type_info_index(CheckerInfo *info, Type *type, bool err_on_not_found=tr return -1; } -lbValue lb_typeid(lbModule *m, Type *type, Type *typeid_type=t_typeid) { +lbValue lb_typeid(lbModule *m, Type *type, Type *typeid_type) { type = default_type(type); u64 id = cast(u64)lb_type_info_index(m->info, type); @@ -1814,7 +2035,15 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { cast(char const *)value.value_string.text, cast(unsigned)value.value_string.len, false); - LLVMValueRef global_data = LLVMAddGlobal(m->mod, LLVMTypeOf(data), "test_string_data"); + + + isize max_len = 7+8+1; + char *str = gb_alloc_array(heap_allocator(), char, max_len); + isize len = gb_snprintf(str, max_len, "csbs$%x", m->global_array_index); + len -= 1; + m->global_array_index++; + + LLVMValueRef global_data = LLVMAddGlobal(m->mod, LLVMTypeOf(data), str); LLVMSetInitializer(global_data, data); LLVMValueRef ptr = LLVMConstInBoundsGEP(global_data, indices, 2); @@ -1824,8 +2053,8 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { return res; } - LLVMValueRef len = LLVMConstInt(lb_type(m, t_int), value.value_string.len, true); - LLVMValueRef values[2] = {ptr, len}; + LLVMValueRef str_len = LLVMConstInt(lb_type(m, t_int), len, true); + LLVMValueRef values[2] = {ptr, str_len}; res.value = LLVMConstNamedStruct(lb_type(m, original_type), values, 2); @@ -2503,11 +2732,11 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { } if (are_types_identical(src, t_cstring) && are_types_identical(dst, t_string)) { - lbValue c = ir_emit_conv(p, value, t_cstring); - auto args = array_make(ir_allocator(), 1); + lbValue c = lb_emit_conv(p, value, t_cstring); + auto args = array_make(heap_allocator(), 1); args[0] = c; - lbValue s = ir_emit_runtime_call(p, "cstring_to_string", args); - return ir_emit_conv(p, s, dst); + lbValue s = lb_emit_runtime_call(p, "cstring_to_string", args); + return lb_emit_conv(p, s, dst); } @@ -2518,7 +2747,7 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { // float -> float if (is_type_float(src) && is_type_float(dst)) { - gbAllocator a = ir_allocator(); + gbAllocator a = heap_allocator(); i64 sz = type_size_of(src); i64 dz = type_size_of(dst); irConvKind kind = irConv_fptrunc; @@ -2530,9 +2759,9 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { if (is_type_complex(src) && is_type_complex(dst)) { Type *ft = base_complex_elem_type(dst); - lbValue gen = ir_add_local_generated(p, dst, false); - lbValue real = ir_emit_conv(p, ir_emit_struct_ev(p, value, 0), ft); - lbValue imag = ir_emit_conv(p, ir_emit_struct_ev(p, value, 1), ft); + lbValue gen = lb_add_local_generated(p, dst, false); + lbValue real = lb_emit_conv(p, ir_emit_struct_ev(p, value, 0), ft); + lbValue imag = lb_emit_conv(p, ir_emit_struct_ev(p, value, 1), ft); ir_emit_store(p, ir_emit_struct_ep(p, gen, 0), real); ir_emit_store(p, ir_emit_struct_ep(p, gen, 1), imag); return ir_emit_load(p, gen); @@ -2541,11 +2770,11 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { if (is_type_quaternion(src) && is_type_quaternion(dst)) { // @QuaternionLayout Type *ft = base_complex_elem_type(dst); - lbValue gen = ir_add_local_generated(p, dst, false); - lbValue q0 = ir_emit_conv(p, ir_emit_struct_ev(p, value, 0), ft); - lbValue q1 = ir_emit_conv(p, ir_emit_struct_ev(p, value, 1), ft); - lbValue q2 = ir_emit_conv(p, ir_emit_struct_ev(p, value, 2), ft); - lbValue q3 = ir_emit_conv(p, ir_emit_struct_ev(p, value, 3), ft); + lbValue gen = lb_add_local_generated(p, dst, false); + lbValue q0 = lb_emit_conv(p, ir_emit_struct_ev(p, value, 0), ft); + lbValue q1 = lb_emit_conv(p, ir_emit_struct_ev(p, value, 1), ft); + lbValue q2 = lb_emit_conv(p, ir_emit_struct_ev(p, value, 2), ft); + lbValue q3 = lb_emit_conv(p, ir_emit_struct_ev(p, value, 3), ft); ir_emit_store(p, ir_emit_struct_ep(p, gen, 0), q0); ir_emit_store(p, ir_emit_struct_ep(p, gen, 1), q1); ir_emit_store(p, ir_emit_struct_ep(p, gen, 2), q2); @@ -2555,24 +2784,24 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { if (is_type_float(src) && is_type_complex(dst)) { Type *ft = base_complex_elem_type(dst); - lbValue gen = ir_add_local_generated(p, dst, true); - lbValue real = ir_emit_conv(p, value, ft); + lbValue gen = lb_add_local_generated(p, dst, true); + lbValue real = lb_emit_conv(p, value, ft); ir_emit_store(p, ir_emit_struct_ep(p, gen, 0), real); return ir_emit_load(p, gen); } if (is_type_float(src) && is_type_quaternion(dst)) { Type *ft = base_complex_elem_type(dst); - lbValue gen = ir_add_local_generated(p, dst, true); - lbValue real = ir_emit_conv(p, value, ft); + lbValue gen = lb_add_local_generated(p, dst, true); + lbValue real = lb_emit_conv(p, value, ft); // @QuaternionLayout ir_emit_store(p, ir_emit_struct_ep(p, gen, 3), real); return ir_emit_load(p, gen); } if (is_type_complex(src) && is_type_quaternion(dst)) { Type *ft = base_complex_elem_type(dst); - lbValue gen = ir_add_local_generated(p, dst, true); - lbValue real = ir_emit_conv(p, ir_emit_struct_ev(p, value, 0), ft); - lbValue imag = ir_emit_conv(p, ir_emit_struct_ev(p, value, 1), ft); + lbValue gen = lb_add_local_generated(p, dst, true); + lbValue real = lb_emit_conv(p, ir_emit_struct_ev(p, value, 0), ft); + lbValue imag = lb_emit_conv(p, ir_emit_struct_ev(p, value, 1), ft); // @QuaternionLayout ir_emit_store(p, ir_emit_struct_ep(p, gen, 3), real); ir_emit_store(p, ir_emit_struct_ep(p, gen, 0), imag); @@ -2610,8 +2839,8 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { Type *vt = dst->Union.variants[i]; if (are_types_identical(vt, src_type)) { ir_emit_comment(p, str_lit("union - child to parent")); - gbAllocator a = ir_allocator(); - lbValue parent = ir_add_local_generated(p, t, true); + gbAllocator a = heap_allocator(); + lbValue parent = lb_add_local_generated(p, t, true); ir_emit_store_union_variant(p, parent, value, vt); return ir_emit_load(p, parent); } @@ -2639,7 +2868,7 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { if (sel.entity != nullptr) { ir_emit_comment(p, str_lit("cast - polymorphism")); if (st_is_ptr) { - lbValue res = ir_emit_deep_field_gep(p, value, sel); + lbValue res = lb_emit_deep_field_gep(p, value, sel); Type *rt = ir_type(res); if (!are_types_identical(rt, dt) && are_types_identical(type_deref(rt), dt)) { res = ir_emit_load(p, res); @@ -2651,7 +2880,7 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { if (!are_types_identical(rt, dt) && are_types_identical(type_deref(rt), dt)) { value = ir_emit_load(p, value); } else { - value = ir_emit_deep_field_gep(p, value, sel); + value = lb_emit_deep_field_gep(p, value, sel); return ir_emit_load(p, value); } } @@ -2698,7 +2927,7 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { } if (is_type_string(src) && is_type_u8_slice(dst)) { lbValue elem = ir_string_elem(p, value); - lbValue elem_ptr = ir_add_local_generated(p, ir_type(elem), false); + lbValue elem_ptr = lb_add_local_generated(p, ir_type(elem), false); ir_emit_store(p, elem_ptr, elem); lbValue len = ir_string_len(p, value); @@ -2708,9 +2937,9 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { if (is_type_array(dst)) { Type *elem = dst->Array.elem; - lbValue e = ir_emit_conv(p, value, elem); + lbValue e = lb_emit_conv(p, value, elem); // NOTE(bill): Doesn't need to be zero because it will be initialized in the loops - lbValue v = ir_add_local_generated(p, t, false); + lbValue v = lb_add_local_generated(p, t, false); isize index_count = cast(isize)dst->Array.count; for (i32 i = 0; i < index_count; i++) { @@ -2721,7 +2950,7 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { } if (is_type_any(dst)) { - lbValue result = ir_add_local_generated(p, t_any, true); + lbValue result = lb_add_local_generated(p, t_any, true); if (is_type_untyped_nil(src)) { return ir_emit_load(p, result); @@ -2732,7 +2961,7 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { lbValue data = ir_address_from_load_or_generate_local(p, value); GB_ASSERT_MSG(is_type_pointer(ir_type(data)), type_to_string(ir_type(data))); GB_ASSERT_MSG(is_type_typed(st), "%s", type_to_string(st)); - data = ir_emit_conv(p, data, t_rawptr); + data = lb_emit_conv(p, data, t_rawptr); lbValue id = ir_typeid(p->module, st); @@ -2745,14 +2974,14 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { if (is_type_untyped(src)) { if (is_type_string(src) && is_type_string(dst)) { - lbValue result = ir_add_local_generated(p, t, false); + lbValue result = lb_add_local_generated(p, t, false); ir_emit_store(p, result, value); return ir_emit_load(p, result); } } #endif - gb_printf_err("ir_emit_conv: src -> dst\n"); + gb_printf_err("lb_emit_conv: src -> dst\n"); gb_printf_err("Not Identical %s != %s\n", type_to_string(src_type), type_to_string(t)); gb_printf_err("Not Identical %s != %s\n", type_to_string(src), type_to_string(dst)); @@ -2775,7 +3004,7 @@ void lb_emit_init_context(lbProcedure *p, lbValue c) { gbAllocator a = heap_allocator(); auto args = array_make(a, 1); args[0] = c.value != nullptr ? c : m->global_default_context.addr; - // ir_emit_runtime_call(p, "__init_context", args); + // lb_emit_runtime_call(p, "__init_context", args); } void lb_push_context_onto_stack(lbProcedure *p, lbAddr ctx) { @@ -2794,7 +3023,7 @@ lbAddr lb_find_or_generate_context_ptr(lbProcedure *p) { defer (p->curr_block = tmp_block); - lbAddr c = lb_add_local_generated(p, t_context, true); + lbAddr c = lb_add_local_generated(p, t_context, false); lb_push_context_onto_stack(p, c); lb_addr_store(p, c, lb_addr_load(p, p->module->global_default_context)); lb_emit_init_context(p, c.addr); @@ -3014,6 +3243,124 @@ lbValue lb_emit_struct_ev(lbProcedure *p, lbValue s, i32 index) { return res; } +lbValue lb_emit_deep_field_gep(lbProcedure *p, lbValue e, Selection sel) { + GB_ASSERT(sel.index.count > 0); + Type *type = type_deref(e.type); + gbAllocator a = heap_allocator(); + + for_array(i, sel.index) { + i32 index = cast(i32)sel.index[i]; + if (is_type_pointer(type)) { + type = type_deref(type); + e = lb_emit_load(p, e); + } + type = core_type(type); + if (type->kind == Type_Opaque) { + type = type->Opaque.elem; + } + + if (is_type_quaternion(type)) { + e = lb_emit_struct_ep(p, e, index); + } else if (is_type_raw_union(type)) { + type = type->Struct.fields[index]->type; + GB_ASSERT(is_type_pointer(e.type)); + e = lb_emit_transmute(p, e, alloc_type_pointer(type)); + } else if (is_type_struct(type)) { + type = type->Struct.fields[index]->type; + e = lb_emit_struct_ep(p, e, index); + } else if (type->kind == Type_Union) { + GB_ASSERT(index == -1); + type = t_type_info_ptr; + e = lb_emit_struct_ep(p, e, index); + } else if (type->kind == Type_Tuple) { + type = type->Tuple.variables[index]->type; + e = lb_emit_struct_ep(p, e, index); + } else if (type->kind == Type_Basic) { + switch (type->Basic.kind) { + case Basic_any: { + if (index == 0) { + type = t_rawptr; + } else if (index == 1) { + type = t_type_info_ptr; + } + e = lb_emit_struct_ep(p, e, index); + break; + } + + case Basic_string: + e = lb_emit_struct_ep(p, e, index); + break; + + default: + GB_PANIC("un-gep-able type"); + break; + } + } else if (type->kind == Type_Slice) { + e = lb_emit_struct_ep(p, e, index); + } else if (type->kind == Type_DynamicArray) { + e = lb_emit_struct_ep(p, e, index); + } else if (type->kind == Type_Array) { + e = lb_emit_array_epi(p, e, index); + } else if (type->kind == Type_Map) { + e = lb_emit_struct_ep(p, e, index); + } else { + GB_PANIC("un-gep-able type %s", type_to_string(type)); + } + } + + return e; +} + + +void lb_build_defer_stmt(lbProcedure *p, lbDefer d) { + lbBlock *b = lb_create_block(p, "defer"); + // NOTE(bill): The prev block may defer injection before it's terminator + LLVMValueRef last_instr = LLVMGetLastInstruction(p->curr_block->block); + if (last_instr == nullptr || !LLVMIsATerminatorInst(last_instr)) { + lb_emit_jump(p, b); + } + lb_start_block(p, b); + if (d.kind == lbDefer_Node) { + lb_build_stmt(p, d.stmt); + } else if (d.kind == lbDefer_Instr) { + // NOTE(bill): Need to make a new copy + LLVMValueRef instr = LLVMInstructionClone(d.instr.value); + LLVMInsertIntoBuilder(p->builder, instr); + } else if (d.kind == lbDefer_Proc) { + lb_emit_call(p, d.proc.deferred, d.proc.result_as_args); + } +} + +void lb_emit_defer_stmts(lbProcedure *p, lbDeferExitKind kind, lbBlock *block) { + isize count = p->defer_stmts.count; + isize i = count; + while (i --> 0) { + lbDefer d = p->defer_stmts[i]; + if (p->context_stack.count >= d.context_stack_count) { + p->context_stack.count = d.context_stack_count; + } + + if (kind == lbDeferExit_Default) { + if (p->scope_index == d.scope_index && + d.scope_index > 0) { // TODO(bill): Which is correct: > 0 or > 1? + lb_build_defer_stmt(p, d); + array_pop(&p->defer_stmts); + continue; + } else { + break; + } + } else if (kind == lbDeferExit_Return) { + lb_build_defer_stmt(p, d); + } else if (kind == lbDeferExit_Branch) { + GB_ASSERT(block != nullptr); + isize lower_limit = block->scope_index; + if (lower_limit < d.scope_index) { + lb_build_defer_stmt(p, d); + } + } + } +} + lbValue lb_emit_call_internal(lbProcedure *p, lbValue value, lbValue return_ptr, Array const &processed_args, Type *abi_rt, lbAddr context_ptr, ProcInlining inlining) { unsigned arg_count = cast(unsigned)processed_args.count; @@ -3044,7 +3391,27 @@ lbValue lb_emit_call_internal(lbProcedure *p, lbValue value, lbValue return_ptr, return res; } -lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, ProcInlining inlining = ProcInlining_none, bool use_return_ptr_hint = false) { +lbValue lb_emit_runtime_call(lbProcedure *p, char const *c_name, Array const &args) { + String name = make_string_c(c_name); + + + AstPackage *pkg = p->module->info->runtime_package; + Entity *e = scope_lookup_current(pkg->scope, name); + + lbValue *found = nullptr; + if (p->module != e->code_gen_module) { + gb_mutex_lock(&p->module->mutex); + } + found = map_get(&e->code_gen_module->values, hash_entity(e)); + if (p->module != e->code_gen_module) { + gb_mutex_unlock(&p->module->mutex); + } + + GB_ASSERT_MSG(found != nullptr, "%s", c_name); + return lb_emit_call(p, *found, args); +} + +lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, ProcInlining inlining, bool use_return_ptr_hint) { lbModule *m = p->module; Type *pt = base_type(value.type); @@ -3178,6 +3545,23 @@ lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, return result; } +lbValue lb_emit_array_ep(lbProcedure *p, lbValue s, lbValue index) { + Type *t = s.type; + GB_ASSERT(is_type_pointer(t)); + Type *st = base_type(type_deref(t)); + GB_ASSERT_MSG(is_type_array(st) || is_type_enumerated_array(st), "%s", type_to_string(st)); + + LLVMValueRef indices[2] = {}; + indices[0] = lb_zero32(p->module); + indices[1] = lb_emit_conv(p, index, t_i32).value; + + Type *ptr = base_array_type(st); + lbValue res = {}; + res.value = LLVMBuildGEP2(p->builder, lb_type(p->module, ptr), s.value, indices, 2, ""); + res.type = alloc_type_pointer(ptr); + return res; +} + lbValue lb_emit_array_epi(lbProcedure *p, lbValue s, i32 index) { Type *t = s.type; GB_ASSERT(is_type_pointer(t)); @@ -3192,6 +3576,15 @@ lbValue lb_emit_array_epi(lbProcedure *p, lbValue s, i32 index) { return res; } +lbValue lb_emit_ptr_offset(lbProcedure *p, lbValue ptr, lbValue index) { + LLVMValueRef indices[1] = {index.value}; + lbValue res = {}; + res.type = ptr.type; + res.value = LLVMBuildGEP2(p->builder, lb_type(p->module, ptr.type), ptr.value, indices, 1, ""); + return res; +} + + void lb_fill_slice(lbProcedure *p, lbAddr slice, lbValue base_elem, lbValue len) { } @@ -3509,6 +3902,375 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { return lb_emit_call(p, value, call_args, ce->inlining, p->return_ptr_hint_ast == expr); } +bool lb_is_const(lbValue value) { + LLVMValueRef v = value.value; + if (LLVMIsConstant(v)) { + return true; + } + return false; +} +bool lb_is_const_nil(lbValue value) { + LLVMValueRef v = value.value; + if (LLVMIsConstant(v)) { + if (LLVMIsAConstantAggregateZero(v)) { + return true; + } else if (LLVMIsAConstantPointerNull(v)) { + return true; + } + } + return false; +} + +void lb_emit_increment(lbProcedure *p, lbValue addr) { + GB_ASSERT(is_type_pointer(addr.type)); + Type *type = type_deref(addr.type); + lbValue v_one = lb_const_value(p->module, type, exact_value_i64(1)); + lb_emit_store(p, addr, lb_emit_arith(p, Token_Add, lb_emit_load(p, addr), v_one, type)); + +} + +lbValue lb_emit_byte_swap(lbProcedure *p, lbValue value, Type *platform_type) { + Type *vt = core_type(value.type); + GB_ASSERT(type_size_of(vt) == type_size_of(platform_type)); + // TODO(bill): lb_emit_byte_swap + return value; +} + + + +struct lbLoopData { + lbAddr idx_addr; + lbValue idx; + lbBlock *body; + lbBlock *done; + lbBlock *loop; +}; + +lbLoopData lb_loop_start(lbProcedure *p, isize count, Type *index_type=t_int) { + lbLoopData data = {}; + + lbValue max = lb_const_int(p->module, t_int, count); + + data.idx_addr = lb_add_local_generated(p, index_type, true); + + data.body = lb_create_block(p, "loop.body"); + data.done = lb_create_block(p, "loop.done"); + data.loop = lb_create_block(p, "loop.loop"); + + lb_emit_jump(p, data.loop); + lb_start_block(p, data.loop); + + data.idx = lb_addr_load(p, data.idx_addr); + + lbValue cond = lb_emit_comp(p, Token_Lt, data.idx, max); + lb_emit_if(p, cond, data.body, data.done); + lb_start_block(p, data.body); + + return data; +} + +void lb_loop_end(lbProcedure *p, lbLoopData const &data) { + if (data.idx_addr.addr.value != nullptr) { + lb_emit_increment(p, data.idx_addr.addr); + lb_emit_jump(p, data.loop); + lb_start_block(p, data.done); + } +} + + +lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue right) { + Type *a = base_type(left.type); + Type *b = base_type(right.type); + + GB_ASSERT(gb_is_between(op_kind, Token__ComparisonBegin+1, Token__ComparisonEnd-1)); + + // lbValue nil_check = {}; + // if (left->kind == irValue_Nil) { + // nil_check = lb_emit_comp_against_nil(p, op_kind, right); + // } else if (right->kind == irValue_Nil) { + // nil_check = lb_emit_comp_against_nil(p, op_kind, left); + // } + // if (nil_check.value != nullptr) { + // return nil_check; + // } + + if (are_types_identical(a, b)) { + // NOTE(bill): No need for a conversion + } else if (lb_is_const(left) || lb_is_const_nil(left)) { + left = lb_emit_conv(p, left, right.type); + } else if (lb_is_const(right) || lb_is_const_nil(right)) { + right = lb_emit_conv(p, right, left.type); + } else { + gbAllocator a = heap_allocator(); + + Type *lt = left.type; + Type *rt = right.type; + + if (is_type_bit_set(lt) && is_type_bit_set(rt)) { + Type *blt = base_type(lt); + Type *brt = base_type(rt); + GB_ASSERT(is_type_bit_field_value(blt)); + GB_ASSERT(is_type_bit_field_value(brt)); + i64 bits = gb_max(blt->BitFieldValue.bits, brt->BitFieldValue.bits); + i64 bytes = bits / 8; + switch (bytes) { + case 1: + left = lb_emit_conv(p, left, t_u8); + right = lb_emit_conv(p, right, t_u8); + break; + case 2: + left = lb_emit_conv(p, left, t_u16); + right = lb_emit_conv(p, right, t_u16); + break; + case 4: + left = lb_emit_conv(p, left, t_u32); + right = lb_emit_conv(p, right, t_u32); + break; + case 8: + left = lb_emit_conv(p, left, t_u64); + right = lb_emit_conv(p, right, t_u64); + break; + default: GB_PANIC("Unknown integer size"); break; + } + } + + lt = left.type; + rt = right.type; + i64 ls = type_size_of(lt); + i64 rs = type_size_of(rt); + if (ls < rs) { + left = lb_emit_conv(p, left, rt); + } else if (ls > rs) { + right = lb_emit_conv(p, right, lt); + } else { + right = lb_emit_conv(p, right, lt); + } + } + + if (is_type_array(a)) { + Type *tl = base_type(a); + lbValue lhs = lb_address_from_load_or_generate_local(p, left); + lbValue rhs = lb_address_from_load_or_generate_local(p, right); + + + TokenKind cmp_op = Token_And; + lbValue res = lb_const_bool(p->module, t_llvm_bool, true); + if (op_kind == Token_NotEq) { + res = lb_const_bool(p->module, t_llvm_bool, false); + cmp_op = Token_Or; + } else if (op_kind == Token_CmpEq) { + res = lb_const_bool(p->module, t_llvm_bool, true); + cmp_op = Token_And; + } + + bool inline_array_arith = type_size_of(tl) <= build_context.max_align; + i32 count = cast(i32)tl->Array.count; + + if (inline_array_arith) { + // inline + lbAddr val = lb_add_local_generated(p, t_bool, false); + lb_addr_store(p, val, res); + for (i32 i = 0; i < count; i++) { + lbValue x = lb_emit_load(p, lb_emit_array_epi(p, lhs, i)); + lbValue y = lb_emit_load(p, lb_emit_array_epi(p, rhs, i)); + lbValue cmp = lb_emit_comp(p, op_kind, x, y); + lbValue new_res = lb_emit_arith(p, cmp_op, lb_addr_load(p, val), cmp, t_bool); + lb_addr_store(p, val, lb_emit_conv(p, new_res, t_bool)); + } + + return lb_addr_load(p, val); + } else { + if (is_type_simple_compare(tl) && (op_kind == Token_CmpEq || op_kind == Token_NotEq)) { + // TODO(bill): Test to see if this is actually faster!!!! + auto args = array_make(heap_allocator(), 3); + args[0] = lb_emit_conv(p, lhs, t_rawptr); + args[1] = lb_emit_conv(p, rhs, t_rawptr); + args[2] = lb_const_int(p->module, t_int, type_size_of(tl)); + lbValue val = lb_emit_runtime_call(p, "memory_compare", args); + lbValue res = lb_emit_comp(p, op_kind, val, lb_const_nil(p->module, val.type)); + return lb_emit_conv(p, res, t_bool); + } else { + lbAddr val = lb_add_local_generated(p, t_bool, false); + lb_addr_store(p, val, res); + auto loop_data = lb_loop_start(p, count, t_i32); + { + lbValue i = loop_data.idx; + lbValue x = lb_emit_load(p, lb_emit_array_ep(p, lhs, i)); + lbValue y = lb_emit_load(p, lb_emit_array_ep(p, rhs, i)); + lbValue cmp = lb_emit_comp(p, op_kind, x, y); + lbValue new_res = lb_emit_arith(p, cmp_op, lb_addr_load(p, val), cmp, t_bool); + lb_addr_store(p, val, lb_emit_conv(p, new_res, t_bool)); + } + lb_loop_end(p, loop_data); + + return lb_addr_load(p, val); + } + } + } + + if (is_type_string(a)) { + if (is_type_cstring(a)) { + left = lb_emit_conv(p, left, t_string); + right = lb_emit_conv(p, right, t_string); + } + + char const *runtime_proc = nullptr; + switch (op_kind) { + case Token_CmpEq: runtime_proc = "string_eq"; break; + case Token_NotEq: runtime_proc = "string_ne"; break; + case Token_Lt: runtime_proc = "string_lt"; break; + case Token_Gt: runtime_proc = "string_gt"; break; + case Token_LtEq: runtime_proc = "string_le"; break; + case Token_GtEq: runtime_proc = "string_gt"; break; + } + GB_ASSERT(runtime_proc != nullptr); + + auto args = array_make(heap_allocator(), 2); + args[0] = left; + args[1] = right; + return lb_emit_runtime_call(p, runtime_proc, args); + } + + if (is_type_complex(a)) { + char const *runtime_proc = ""; + i64 sz = 8*type_size_of(a); + switch (sz) { + case 64: + switch (op_kind) { + case Token_CmpEq: runtime_proc = "complex64_eq"; break; + case Token_NotEq: runtime_proc = "complex64_ne"; break; + } + break; + case 128: + switch (op_kind) { + case Token_CmpEq: runtime_proc = "complex128_eq"; break; + case Token_NotEq: runtime_proc = "complex128_ne"; break; + } + break; + } + GB_ASSERT(runtime_proc != nullptr); + + auto args = array_make(heap_allocator(), 2); + args[0] = left; + args[1] = right; + return lb_emit_runtime_call(p, runtime_proc, args); + } + + if (is_type_quaternion(a)) { + char const *runtime_proc = ""; + i64 sz = 8*type_size_of(a); + switch (sz) { + case 128: + switch (op_kind) { + case Token_CmpEq: runtime_proc = "quaternion128_eq"; break; + case Token_NotEq: runtime_proc = "quaternion128_ne"; break; + } + break; + case 256: + switch (op_kind) { + case Token_CmpEq: runtime_proc = "quaternion256_eq"; break; + case Token_NotEq: runtime_proc = "quaternion256_ne"; break; + } + break; + } + GB_ASSERT(runtime_proc != nullptr); + + auto args = array_make(heap_allocator(), 2); + args[0] = left; + args[1] = right; + return lb_emit_runtime_call(p, runtime_proc, args); + } + + if (is_type_bit_set(a)) { + switch (op_kind) { + case Token_Lt: + case Token_LtEq: + case Token_Gt: + case Token_GtEq: + { + Type *it = bit_set_to_int(a); + lbValue lhs = lb_emit_transmute(p, left, it); + lbValue rhs = lb_emit_transmute(p, right, it); + lbValue res = lb_emit_arith(p, Token_And, lhs, rhs, it); + + if (op_kind == Token_Lt || op_kind == Token_LtEq) { + // (lhs & rhs) == lhs + res.value = LLVMBuildICmp(p->builder, LLVMIntEQ, res.value, lhs.value, ""); + res.type = t_llvm_bool; + } else if (op_kind == Token_Gt || op_kind == Token_GtEq) { + // (lhs & rhs) == rhs + res.value = LLVMBuildICmp(p->builder, LLVMIntEQ, res.value, rhs.value, ""); + res.type = t_llvm_bool; + } + + // NOTE(bill): Strict subsets + if (op_kind == Token_Lt || op_kind == Token_Gt) { + // res &~ (lhs == rhs) + lbValue eq = {}; + eq.value = LLVMBuildICmp(p->builder, LLVMIntEQ, lhs.value, rhs.value, ""); + eq.type = t_llvm_bool; + res = lb_emit_arith(p, Token_AndNot, res, eq, t_llvm_bool); + } + + return res; + } + } + } + + if (op_kind != Token_CmpEq && op_kind != Token_NotEq) { + Type *t = left.type; + if (is_type_integer(t) && is_type_different_to_arch_endianness(t)) { + Type *platform_type = integer_endian_type_to_platform_type(t); + lbValue x = lb_emit_byte_swap(p, left, platform_type); + lbValue y = lb_emit_byte_swap(p, right, platform_type); + left = x; + right = y; + } + } + + + lbValue res = {}; + res.type = t_llvm_bool; + if (is_type_integer(left.type) || is_type_boolean(left.type) || is_type_integer(left.type)) { + LLVMIntPredicate pred = {}; + if (is_type_unsigned(left.type)) { + switch (op_kind) { + case Token_Gt: pred = LLVMIntUGT; break; + case Token_GtEq: pred = LLVMIntUGE; break; + case Token_Lt: pred = LLVMIntULT; break; + case Token_LtEq: pred = LLVMIntULE; break; + } + } else { + switch (op_kind) { + case Token_Gt: pred = LLVMIntSGT; break; + case Token_GtEq: pred = LLVMIntSGE; break; + case Token_Lt: pred = LLVMIntSLT; break; + case Token_LtEq: pred = LLVMIntSLE; break; + } + } + switch (op_kind) { + case Token_CmpEq: pred = LLVMIntEQ; break; + case Token_NotEq: pred = LLVMIntNE; break; + } + res.value = LLVMBuildICmp(p->builder, pred, left.value, right.value, ""); + } else if (is_type_float(left.type)) { + LLVMRealPredicate pred = {}; + switch (op_kind) { + case Token_CmpEq: pred = LLVMRealOEQ; break; + case Token_Gt: pred = LLVMRealOGT; break; + case Token_GtEq: pred = LLVMRealOGE; break; + case Token_Lt: pred = LLVMRealOLT; break; + case Token_LtEq: pred = LLVMRealOLE; break; + case Token_NotEq: pred = LLVMRealONE; break; + } + res.value = LLVMBuildFCmp(p->builder, pred, left.value, right.value, ""); + } else { + GB_PANIC("Unhandled comparison kind"); + } + + return res; +} + lbValue lb_build_expr(lbProcedure *p, Ast *expr) { lbModule *m = p->module; @@ -3555,6 +4317,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { LIT(token.pos.file), token.pos.line, token.pos.column); return {}; } else if (e->kind == Entity_Nil) { + GB_PANIC("Entity_Nil"); return lb_const_nil(m, tv.type); } @@ -3566,23 +4329,82 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { return v; } return lb_emit_load(p, v); - // } else if (e != nullptr && e->kind == Entity_Variable) { - // return ir_addr_load(p, lb_build_addr(p, expr)); + } else if (e != nullptr && e->kind == Entity_Variable) { + return lb_addr_load(p, lb_build_addr(p, expr)); } - GB_PANIC("nullptr value for expression from identifier: %.*s : %s @ %p", LIT(i->token.string), type_to_string(e->type), expr); + GB_PANIC("nullptr value for expression from identifier: %.*s.%.*s : %s @ %p", LIT(e->pkg->name), LIT(i->token.string), type_to_string(e->type), expr); return {}; case_end; + case_ast_node(de, DerefExpr, expr); + return lb_addr_load(p, lb_build_addr(p, expr)); + case_end; + + case_ast_node(se, SelectorExpr, expr); + TypeAndValue tav = type_and_value_of_expr(expr); + GB_ASSERT(tav.mode != Addressing_Invalid); + return lb_addr_load(p, lb_build_addr(p, expr)); + case_end; + + case_ast_node(ise, ImplicitSelectorExpr, expr); + TypeAndValue tav = type_and_value_of_expr(expr); + GB_ASSERT(tav.mode == Addressing_Constant); + + return lb_const_value(p->module, tv.type, tv.value); + case_end; + + case_ast_node(te, TernaryExpr, expr); + LLVMValueRef incoming_values[2] = {}; + LLVMBasicBlockRef incoming_blocks[2] = {}; + + GB_ASSERT(te->y != nullptr); + lbBlock *then = lb_create_block(p, "if.then"); + lbBlock *done = lb_create_block(p, "if.done"); // NOTE(bill): Append later + lbBlock *else_ = lb_create_block(p, "if.else"); + + lbValue cond = lb_build_cond(p, te->cond, then, else_); + lb_start_block(p, then); + + Type *type = type_of_expr(expr); + + lb_open_scope(p); + incoming_values[0] = lb_emit_conv(p, lb_build_expr(p, te->x), type).value; + lb_close_scope(p, lbDeferExit_Default, nullptr); + + lb_emit_jump(p, done); + lb_start_block(p, else_); + + lb_open_scope(p); + incoming_values[1] = lb_emit_conv(p, lb_build_expr(p, te->y), type).value; + lb_close_scope(p, lbDeferExit_Default, nullptr); + + lb_emit_jump(p, done); + lb_start_block(p, done); + + lbValue res = {}; + res.value = LLVMBuildPhi(p->builder, lb_type(p->module, type), ""); + res.type = type; + + GB_ASSERT(p->curr_block->preds.count >= 2); + incoming_blocks[0] = p->curr_block->preds[0]->block; + incoming_blocks[1] = p->curr_block->preds[1]->block; + + LLVMAddIncoming(res.value, incoming_values, incoming_blocks, 2); + + return res; + case_end; + case_ast_node(be, BinaryExpr, expr); return lb_build_binary_expr(p, expr); case_end; - case_ast_node(ce, CallExpr, expr); return lb_build_call_expr(p, expr); case_end; } + GB_PANIC("lb_build_expr: %.*s", LIT(ast_strings[expr->kind])); + return {}; } @@ -3644,9 +4466,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { return lb_build_addr_from_entity(p, e, expr); case_end; -#if 0 case_ast_node(se, SelectorExpr, expr); - ir_emit_comment(proc, str_lit("SelectorExpr")); Ast *sel = unparen_expr(se->selector); if (sel->kind == Ast_Ident) { String selector = sel->Ident.token.string; @@ -3658,7 +4478,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { if (imp != nullptr) { GB_ASSERT(imp->kind == Entity_ImportName); } - return ir_build_addr(proc, unparen_expr(se->selector)); + return lb_build_addr(p, unparen_expr(se->selector)); } @@ -3669,21 +4489,21 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { GB_ASSERT(e->kind == Entity_Variable); GB_ASSERT(e->flags & EntityFlag_TypeField); String name = e->token.string; - if (name == "names") { + /*if (name == "names") { lbValue ti_ptr = ir_type_info(proc, type); lbValue variant = ir_emit_struct_ep(proc, ti_ptr, 2); lbValue names_ptr = nullptr; if (is_type_enum(type)) { - lbValue enum_info = ir_emit_conv(proc, variant, t_type_info_enum_ptr); + lbValue enum_info = lb_emit_conv(proc, variant, t_type_info_enum_ptr); names_ptr = ir_emit_struct_ep(proc, enum_info, 1); } else if (type->kind == Type_Struct) { - lbValue struct_info = ir_emit_conv(proc, variant, t_type_info_struct_ptr); + lbValue struct_info = lb_emit_conv(proc, variant, t_type_info_struct_ptr); names_ptr = ir_emit_struct_ep(proc, struct_info, 1); } return ir_addr(names_ptr); - } else { + } else */{ GB_PANIC("Unhandled TypeField %.*s", LIT(name)); } GB_PANIC("Unreachable"); @@ -3694,23 +4514,23 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { if (sel.entity->type->kind == Type_BitFieldValue) { - irAddr addr = ir_build_addr(proc, se->expr); - Type *bft = type_deref(ir_addr_type(addr)); + lbAddr addr = lb_build_addr(p, se->expr); + Type *bft = type_deref(lb_addr_type(addr)); if (sel.index.count == 1) { GB_ASSERT(is_type_bit_field(bft)); i32 index = sel.index[0]; - return ir_addr_bit_field(ir_addr_get_ptr(proc, addr), index); + return lb_addr_bit_field(lb_addr_get_ptr(p, addr), index); } else { Selection s = sel; s.index.count--; i32 index = s.index[s.index.count-1]; - lbValue a = ir_addr_get_ptr(proc, addr); - a = ir_emit_deep_field_gep(proc, a, s); - return ir_addr_bit_field(a, index); + lbValue a = lb_addr_get_ptr(p, addr); + a = lb_emit_deep_field_gep(p, a, s); + return lb_addr_bit_field(a, index); } } else { - irAddr addr = ir_build_addr(proc, se->expr); - if (addr.kind == irAddr_Context) { + lbAddr addr = lb_build_addr(p, se->expr); + if (addr.kind == lbAddr_Context) { GB_ASSERT(sel.index.count > 0); if (addr.ctx.sel.index.count >= 0) { sel = selection_combine(addr.ctx.sel, sel); @@ -3718,52 +4538,54 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { addr.ctx.sel = sel; return addr; - } else if (addr.kind == irAddr_SoaVariable) { + } else if (addr.kind == lbAddr_SoaVariable) { lbValue index = addr.soa.index; i32 first_index = sel.index[0]; Selection sub_sel = sel; sub_sel.index.data += 1; sub_sel.index.count -= 1; - lbValue arr = ir_emit_struct_ep(proc, addr.addr, first_index); + lbValue arr = lb_emit_struct_ep(p, addr.addr, first_index); - Type *t = base_type(type_deref(ir_type(addr.addr))); + Type *t = base_type(type_deref(addr.addr.type)); GB_ASSERT(is_type_soa_struct(t)); - if (addr.soa.index->kind != irValue_Constant || t->Struct.soa_kind != StructSoa_Fixed) { - lbValue len = ir_soa_struct_len(proc, addr.addr); - ir_emit_bounds_check(proc, ast_token(addr.soa.index_expr), addr.soa.index, len); - } + // TODO(bill): Bounds check + // if (addr.soa.index->kind != irValue_Constant || t->Struct.soa_kind != StructSoa_Fixed) { + // lbValue len = ir_soa_struct_len(p, addr.addr); + // ir_emit_bounds_check(p, ast_token(addr.soa.index_expr), addr.soa.index, len); + // } - lbValue item = nullptr; + lbValue item = {}; if (t->Struct.soa_kind == StructSoa_Fixed) { - item = ir_emit_array_ep(proc, arr, index); + item = lb_emit_array_ep(p, arr, index); } else { - item = ir_emit_load(proc, ir_emit_ptr_offset(proc, arr, index)); + item = lb_emit_load(p, lb_emit_ptr_offset(p, arr, index)); } if (sub_sel.index.count > 0) { - item = ir_emit_deep_field_gep(proc, item, sub_sel); + item = lb_emit_deep_field_gep(p, item, sub_sel); } - return ir_addr(item); + return lb_addr(item); } - lbValue a = ir_addr_get_ptr(proc, addr); - a = ir_emit_deep_field_gep(proc, a, sel); - return ir_addr(a); + lbValue a = lb_addr_get_ptr(p, addr); + a = lb_emit_deep_field_gep(p, a, sel); + return lb_addr(a); } } else { GB_PANIC("Unsupported selector expression"); } case_end; +#if 0 case_ast_node(ta, TypeAssertion, expr); - gbAllocator a = ir_allocator(); + gbAllocator a = heap_allocator(); TokenPos pos = ast_token(expr).pos; lbValue e = ir_build_expr(proc, ta->expr); Type *t = type_deref(ir_type(e)); if (is_type_union(t)) { Type *type = type_of_expr(expr); - lbValue v = ir_add_local_generated(proc, type, false); + lbValue v = lb_add_local_generated(proc, type, false); ir_emit_comment(proc, str_lit("cast - union_cast")); ir_emit_store(proc, v, ir_emit_union_cast(proc, ir_build_expr(proc, ta->expr), type, pos)); return ir_addr(v); @@ -3798,7 +4620,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { case_ast_node(ie, IndexExpr, expr); ir_emit_comment(proc, str_lit("IndexExpr")); Type *t = base_type(type_of_expr(ie->expr)); - gbAllocator a = ir_allocator(); + gbAllocator a = heap_allocator(); bool deref = is_type_pointer(t); t = base_type(type_deref(t)); @@ -3852,7 +4674,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { } lbValue key = ir_build_expr(proc, ie->index); - key = ir_emit_conv(proc, key, t->Map.key); + key = lb_emit_conv(proc, key, t->Map.key); Type *result_type = type_of_expr(expr); return ir_addr_map(map_val, key, t, result_type); @@ -3871,7 +4693,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { array = ir_emit_load(proc, array); } } - lbValue index = ir_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + lbValue index = lb_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); lbValue elem = ir_emit_array_ep(proc, array, index); auto index_tv = type_and_value_of_expr(ie->index); @@ -3903,11 +4725,11 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { ExactValue idx = exact_value_sub(index_tv.value, t->EnumeratedArray.min_value); index = ir_value_constant(index_type, idx); } else { - index = ir_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + index = lb_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); index = ir_emit_arith(proc, Token_Sub, index, ir_value_constant(index_type, t->EnumeratedArray.min_value), index_type); } } else { - index = ir_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + index = lb_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); } lbValue elem = ir_emit_array_ep(proc, array, index); @@ -3930,7 +4752,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { } } lbValue elem = ir_slice_elem(proc, slice); - lbValue index = ir_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + lbValue index = lb_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); lbValue len = ir_slice_len(proc, slice); ir_emit_bounds_check(proc, ast_token(ie->index), index, len); lbValue v = ir_emit_ptr_offset(proc, elem, index); @@ -3949,7 +4771,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { } lbValue elem = ir_dynamic_array_elem(proc, dynamic_array); lbValue len = ir_dynamic_array_len(proc, dynamic_array); - lbValue index = ir_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + lbValue index = lb_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); ir_emit_bounds_check(proc, ast_token(ie->index), index, len); lbValue v = ir_emit_ptr_offset(proc, elem, index); return ir_addr(v); @@ -3973,7 +4795,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { elem = ir_string_elem(proc, str); len = ir_string_len(proc, str); - index = ir_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + index = lb_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); ir_emit_bounds_check(proc, ast_token(ie->index), index, len); return ir_addr(ir_emit_ptr_offset(proc, elem, index)); @@ -3983,7 +4805,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { case_ast_node(se, SliceExpr, expr); ir_emit_comment(proc, str_lit("SliceExpr")); - gbAllocator a = ir_allocator(); + gbAllocator a = heap_allocator(); lbValue low = v_zero; lbValue high = nullptr; @@ -4016,7 +4838,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { lbValue elem = ir_emit_ptr_offset(proc, ir_slice_elem(proc, base), low); lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); - lbValue slice = ir_add_local_generated(proc, slice_type, false); + lbValue slice = lb_add_local_generated(proc, slice_type, false); ir_fill_slice(proc, slice, elem, new_len); return ir_addr(slice); } @@ -4035,7 +4857,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { lbValue elem = ir_emit_ptr_offset(proc, ir_dynamic_array_elem(proc, base), low); lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); - lbValue slice = ir_add_local_generated(proc, slice_type, false); + lbValue slice = lb_add_local_generated(proc, slice_type, false); ir_fill_slice(proc, slice, elem, new_len); return ir_addr(slice); } @@ -4058,7 +4880,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { lbValue elem = ir_emit_ptr_offset(proc, ir_array_elem(proc, addr), low); lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); - lbValue slice = ir_add_local_generated(proc, slice_type, false); + lbValue slice = lb_add_local_generated(proc, slice_type, false); ir_fill_slice(proc, slice, elem, new_len); return ir_addr(slice); } @@ -4075,7 +4897,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { lbValue elem = ir_emit_ptr_offset(proc, ir_string_elem(proc, base), low); lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); - lbValue str = ir_add_local_generated(proc, t_string, false); + lbValue str = lb_add_local_generated(proc, t_string, false); ir_fill_string(proc, str, elem, new_len); return ir_addr(str); } @@ -4090,7 +4912,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { ir_emit_slice_bounds_check(proc, se->open, low, high, len, se->low != nullptr); } - lbValue dst = ir_add_local_generated(proc, type_of_expr(expr), true); + lbValue dst = lb_add_local_generated(proc, type_of_expr(expr), true); if (type->Struct.soa_kind == StructSoa_Fixed) { i32 field_count = cast(i32)type->Struct.fields.count; for (i32 i = 0; i < field_count; i++) { @@ -4154,7 +4976,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { case_ast_node(ce, CallExpr, expr); // NOTE(bill): This is make sure you never need to have an 'array_ev' lbValue e = ir_build_expr(proc, expr); - lbValue v = ir_add_local_generated(proc, ir_type(e), false); + lbValue v = lb_add_local_generated(proc, ir_type(e), false); ir_emit_store(proc, v, e); return ir_addr(v); case_end; @@ -4164,7 +4986,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { Type *type = type_of_expr(expr); Type *bt = base_type(type); - lbValue v = ir_add_local_generated(proc, type, true); + lbValue v = lb_add_local_generated(proc, type, true); Type *et = nullptr; switch (bt->kind) { @@ -4232,7 +5054,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { lbValue gep = ir_emit_struct_ep(proc, v, cast(i32)index); ir_emit_store_union_variant(proc, gep, field_expr, fet); } else { - lbValue fv = ir_emit_conv(proc, field_expr, ft); + lbValue fv = lb_emit_conv(proc, field_expr, ft); lbValue gep = ir_emit_struct_ep(proc, v, cast(i32)index); ir_emit_store(proc, gep, fv); } @@ -4245,13 +5067,13 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { if (cl->elems.count == 0) { break; } - gbAllocator a = ir_allocator(); + gbAllocator a = heap_allocator(); { auto args = array_make(a, 3); args[0] = ir_gen_map_header(proc, v, type); args[1] = ir_const_int(2*cl->elems.count); args[2] = ir_emit_source_code_location(proc, proc_name, pos); - ir_emit_runtime_call(proc, "__dynamic_map_reserve", args); + lb_emit_runtime_call(proc, "__dynamic_map_reserve", args); } for_array(field_index, cl->elems) { Ast *elem = cl->elems[field_index]; @@ -4308,7 +5130,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { i64 index = exact_value_to_i64(tav.value); irCompoundLitElemTempData data = {}; - data.value = ir_emit_conv(proc, ir_build_expr(proc, fv->value), et); + data.value = lb_emit_conv(proc, ir_build_expr(proc, fv->value), et); data.expr = fv->value; data.elem_index = cast(i32)index; array_add(&temp_data, data); @@ -4348,7 +5170,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { } Type *t = ir_type(field_expr); GB_ASSERT(t->kind != Type_Tuple); - lbValue ev = ir_emit_conv(proc, field_expr, et); + lbValue ev = lb_emit_conv(proc, field_expr, et); if (!proc->return_ptr_hint_used) { temp_data[i].value = ev; @@ -4407,7 +5229,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { i64 index = exact_value_to_i64(tav.value); irCompoundLitElemTempData data = {}; - data.value = ir_emit_conv(proc, ir_build_expr(proc, fv->value), et); + data.value = lb_emit_conv(proc, ir_build_expr(proc, fv->value), et); data.expr = fv->value; data.elem_index = cast(i32)index; array_add(&temp_data, data); @@ -4451,7 +5273,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { } Type *t = ir_type(field_expr); GB_ASSERT(t->kind != Type_Tuple); - lbValue ev = ir_emit_conv(proc, field_expr, et); + lbValue ev = lb_emit_conv(proc, field_expr, et); if (!proc->return_ptr_hint_used) { temp_data[i].value = ev; @@ -4502,7 +5324,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { hi += 1; } - lbValue value = ir_emit_conv(proc, ir_build_expr(proc, fv->value), et); + lbValue value = lb_emit_conv(proc, ir_build_expr(proc, fv->value), et); for (i64 k = lo; k < hi; k++) { irCompoundLitElemTempData data = {}; @@ -4518,7 +5340,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { lbValue field_expr = ir_build_expr(proc, fv->value); GB_ASSERT(!is_type_tuple(ir_type(field_expr))); - lbValue ev = ir_emit_conv(proc, field_expr, et); + lbValue ev = lb_emit_conv(proc, field_expr, et); irCompoundLitElemTempData data = {}; data.value = ev; @@ -4532,7 +5354,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { lbValue field_expr = ir_build_expr(proc, elem); GB_ASSERT(!is_type_tuple(ir_type(field_expr))); - lbValue ev = ir_emit_conv(proc, field_expr, et); + lbValue ev = lb_emit_conv(proc, field_expr, et); irCompoundLitElemTempData data = {}; data.value = ev; @@ -4560,20 +5382,20 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { break; } Type *et = bt->DynamicArray.elem; - gbAllocator a = ir_allocator(); + gbAllocator a = heap_allocator(); lbValue size = ir_const_int(type_size_of(et)); lbValue align = ir_const_int(type_align_of(et)); i64 item_count = gb_max(cl->max_count, cl->elems.count); { - auto args = array_make(a, 5); - args[0] = ir_emit_conv(proc, v, t_rawptr); + auto args = array_make(a, 5); + args[0] = lb_emit_conv(proc, v, t_rawptr); args[1] = size; args[2] = align; args[3] = ir_const_int(2*item_count); // TODO(bill): Is this too much waste? args[4] = ir_emit_source_code_location(proc, proc_name, pos); - ir_emit_runtime_call(proc, "__dynamic_array_reserve", args); + lb_emit_runtime_call(proc, "__dynamic_array_reserve", args); } lbValue items = ir_generate_array(proc->module, et, item_count, str_lit("dacl$"), cast(i64)cast(intptr)expr); @@ -4596,7 +5418,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { hi += 1; } - lbValue value = ir_emit_conv(proc, ir_build_expr(proc, fv->value), et); + lbValue value = lb_emit_conv(proc, ir_build_expr(proc, fv->value), et); for (i64 k = lo; k < hi; k++) { lbValue ep = ir_emit_array_epi(proc, items, cast(i32)k); @@ -4608,26 +5430,26 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { i64 field_index = exact_value_to_i64(fv->field->tav.value); lbValue ev = ir_build_expr(proc, fv->value); - lbValue value = ir_emit_conv(proc, ev, et); + lbValue value = lb_emit_conv(proc, ev, et); lbValue ep = ir_emit_array_epi(proc, items, cast(i32)field_index); ir_emit_store(proc, ep, value); } } else { - lbValue value = ir_emit_conv(proc, ir_build_expr(proc, elem), et); + lbValue value = lb_emit_conv(proc, ir_build_expr(proc, elem), et); lbValue ep = ir_emit_array_epi(proc, items, cast(i32)i); ir_emit_store(proc, ep, value); } } { - auto args = array_make(a, 6); - args[0] = ir_emit_conv(proc, v, t_rawptr); + auto args = array_make(a, 6); + args[0] = lb_emit_conv(proc, v, t_rawptr); args[1] = size; args[2] = align; - args[3] = ir_emit_conv(proc, items, t_rawptr); + args[3] = lb_emit_conv(proc, items, t_rawptr); args[4] = ir_const_int(item_count); args[5] = ir_emit_source_code_location(proc, proc_name, pos); - ir_emit_runtime_call(proc, "__dynamic_array_append", args); + lb_emit_runtime_call(proc, "__dynamic_array_append", args); } break; } @@ -4667,7 +5489,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { GB_ASSERT(ir_type(field_expr)->kind != Type_Tuple); Type *ft = field_types[index]; - lbValue fv = ir_emit_conv(proc, field_expr, ft); + lbValue fv = lb_emit_conv(proc, field_expr, ft); lbValue gep = ir_emit_struct_ep(proc, v, cast(i32)index); ir_emit_store(proc, gep, fv); } @@ -4694,7 +5516,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { GB_ASSERT(ir_type(expr)->kind != Type_Tuple); Type *it = bit_set_to_int(bt); - lbValue e = ir_emit_conv(proc, expr, it); + lbValue e = lb_emit_conv(proc, expr, it); e = ir_emit_arith(proc, Token_Sub, e, lower, it); e = ir_emit_arith(proc, Token_Shl, v_one, e, it); @@ -4718,7 +5540,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { lbValue e = nullptr; switch (tc->token.kind) { case Token_cast: - e = ir_emit_conv(proc, x, type); + e = lb_emit_conv(proc, x, type); break; case Token_transmute: e = lb_emit_transmute(proc, x, type); @@ -4726,7 +5548,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { default: GB_PANIC("Invalid AST TypeCast"); } - lbValue v = ir_add_local_generated(proc, type, false); + lbValue v = lb_add_local_generated(proc, type, false); ir_emit_store(proc, v, e); return ir_addr(v); case_end; @@ -4796,6 +5618,7 @@ bool lb_init_generator(lbGenerator *gen, Checker *c) { // gen->ctx = LLVMContextCreate(); gen->module.ctx = LLVMGetGlobalContext(); gen->module.mod = LLVMModuleCreateWithNameInContext("odin_module", gen->module.ctx); + gb_mutex_init(&gen->module.mutex); map_init(&gen->module.types, heap_allocator()); map_init(&gen->module.values, heap_allocator()); map_init(&gen->module.members, heap_allocator()); @@ -4831,7 +5654,7 @@ lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value) { } -void lb_generate_module(lbGenerator *gen) { +void lb_generate_code(lbGenerator *gen) { lbModule *m = &gen->module; LLVMModuleRef mod = gen->module.mod; CheckerInfo *info = gen->info; @@ -4906,18 +5729,34 @@ void lb_generate_module(lbGenerator *gen) { String name = lb_get_entity_name(m, e); - if (true) { - continue; - } lbValue g = {}; g.value = LLVMAddGlobal(m->mod, lb_type(m, e->type), alloc_cstring(heap_allocator(), name)); g.type = alloc_type_pointer(e->type); - // lbValue g = ir_value_global(e, nullptr); - // g->Global.name = name; - // g->Global.thread_local_model = e->Variable.thread_local_model; - // g->Global.is_foreign = is_foreign; - // g->Global.is_export = is_export; + if (e->Variable.thread_local_model != "") { + LLVMSetThreadLocal(g.value, true); + + String m = e->Variable.thread_local_model; + LLVMThreadLocalMode mode = LLVMGeneralDynamicTLSModel; + if (m == "default") { + mode = LLVMGeneralDynamicTLSModel; + } else if (m == "localdynamic") { + mode = LLVMLocalDynamicTLSModel; + } else if (m == "initialexec") { + mode = LLVMInitialExecTLSModel; + } else if (m == "localexec") { + mode = LLVMLocalExecTLSModel; + } else { + GB_PANIC("Unhandled thread local mode %.*s", LIT(m)); + } + LLVMSetThreadLocalMode(g.value, mode); + } + if (is_foreign) { + LLVMSetExternallyInitialized(g.value, true); + } + if (is_export) { + LLVMSetLinkage(g.value, LLVMDLLExportLinkage); + } GlobalVariable var = {}; var.var = g; @@ -4940,6 +5779,9 @@ void lb_generate_module(lbGenerator *gen) { lb_add_member(m, name, g); } + Array procedures = {}; + procedures.allocator = heap_allocator(); + for_array(i, info->entities) { // arena_free_all(&temp_arena); @@ -4995,37 +5837,39 @@ void lb_generate_module(lbGenerator *gen) { case Entity_Procedure: { - if (e->pkg->name != "demo") { + if (e->pkg->name == "demo") { + // } else if (e->pkg->name == "os") { + } else { continue; } lbProcedure *p = lb_create_procedure(m, e); - - if (p->body != nullptr) { // Build Procedure - lb_begin_procedure_body(p); - lb_build_stmt(p, p->body); - lb_end_procedure_body(p); - } - - lb_end_procedure(p); + array_add(&procedures, p); } break; } } + for_array(i, procedures) { + lbProcedure *p = procedures[i]; + if (p->body != nullptr) { // Build Procedure + lb_begin_procedure_body(p); + lb_build_stmt(p, p->body); + lb_end_procedure_body(p); + } + + lb_end_procedure(p); + } + char *llvm_error = nullptr; defer (LLVMDisposeMessage(llvm_error)); LLVMVerifyModule(mod, LLVMAbortProcessAction, &llvm_error); + LLVMDumpModule(mod); - // LLVMInitializeAllTargetInfos(); - // LLVMInitializeAllTargets(); - // LLVMInitializeAllTargetMCs(); - // LLVMInitializeAllAsmParsers(); - // LLVMInitializeAllAsmPrinters(); // char const *target_triple = "x86_64-pc-windows-msvc"; // char const *target_data_layout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"; diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index 0dfd14163..eec14b4d5 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -49,6 +49,8 @@ struct lbModule { LLVMContextRef ctx; CheckerInfo *info; + gbMutex mutex; + Map types; // Key: Type * Map values; // Key: Entity * @@ -77,6 +79,9 @@ struct lbBlock { LLVMBasicBlockRef block; Scope *scope; isize scope_index; + + Array preds; + Array succs; }; struct lbBranchBlocks { @@ -106,6 +111,28 @@ enum lbDeferExitKind { lbDeferExit_Branch, }; +enum lbDeferKind { + lbDefer_Node, + lbDefer_Instr, + lbDefer_Proc, +}; + +struct lbDefer { + lbDeferKind kind; + isize scope_index; + isize context_stack_count; + lbBlock * block; + union { + Ast *stmt; + // NOTE(bill): 'instr' will be copied every time to create a new one + lbValue instr; + struct { + lbValue deferred; + Array result_as_args; + } proc; + }; +}; + struct lbTargetList { lbTargetList *prev; bool is_block; @@ -138,6 +165,7 @@ struct lbProcedure { lbAddr return_ptr; Array params; + Array defer_stmts; Array blocks; Array branch_blocks; Scope * curr_scope; @@ -176,7 +204,10 @@ LLVMTypeRef lb_type(lbModule *m, Type *type); lbBlock *lb_create_block(lbProcedure *p, char const *name); lbValue lb_const_nil(lbModule *m, Type *type); +lbValue lb_const_undef(lbModule *m, Type *type); lbValue lb_const_value(lbModule *m, Type *type, ExactValue value); +lbValue lb_const_bool(lbModule *m, Type *type, bool value); +lbValue lb_const_int(lbModule *m, Type *type, u64 value); lbAddr lb_addr(lbValue addr); @@ -200,7 +231,7 @@ lbValue lb_emit_array_epi(lbProcedure *p, lbValue value, i32 index); lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Type *type); - +void lb_emit_defer_stmts(lbProcedure *p, lbDeferExitKind kind, lbBlock *block); lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t); lbValue lb_build_call_expr(lbProcedure *p, Ast *expr); @@ -212,6 +243,12 @@ lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr, bool zero_ini lbValue lb_emit_transmute(lbProcedure *p, lbValue value, Type *t); +lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue right); +lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, ProcInlining inlining = ProcInlining_none, bool use_return_ptr_hint = false); + +lbValue lb_typeid(lbModule *m, Type *type, Type *typeid_type=t_typeid); + +lbValue lb_address_from_load_or_generate_local(lbProcedure *p, lbValue value); enum lbCallingConventionKind { lbCallingConvention_C = 0, diff --git a/src/main.cpp b/src/main.cpp index bed1935ec..119e6fc62 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1280,7 +1280,7 @@ int main(int arg_count, char const **arg_ptr) { if (!lb_init_generator(&gen, &checker)) { return 1; } - lb_generate_module(&gen); + lb_generate_code(&gen); if (build_context.show_timings) { show_timings(&checker, timings); diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index 19cb9b9aa..1854020f9 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -904,7 +904,7 @@ Token tokenizer_get_token(Tokenizer *t) { } if (token.kind == Token_Ident && token.string == "notin") { - token.kind = Token_not_in; + token.kind = Token_not_in; } } diff --git a/src/types.cpp b/src/types.cpp index 2afba733c..73023001a 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -3421,7 +3421,13 @@ gbString write_type_to_string(gbString str, Type *type) { str = gb_string_appendc(str, ")"); if (type->Proc.results) { str = gb_string_appendc(str, " -> "); + if (type->Proc.results->Tuple.variables.count > 1) { + str = gb_string_appendc(str, "("); + } str = write_type_to_string(str, type->Proc.results); + if (type->Proc.results->Tuple.variables.count > 1) { + str = gb_string_appendc(str, ")"); + } } break; From 66da96284a4674e87cdf17b546620d84a817971d Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 7 Feb 2020 00:01:44 +0000 Subject: [PATCH 10/46] Add `defer` statement for LB --- src/llvm_backend.cpp | 185 ++++++++++++++++++++++++++++++++++++++++--- src/llvm_backend.hpp | 3 + 2 files changed, 178 insertions(+), 10 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 886c87e7d..c0b015540 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -49,6 +49,12 @@ lbValue lb_addr_get_ptr(lbProcedure *p, lbAddr const &addr) { return addr.addr; } + +lbValue lb_build_addr_ptr(lbProcedure *p, Ast *expr) { + lbAddr addr = lb_build_addr(p, expr); + return lb_addr_get_ptr(p, addr); +} + lbAddr lb_addr_bit_field(lbValue value, i32 index) { lbAddr addr = {}; addr.kind = lbAddr_BitField; @@ -1464,6 +1470,8 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { case_end; case_ast_node(ds, DeferStmt, node); + isize scope_index = p->scope_index; + lb_add_defer_node(p, scope_index, ds->stmt); case_end; case_ast_node(rs, ReturnStmt, node); @@ -1638,9 +1646,11 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { case_end; case_ast_node(rs, RangeStmt, node); + // TODO(bill): RangeStmt case_end; case_ast_node(rs, InlineRangeStmt, node); + // TODO(bill): InlineRangeStmt case_end; case_ast_node(ss, SwitchStmt, node); @@ -1753,6 +1763,7 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { case_end; case_ast_node(ss, TypeSwitchStmt, node); + // TODO(bill): TypeSwitchStmt case_end; case_ast_node(bs, BranchStmt, node); @@ -1813,7 +1824,7 @@ lbValue lb_const_bool(lbModule *m, Type *type, bool value) { return res; } -LLVMValueRef llvm_const_f32(lbModule *m, f32 f, Type *type=t_f32) { +LLVMValueRef lb_const_f32(lbModule *m, f32 f, Type *type=t_f32) { u32 u = bit_cast(f); LLVMValueRef i = LLVMConstInt(LLVMInt32TypeInContext(m->ctx), u, false); return LLVMConstBitCast(i, lb_type(m, type)); @@ -2074,7 +2085,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { case ExactValue_Float: if (type_size_of(type) == 4) { f32 f = cast(f32)value.value_float; - res.value = llvm_const_f32(m, f, type); + res.value = lb_const_f32(m, f, type); return res; } res.value = LLVMConstReal(lb_type(m, original_type), value.value_float); @@ -2084,8 +2095,8 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { LLVMValueRef values[2] = {}; switch (8*type_size_of(type)) { case 64: - values[0] = llvm_const_f32(m, cast(f32)value.value_complex.real); - values[1] = llvm_const_f32(m, cast(f32)value.value_complex.imag); + values[0] = lb_const_f32(m, cast(f32)value.value_complex.real); + values[1] = lb_const_f32(m, cast(f32)value.value_complex.imag); break; case 128: values[0] = LLVMConstReal(lb_type(m, t_f64), value.value_complex.real); @@ -2103,10 +2114,10 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { switch (8*type_size_of(type)) { case 128: // @QuaternionLayout - values[3] = llvm_const_f32(m, cast(f32)value.value_quaternion.real); - values[0] = llvm_const_f32(m, cast(f32)value.value_quaternion.imag); - values[1] = llvm_const_f32(m, cast(f32)value.value_quaternion.jmag); - values[2] = llvm_const_f32(m, cast(f32)value.value_quaternion.kmag); + values[3] = lb_const_f32(m, cast(f32)value.value_quaternion.real); + values[0] = lb_const_f32(m, cast(f32)value.value_quaternion.imag); + values[1] = lb_const_f32(m, cast(f32)value.value_quaternion.jmag); + values[2] = lb_const_f32(m, cast(f32)value.value_quaternion.kmag); break; case 256: // @QuaternionLayout @@ -3361,6 +3372,16 @@ void lb_emit_defer_stmts(lbProcedure *p, lbDeferExitKind kind, lbBlock *block) { } } +lbDefer lb_add_defer_node(lbProcedure *p, isize scope_index, Ast *stmt) { + lbDefer d = {lbDefer_Node}; + d.scope_index = scope_index; + d.context_stack_count = p->context_stack.count; + d.block = p->curr_block; + d.stmt = stmt; + array_add(&p->defer_stmts, d); + return d; +} + lbValue lb_emit_call_internal(lbProcedure *p, lbValue value, lbValue return_ptr, Array const &processed_args, Type *abi_rt, lbAddr context_ptr, ProcInlining inlining) { unsigned arg_count = cast(unsigned)processed_args.count; @@ -4394,13 +4415,139 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { return res; case_end; + case_ast_node(ta, TypeAssertion, expr); + TokenPos pos = ast_token(expr).pos; + Type *type = tv.type; + lbValue e = lb_build_expr(p, ta->expr); + Type *t = type_deref(e.type); + if (is_type_union(t)) { + GB_PANIC("cast - union_cast"); + // return lb_emit_union_cast(p, e, type, pos); + } else if (is_type_any(t)) { + GB_PANIC("cast - any_cast"); + // return lb_emit_any_cast(p, e, type, pos); + } else { + GB_PANIC("TODO(bill): type assertion %s", type_to_string(e.type)); + } + case_end; + + case_ast_node(tc, TypeCast, expr); + lbValue e = lb_build_expr(p, tc->expr); + switch (tc->token.kind) { + case Token_cast: + return lb_emit_conv(p, e, tv.type); + case Token_transmute: + return lb_emit_transmute(p, e, tv.type); + } + GB_PANIC("Invalid AST TypeCast"); + case_end; + + case_ast_node(ac, AutoCast, expr); + return lb_build_expr(p, ac->expr); + case_end; + + case_ast_node(ue, UnaryExpr, expr); + #if 0 + switch (ue->op.kind) { + case Token_And: { + Ast *ue_expr = unparen_expr(ue->expr); + if (ue_expr->kind == Ast_TypeAssertion) { + gbAllocator a = heap_allocator(); + GB_ASSERT(is_type_pointer(tv.type)); + + ast_node(ta, TypeAssertion, ue_expr); + TokenPos pos = ast_token(expr).pos; + Type *type = type_of_expr(ue_expr); + GB_ASSERT(!is_type_tuple(type)); + + lbValue e = lb_build_expr(p, ta->expr); + Type *t = type_deref(e.type); + if (is_type_union(t)) { + lbValue v = e; + if (!is_type_pointer(v.type)) { + v = lb_address_from_load_or_generate_local(p, v); + } + Type *src_type = type_deref(v.type); + Type *dst_type = type; + + lbValue src_tag = lb_emit_load(p, lb_emit_union_tag_ptr(p, v)); + lbValue dst_tag = lb_const_union_tag(src_type, dst_type); + + lbValue ok = lb_emit_comp(p, Token_CmpEq, src_tag, dst_tag); + auto args = array_make(heap_allocator(), 6); + args[0] = ok; + + args[1] = lb_find_or_add_entity_string(p->module, pos.file); + args[2] = lb_const_int(pos.line); + args[3] = lb_const_int(pos.column); + + args[4] = lb_typeid(p->module, src_type); + args[5] = lb_typeid(p->module, dst_type); + lb_emit_runtime_call(p, "type_assertion_check", args); + + lbValue data_ptr = v; + return ir_emit_conv(p, data_ptr, tv.type); + } else if (is_type_any(t)) { + lbValue v = e; + if (is_type_pointer(ir_type(v))) { + v = ir_emit_load(p, v); + } + + lbValue data_ptr = ir_emit_struct_ev(p, v, 0); + lbValue any_id = ir_emit_struct_ev(p, v, 1); + lbValue id = lb_typeid(p->module, type); + + + lbValue ok = lb_emit_comp(p, Token_CmpEq, any_id, id); + auto args = array_make(ir_allocator(), 6); + args[0] = ok; + + args[1] = lb_find_or_add_entity_string(p->module, pos.file); + args[2] = lb_const_int(pos.line); + args[3] = ir_const_int(pos.column); + + args[4] = any_id; + args[5] = id; + lb_emit_runtime_call(p, "type_assertion_check", args); + + return ir_emit_conv(p, data_ptr, tv.type); + } else { + GB_PANIC("TODO(bill): type assertion %s", type_to_string(type)); + } + } else if (ue_expr->kind == Ast_IndexExpr) { + } + + return lb_build_addr_ptr(p, ue->expr); + } + default: + return lb_emit_unary_arith(p, ue->op.kind, lb_build_expr(p, ue->expr), tv.type); + } + #endif + case_end; + case_ast_node(be, BinaryExpr, expr); return lb_build_binary_expr(p, expr); case_end; + case_ast_node(pl, ProcLit, expr); + // return lb_gen_anonymous_proc_lit(p->module, p->name, expr, p); + case_end; + + case_ast_node(cl, CompoundLit, expr); + return lb_addr_load(p, lb_build_addr(p, expr)); + case_end; + case_ast_node(ce, CallExpr, expr); return lb_build_call_expr(p, expr); case_end; + + case_ast_node(se, SliceExpr, expr); + return lb_addr_load(p, lb_build_addr(p, expr)); + case_end; + + case_ast_node(ie, IndexExpr, expr); + return lb_addr_load(p, lb_build_addr(p, expr)); + case_end; } GB_PANIC("lb_build_expr: %.*s", LIT(ast_strings[expr->kind])); @@ -4408,6 +4555,25 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { return {}; } +lbValue lb_get_using_variable(lbProcedure *p, Entity *e) { + GB_ASSERT(e->kind == Entity_Variable && e->flags & EntityFlag_Using); + String name = e->token.string; + Entity *parent = e->using_parent; + Selection sel = lookup_field(parent->type, name, false); + GB_ASSERT(sel.entity != nullptr); + lbValue *pv = map_get(&p->module->values, hash_entity(parent)); + lbValue v = {}; + if (pv != nullptr) { + v = *pv; + } else { + GB_ASSERT_MSG(e->using_expr != nullptr, "%.*s", LIT(name)); + v = lb_build_addr_ptr(p, e->using_expr); + } + GB_ASSERT(v.value != nullptr); + GB_ASSERT(parent->type == type_deref(v.type)); + return lb_emit_deep_field_gep(p, v, sel); +} + lbAddr lb_build_addr_from_entity(lbProcedure *p, Entity *e, Ast *expr) { GB_ASSERT(e != nullptr); @@ -4425,8 +4591,7 @@ lbAddr lb_build_addr_from_entity(lbProcedure *p, Entity *e, Ast *expr) { v = *found; } else if (e->kind == Entity_Variable && e->flags & EntityFlag_Using) { // NOTE(bill): Calculate the using variable every time - GB_PANIC("HERE: using variable"); - // v = lb_get_using_variable(p, e); + v = lb_get_using_variable(p, e); } if (v.value == nullptr) { diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index eec14b4d5..2e976cf11 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -250,6 +250,9 @@ lbValue lb_typeid(lbModule *m, Type *type, Type *typeid_type=t_typeid); lbValue lb_address_from_load_or_generate_local(lbProcedure *p, lbValue value); +lbDefer lb_add_defer_node(lbProcedure *p, isize scope_index, Ast *stmt); + + enum lbCallingConventionKind { lbCallingConvention_C = 0, lbCallingConvention_Fast = 8, From 35711a400c4245a75b0548577fd432c5bf674c37 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 8 Feb 2020 12:49:38 +0000 Subject: [PATCH 11/46] Anonymous procedure literal support --- examples/llvm-demo/demo.odin | 25 +++- src/check_expr.cpp | 1 + src/llvm_backend.cpp | 267 +++++++++++++++++++++++++++++++---- src/llvm_backend.hpp | 10 +- src/parser.hpp | 1 + 5 files changed, 268 insertions(+), 36 deletions(-) diff --git a/examples/llvm-demo/demo.odin b/examples/llvm-demo/demo.odin index 58bb10682..578f98e0a 100644 --- a/examples/llvm-demo/demo.odin +++ b/examples/llvm-demo/demo.odin @@ -1,9 +1,12 @@ package demo +import "core:os" + BarBar :: struct { x, y: int, }; foo :: proc(x: int) -> (b: BarBar) { + b = {1, 2}; return; } @@ -15,12 +18,19 @@ main :: proc() { array := [4]int{3 = 1, 0 .. 1 = 3, 2 = 9}; slice := []int{1, 2, 3, 4}; + x: ^int = nil; + y := slice != nil; + @thread_local a: int; - x := i32(1); - y := i32(2); - z := x + y; - w := z - 2; + if true { + foo(1); + } + + x1 := i32(1); + y1 := i32(2); + z1 := x1 + y1; + w1 := z1 - 2; f := foo; @@ -29,6 +39,13 @@ main :: proc() { s := "Hellope"; + b := true; + aaa := b ? int(123) : int(34); + defer aaa = 333; + + p := proc(x: int) {}; + + bb := BarBar{1, 2}; pc: proc "contextless" (x: i32) -> BarBar; po: proc "odin" (x: i32) -> BarBar; diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 52c1f38b7..6d049747f 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -7643,6 +7643,7 @@ ExprKind check_expr_base_internal(CheckerContext *c, Operand *o, Ast *node, Type return kind; } + pl->decl = decl; check_procedure_later(ctx.checker, ctx.file, empty_token, decl, type, pl->body, pl->tags); } check_close_scope(&ctx); diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index c0b015540..fe42dae9d 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -64,10 +64,21 @@ lbAddr lb_addr_bit_field(lbValue value, i32 index) { } -void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue const &value) { +void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue value) { if (addr.addr.value == nullptr) { return; } + GB_ASSERT(value.type != nullptr); + if (is_type_untyped_nil(value.type)) { + Type *t = lb_addr_type(addr); + value.type = t; + value.value = LLVMConstNull(lb_type(p->module, t)); + } else if (is_type_untyped_undef(value.type)) { + Type *t = lb_addr_type(addr); + value.type = t; + value.value = LLVMGetUndef(lb_type(p->module, t)); + } + GB_ASSERT(value.value != nullptr); LLVMBuildStore(p->builder, value.value, addr.addr.value); } @@ -156,6 +167,10 @@ String lb_get_entity_name(lbModule *m, Entity *e, String default_name) { return e->TypeName.ir_mangled_name; } + if (e->pkg == nullptr) { + return e->token.string; + } + String name = {}; bool no_name_mangle = false; @@ -640,8 +655,8 @@ void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *nam lbProcedure *lb_create_procedure(lbModule *m, Entity *entity) { lbProcedure *p = gb_alloc_item(heap_allocator(), lbProcedure); - entity->code_gen_module = m; p->module = m; + entity->code_gen_module = m; p->entity = entity; p->name = lb_get_entity_name(m, entity); @@ -2603,6 +2618,29 @@ lbValue lb_build_binary_expr(lbProcedure *p, Ast *expr) { lbValue right = lb_build_expr(p, be->right); return lb_emit_arith(p, be->op.kind, left, right, type); } + + case Token_CmpEq: + case Token_NotEq: + case Token_Lt: + case Token_LtEq: + case Token_Gt: + case Token_GtEq: + { + lbValue left = lb_build_expr(p, be->left); + Type *type = default_type(tv.type); + lbValue right = lb_build_expr(p, be->right); + lbValue cmp = lb_emit_comp(p, be->op.kind, left, right); + return lb_emit_conv(p, cmp, type); + } + + case Token_CmpAnd: + case Token_CmpOr: + GB_PANIC("TODO(bill): && ||"); + break; + case Token_in: + case Token_not_in: + GB_PANIC("TODO(bill): in/not_in"); + break; default: GB_PANIC("Invalid binary expression"); break; @@ -3143,7 +3181,7 @@ lbValue lb_emit_struct_ep(lbProcedure *p, lbValue s, i32 index) { GB_ASSERT_MSG(result_type != nullptr, "%s %d", type_to_string(t), index); lbValue res = {}; - res.value = LLVMBuildStructGEP2(p->builder, lb_type(p->module, result_type), s.value, cast(unsigned)index, ""); + res.value = LLVMBuildStructGEP2(p->builder, lb_type(p->module, type_deref(s.type)), s.value, cast(unsigned)index, ""); res.type = result_type; return res; } @@ -3592,7 +3630,7 @@ lbValue lb_emit_array_epi(lbProcedure *p, lbValue s, i32 index) { GB_ASSERT(0 <= index); Type *ptr = base_array_type(st); lbValue res = {}; - res.value = LLVMBuildStructGEP2(p->builder, lb_type(p->module, ptr), s.value, index, ""); + res.value = LLVMBuildStructGEP2(p->builder, lb_type(p->module, st), s.value, index, ""); res.type = alloc_type_pointer(ptr); return res; } @@ -3998,6 +4036,135 @@ void lb_loop_end(lbProcedure *p, lbLoopData const &data) { } } +lbValue lb_emit_comp_against_nil(lbProcedure *p, TokenKind op_kind, lbValue x) { + lbValue res = {}; + res.type = t_llvm_bool; + Type *t = x.type; + if (is_type_pointer(t)) { + if (op_kind == Token_CmpEq) { + res.value = LLVMBuildIsNull(p->builder, x.value, ""); + } else if (op_kind == Token_NotEq) { + res.value = LLVMBuildIsNotNull(p->builder, x.value, ""); + } + return res; + } else if (is_type_cstring(t)) { + lbValue ptr = lb_emit_conv(p, x, t_u8_ptr); + if (op_kind == Token_CmpEq) { + res.value = LLVMBuildIsNull(p->builder, ptr.value, ""); + } else if (op_kind == Token_NotEq) { + res.value = LLVMBuildIsNotNull(p->builder, ptr.value, ""); + } + return res; + } else if (is_type_any(t)) { + lbValue data = lb_emit_struct_ev(p, x, 0); + lbValue ti = lb_emit_struct_ev(p, x, 1); + if (op_kind == Token_CmpEq) { + LLVMValueRef a = LLVMBuildIsNull(p->builder, data.value, ""); + LLVMValueRef b = LLVMBuildIsNull(p->builder, ti.value, ""); + res.value = LLVMBuildOr(p->builder, a, b, ""); + return res; + } else if (op_kind == Token_NotEq) { + LLVMValueRef a = LLVMBuildIsNotNull(p->builder, data.value, ""); + LLVMValueRef b = LLVMBuildIsNotNull(p->builder, ti.value, ""); + res.value = LLVMBuildAnd(p->builder, a, b, ""); + return res; + } + } else if (is_type_slice(t)) { + gb_printf_err("HERE\n"); + lbValue data = lb_emit_struct_ev(p, x, 0); + lbValue cap = lb_emit_struct_ev(p, x, 1); + if (op_kind == Token_CmpEq) { + LLVMValueRef a = LLVMBuildIsNull(p->builder, data.value, ""); + LLVMValueRef b = LLVMBuildIsNull(p->builder, cap.value, ""); + res.value = LLVMBuildOr(p->builder, a, b, ""); + return res; + } else if (op_kind == Token_NotEq) { + LLVMValueRef a = LLVMBuildIsNotNull(p->builder, data.value, ""); + LLVMValueRef b = LLVMBuildIsNotNull(p->builder, cap.value, ""); + res.value = LLVMBuildAnd(p->builder, a, b, ""); + return res; + } + } else if (is_type_dynamic_array(t)) { + lbValue data = lb_emit_struct_ev(p, x, 0); + lbValue cap = lb_emit_struct_ev(p, x, 2); + if (op_kind == Token_CmpEq) { + LLVMValueRef a = LLVMBuildIsNull(p->builder, data.value, ""); + LLVMValueRef b = LLVMBuildIsNull(p->builder, cap.value, ""); + res.value = LLVMBuildOr(p->builder, a, b, ""); + return res; + } else if (op_kind == Token_NotEq) { + LLVMValueRef a = LLVMBuildIsNotNull(p->builder, data.value, ""); + LLVMValueRef b = LLVMBuildIsNotNull(p->builder, cap.value, ""); + res.value = LLVMBuildAnd(p->builder, a, b, ""); + return res; + } + } else if (is_type_map(t)) { + GB_PANIC("map nil comparison"); + // lbValue len = lb_map_len(p, x); + // return lb_emit_comp(p, op_kind, len, v_zero); + } else if (is_type_union(t)) { + if (type_size_of(t) == 0) { + if (op_kind == Token_CmpEq) { + return lb_const_bool(p->module, t_llvm_bool, true); + } else if (op_kind == Token_NotEq) { + return lb_const_bool(p->module, t_llvm_bool, false); + } + } else { + GB_PANIC("lb_emit_union_tag_value"); + // lbValue tag = lb_emit_union_tag_value(p, x); + // return lb_emit_comp(p, op_kind, tag, v_zero); + } + } else if (is_type_typeid(t)) { + lbValue invalid_typeid = lb_const_value(p->module, t_typeid, exact_value_i64(0)); + return lb_emit_comp(p, op_kind, x, invalid_typeid); + } else if (is_type_bit_field(t)) { + auto args = array_make(heap_allocator(), 2); + lbValue lhs = lb_address_from_load_or_generate_local(p, x); + args[0] = lb_emit_conv(p, lhs, t_rawptr); + args[1] = lb_const_int(p->module, t_int, type_size_of(t)); + lbValue val = lb_emit_runtime_call(p, "memory_compare_zero", args); + lbValue res = lb_emit_comp(p, op_kind, val, lb_const_int(p->module, t_int, 0)); + return res; + } else if (is_type_soa_struct(t)) { + GB_PANIC("#soa struct nil comparison"); + // Type *bt = base_type(t); + // if (bt->Struct.soa_kind == StructSoa_Slice) { + // lbValue len = lb_soa_struct_len(p, x); + // if (bt->Struct.fields.count > 1) { + // lbValue data = lb_emit_struct_ev(p, x, 0); + // if (op_kind == Token_CmpEq) { + // lbValue a = lb_emit_comp(p, Token_CmpEq, data, v_raw_nil); + // lbValue b = lb_emit_comp(p, Token_CmpEq, len, v_zero); + // return lb_emit_arith(p, Token_Or, a, b, t_bool); + // } else if (op_kind == Token_NotEq) { + // lbValue a = lb_emit_comp(p, Token_NotEq, data, v_raw_nil); + // lbValue b = lb_emit_comp(p, Token_NotEq, len, v_zero); + // return lb_emit_arith(p, Token_And, a, b, t_bool); + // } + // } else { + // return lb_emit_comp(p, op_kind, len, v_zero); + // } + // } else if (bt->Struct.soa_kind == StructSoa_Dynamic) { + // lbValue cap = lb_soa_struct_len(p, x); + // if (bt->Struct.fields.count > 1) { + // lbValue data = lb_emit_struct_ev(p, x, 0); + // if (op_kind == Token_CmpEq) { + // lbValue a = lb_emit_comp(p, Token_CmpEq, data, v_raw_nil); + // lbValue b = lb_emit_comp(p, Token_CmpEq, cap, v_zero); + // return lb_emit_arith(p, Token_Or, a, b, t_bool); + // } else if (op_kind == Token_NotEq) { + // lbValue a = lb_emit_comp(p, Token_NotEq, data, v_raw_nil); + // lbValue b = lb_emit_comp(p, Token_NotEq, cap, v_zero); + // return lb_emit_arith(p, Token_And, a, b, t_bool); + // } + // } else { + // return lb_emit_comp(p, op_kind, cap, v_zero); + // } + // } + } + return {}; +} + lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue right) { Type *a = base_type(left.type); @@ -4005,15 +4172,15 @@ lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue ri GB_ASSERT(gb_is_between(op_kind, Token__ComparisonBegin+1, Token__ComparisonEnd-1)); - // lbValue nil_check = {}; - // if (left->kind == irValue_Nil) { - // nil_check = lb_emit_comp_against_nil(p, op_kind, right); - // } else if (right->kind == irValue_Nil) { - // nil_check = lb_emit_comp_against_nil(p, op_kind, left); - // } - // if (nil_check.value != nullptr) { - // return nil_check; - // } + lbValue nil_check = {}; + if (is_type_untyped_nil(left.type)) { + nil_check = lb_emit_comp_against_nil(p, op_kind, right); + } else if (is_type_untyped_nil(right.type)) { + nil_check = lb_emit_comp_against_nil(p, op_kind, left); + } + if (nil_check.value != nullptr) { + return nil_check; + } if (are_types_identical(a, b)) { // NOTE(bill): No need for a conversion @@ -4293,6 +4460,46 @@ lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue ri } +lbValue lb_generate_anonymous_proc_lit(lbModule *m, String const &prefix_name, Ast *expr, lbProcedure *parent = nullptr) { + ast_node(pl, ProcLit, expr); + + // NOTE(bill): Generate a new name + // parent$count + isize name_len = prefix_name.len + 1 + 8 + 1; + char *name_text = gb_alloc_array(heap_allocator(), char, name_len); + i32 name_id = cast(i32)m->anonymous_proc_lits.entries.count; + + name_len = gb_snprintf(name_text, name_len, "%.*s$anon-%d", LIT(prefix_name), name_id); + String name = make_string((u8 *)name_text, name_len-1); + + Type *type = type_of_expr(expr); + set_procedure_abi_types(heap_allocator(), type); + + + Token token = {}; + token.pos = ast_token(expr).pos; + token.kind = Token_Ident; + token.string = name; + Entity *e = alloc_entity_procedure(nullptr, token, type, pl->tags); + e->decl_info = pl->decl; + lbProcedure *p = lb_create_procedure(m, e); + + lbValue value = {}; + value.value = p->value; + value.type = p->type; + + array_add(&m->procedures_to_generate, p); + if (parent != nullptr) { + array_add(&parent->children, p); + } else { + map_set(&m->members, hash_string(name), value); + } + + map_set(&m->anonymous_proc_lits, hash_pointer(expr), p); + + return value; +} + lbValue lb_build_expr(lbProcedure *p, Ast *expr) { lbModule *m = p->module; @@ -4320,8 +4527,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { case_end; case_ast_node(i, Implicit, expr); - // return ir_addr_load(p, lb_build_addr(p, expr)); - GB_PANIC("TODO(bill): Implicit"); + return lb_addr_load(p, lb_build_addr(p, expr)); case_end; case_ast_node(u, Undef, expr); @@ -4338,8 +4544,10 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { LIT(token.pos.file), token.pos.line, token.pos.column); return {}; } else if (e->kind == Entity_Nil) { - GB_PANIC("Entity_Nil"); - return lb_const_nil(m, tv.type); + lbValue res = {}; + res.value = nullptr; + res.type = e->type; + return res; } auto *found = map_get(&p->module->values, hash_entity(e)); @@ -4530,7 +4738,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { case_end; case_ast_node(pl, ProcLit, expr); - // return lb_gen_anonymous_proc_lit(p->module, p->name, expr, p); + return lb_generate_anonymous_proc_lit(p->module, p->name, expr, p); case_end; case_ast_node(cl, CompoundLit, expr); @@ -5784,11 +5992,14 @@ bool lb_init_generator(lbGenerator *gen, Checker *c) { gen->module.ctx = LLVMGetGlobalContext(); gen->module.mod = LLVMModuleCreateWithNameInContext("odin_module", gen->module.ctx); gb_mutex_init(&gen->module.mutex); - map_init(&gen->module.types, heap_allocator()); - map_init(&gen->module.values, heap_allocator()); - map_init(&gen->module.members, heap_allocator()); - map_init(&gen->module.const_strings, heap_allocator()); - map_init(&gen->module.const_string_byte_slices, heap_allocator()); + gbAllocator a = heap_allocator(); + map_init(&gen->module.types, a); + map_init(&gen->module.values, a); + map_init(&gen->module.members, a); + map_init(&gen->module.const_strings, a); + map_init(&gen->module.const_string_byte_slices, a); + map_init(&gen->module.anonymous_proc_lits, a); + array_init(&gen->module.procedures_to_generate, a); return true; } @@ -5944,9 +6155,6 @@ void lb_generate_code(lbGenerator *gen) { lb_add_member(m, name, g); } - Array procedures = {}; - procedures.allocator = heap_allocator(); - for_array(i, info->entities) { // arena_free_all(&temp_arena); @@ -6009,20 +6217,19 @@ void lb_generate_code(lbGenerator *gen) { } lbProcedure *p = lb_create_procedure(m, e); - array_add(&procedures, p); + array_add(&m->procedures_to_generate, p); } break; } } - for_array(i, procedures) { - lbProcedure *p = procedures[i]; + for_array(i, m->procedures_to_generate) { + lbProcedure *p = m->procedures_to_generate[i]; if (p->body != nullptr) { // Build Procedure lb_begin_procedure_body(p); lb_build_stmt(p, p->body); lb_end_procedure_body(p); } - lb_end_procedure(p); } diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index 2e976cf11..2ee269bb6 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -8,6 +8,8 @@ #include "llvm-c/Transforms/InstCombine.h" #include "llvm-c/Transforms/IPO.h" +struct lbProcedure; + struct lbValue { LLVMValueRef value; Type *type; @@ -59,10 +61,14 @@ struct lbModule { Map const_strings; // Key: String Map const_string_byte_slices; // Key: String + Map anonymous_proc_lits; // Key: Ast * + lbAddr global_default_context; u32 global_array_index; u32 global_generated_index; + + Array procedures_to_generate; }; struct lbGenerator { @@ -145,7 +151,7 @@ struct lbTargetList { struct lbProcedure { lbProcedure *parent; - Array children; + Array children; Entity * entity; lbModule * module; @@ -213,7 +219,7 @@ lbValue lb_const_int(lbModule *m, Type *type, u64 value); lbAddr lb_addr(lbValue addr); Type *lb_addr_type(lbAddr const &addr); LLVMTypeRef lb_addr_lb_type(lbAddr const &addr); -void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue const &value); +void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue value); lbValue lb_addr_load(lbProcedure *p, lbAddr const &addr); lbValue lb_emit_load(lbProcedure *p, lbValue v); diff --git a/src/parser.hpp b/src/parser.hpp index 28c5d880a..00366d79a 100644 --- a/src/parser.hpp +++ b/src/parser.hpp @@ -248,6 +248,7 @@ enum StmtAllowFlag { ProcInlining inlining; \ Token where_token; \ Array where_clauses; \ + DeclInfo *decl; \ }) \ AST_KIND(CompoundLit, "compound literal", struct { \ Ast *type; \ From bfda1016860942564abdbfe86cbb3487469c8ea5 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 10 Feb 2020 00:14:43 +0000 Subject: [PATCH 12/46] Get basic IR code generation working properly --- src/checker.cpp | 5 +- src/llvm_backend.cpp | 2599 ++++++++++++++++++++++++++++++++---------- src/llvm_backend.hpp | 30 +- 3 files changed, 1988 insertions(+), 646 deletions(-) diff --git a/src/checker.cpp b/src/checker.cpp index 3f9d3ba71..bfd2d3149 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -1625,6 +1625,7 @@ void add_dependency_to_set(Checker *c, Entity *entity) { if (decl == nullptr) { return; } + for_array(i, decl->type_info_deps.entries) { Type *type = decl->type_info_deps.entries[i].ptr; add_min_dep_type_info(c, type); @@ -1670,8 +1671,8 @@ void generate_minimum_dependency_set(Checker *c, Entity *start) { str_lit("type_table"), str_lit("__type_info_of"), str_lit("default_temp_allocator"), - str_lit("default_temp_allocator_init"), - str_lit("default_temp_allocator_destroy"), + // str_lit("default_temp_allocator_init"), + // str_lit("default_temp_allocator_destroy"), str_lit("default_temp_allocator_proc"), str_lit("Type_Info"), diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index fe42dae9d..8d4b47e78 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1,10 +1,27 @@ #include "llvm_backend.hpp" +struct lbLoopData { + lbAddr idx_addr; + lbValue idx; + lbBlock *body; + lbBlock *done; + lbBlock *loop; +}; -LLVMValueRef lb_zero32(lbModule *m) { +struct lbCompoundLitElemTempData { + Ast * expr; + lbValue value; + i32 elem_index; + lbValue gep; +}; + +lbLoopData lb_loop_start(lbProcedure *p, isize count, Type *index_type=t_i32); +void lb_loop_end(lbProcedure *p, lbLoopData const &data); + +LLVMValueRef llvm_zero32(lbModule *m) { return LLVMConstInt(lb_type(m, t_i32), 0, false); } -LLVMValueRef lb_one32(lbModule *m) { +LLVMValueRef llvm_one32(lbModule *m) { return LLVMConstInt(lb_type(m, t_i32), 1, false); } @@ -69,23 +86,60 @@ void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue value) { return; } GB_ASSERT(value.type != nullptr); - if (is_type_untyped_nil(value.type)) { - Type *t = lb_addr_type(addr); - value.type = t; - value.value = LLVMConstNull(lb_type(p->module, t)); - } else if (is_type_untyped_undef(value.type)) { + if (is_type_untyped_undef(value.type)) { Type *t = lb_addr_type(addr); value.type = t; value.value = LLVMGetUndef(lb_type(p->module, t)); + } else if (is_type_untyped_nil(value.type)) { + Type *t = lb_addr_type(addr); + value.type = t; + value.value = LLVMConstNull(lb_type(p->module, t)); + } + + + if (addr.kind == lbAddr_Map) { + GB_PANIC("lbAddr_Map"); + } else if (addr.kind == lbAddr_BitField) { + GB_PANIC("lbAddr_BitField"); + } else if (addr.kind == lbAddr_Context) { + lbValue old = lb_addr_load(p, lb_find_or_generate_context_ptr(p)); + lbAddr next_addr = lb_add_local_generated(p, t_context, true); + lb_addr_store(p, next_addr, old); + lb_push_context_onto_stack(p, next_addr); + lbValue next = lb_addr_get_ptr(p, next_addr); + + if (addr.ctx.sel.index.count > 0) { + lbValue lhs = lb_emit_deep_field_gep(p, next, addr.ctx.sel); + lbValue rhs = lb_emit_conv(p, value, type_deref(lhs.type)); + lb_emit_store(p, lhs, rhs); + } else { + lbValue lhs = next; + lbValue rhs = lb_emit_conv(p, value, lb_addr_type(addr)); + lb_emit_store(p, lhs, rhs); + } + + return; + } else if (addr.kind == lbAddr_SoaVariable) { + GB_PANIC("lbAddr_SoaVariable"); } GB_ASSERT(value.value != nullptr); + value = lb_emit_conv(p, value, lb_addr_type(addr)); + LLVMBuildStore(p->builder, value.value, addr.addr.value); } void lb_emit_store(lbProcedure *p, lbValue ptr, lbValue value) { GB_ASSERT(value.value != nullptr); + Type *a = type_deref(ptr.type); + if (is_type_boolean(a)) { + // NOTE(bill): There are multiple sized booleans, thus force a conversion (if necessarily) + value = lb_emit_conv(p, value, a); + } + + GB_ASSERT(are_types_identical(a, value.type)); + LLVMValueRef v = LLVMBuildStore(p->builder, value.value, ptr.value); } @@ -99,6 +153,52 @@ lbValue lb_emit_load(lbProcedure *p, lbValue value) { lbValue lb_addr_load(lbProcedure *p, lbAddr const &addr) { GB_ASSERT(addr.addr.value != nullptr); + + if (addr.kind == lbAddr_Map) { + GB_PANIC("lbAddr_Map"); + } else if (addr.kind == lbAddr_BitField) { + Type *bft = base_type(type_deref(addr.addr.type)); + GB_ASSERT(is_type_bit_field(bft)); + + unsigned value_index = cast(unsigned)addr.bit_field.value_index; + i32 size_in_bits = bft->BitField.fields[value_index]->type->BitFieldValue.bits; + + i32 size_in_bytes = next_pow2((size_in_bits+7)/8); + if (size_in_bytes == 0) { + GB_ASSERT(size_in_bits == 0); + lbValue res = {}; + res.type = t_i32; + res.value = LLVMConstInt(lb_type(p->module, res.type), 0, false); + return res; + } + + Type *int_type = nullptr; + switch (size_in_bytes) { + case 1: int_type = t_u8; break; + case 2: int_type = t_u16; break; + case 4: int_type = t_u32; break; + case 8: int_type = t_u64; break; + case 16: int_type = t_u128; break; + } + GB_ASSERT(int_type != nullptr); + + LLVMValueRef internal_data = LLVMBuildStructGEP(p->builder, addr.addr.value, 1, ""); + LLVMValueRef field_ptr = LLVMBuildStructGEP(p->builder, internal_data, value_index, ""); + LLVMValueRef field = LLVMBuildLoad(p->builder, field_ptr, ""); + + lbValue res = {}; + res.type = int_type; + res.value = LLVMBuildZExtOrBitCast(p->builder, field, lb_type(p->module, int_type), ""); + return res; + } else if (addr.kind == lbAddr_Context) { + if (addr.ctx.sel.index.count > 0) { + lbValue a = addr.addr; + lbValue b = lb_emit_deep_field_gep(p, a, addr.ctx.sel); + return lb_emit_load(p, b); + } + } else if (addr.kind == lbAddr_SoaVariable) { + GB_PANIC("lbAddr_SoaVariable"); + } return lb_emit_load(p, addr.addr); } @@ -130,6 +230,18 @@ LLVMTypeRef lb_alignment_prefix_type_hack(lbModule *m, i64 alignment) { return nullptr; } +bool lb_is_elem_const(Ast *elem, Type *elem_type) { + if (!elem_type_can_be_constant(elem_type)) { + return false; + } + if (elem->kind == Ast_FieldValue) { + elem = elem->FieldValue.value; + } + TypeAndValue tav = type_and_value_of_expr(elem); + GB_ASSERT_MSG(tav.mode != Addressing_Invalid, "%s %s", expr_to_string(elem), type_to_string(tav.type)); + return tav.value.kind != ExactValue_Invalid; +} + String lb_mangle_name(lbModule *m, Entity *e) { gbAllocator a = heap_allocator(); @@ -147,19 +259,19 @@ String lb_mangle_name(lbModule *m, Entity *e) { max_len += 21; } - u8 *new_name = gb_alloc_array(a, u8, max_len); + char *new_name = gb_alloc_array(a, char, max_len); isize new_name_len = gb_snprintf( - cast(char *)new_name, max_len, + new_name, max_len, "%.*s.%.*s", LIT(pkgn), LIT(name) ); if (require_suffix_id) { - char *str = cast(char *)new_name + new_name_len-1; + char *str = new_name + new_name_len-1; isize len = max_len-new_name_len; isize extra = gb_snprintf(str, len, "-%llu", cast(unsigned long long)e->id); new_name_len += extra-1; } - return make_string(new_name, new_name_len-1); + return make_string((u8 *)new_name, new_name_len-1); } String lb_get_entity_name(lbModule *m, Entity *e, String default_name) { @@ -179,9 +291,12 @@ String lb_get_entity_name(lbModule *m, Entity *e, String default_name) { bool is_foreign = e->Variable.is_foreign; bool is_export = e->Variable.is_export; no_name_mangle = e->Variable.link_name.len > 0 || is_foreign || is_export; - } else if (e->kind == Entity_Procedure && e->Procedure.is_export) { - no_name_mangle = true; + if (e->Variable.link_name.len > 0) { + return e->Variable.link_name; + } } else if (e->kind == Entity_Procedure && e->Procedure.link_name.len > 0) { + return e->Procedure.link_name; + } else if (e->kind == Entity_Procedure && e->Procedure.is_export) { no_name_mangle = true; } @@ -542,22 +657,26 @@ LLVMTypeRef lb_type_internal(lbModule *m, Type *type) { extra_param_count += 1; } - unsigned param_count = cast(unsigned)(type->Proc.abi_compat_params.count + extra_param_count); + isize param_count = type->Proc.abi_compat_params.count + extra_param_count; LLVMTypeRef *param_types = gb_alloc_array(heap_allocator(), LLVMTypeRef, param_count); defer (gb_free(heap_allocator(), param_types)); + isize param_index = offset; for_array(i, type->Proc.abi_compat_params) { Type *param = type->Proc.abi_compat_params[i]; - param_types[i+offset] = lb_type(m, param); + if (param == nullptr) { + continue; + } + param_types[param_index++] = lb_type(m, param); } if (type->Proc.return_by_pointer) { param_types[0] = LLVMPointerType(lb_type(m, type->Proc.abi_compat_result_type), 0); } if (type->Proc.calling_convention == ProcCC_Odin) { - param_types[param_count-1] = lb_type(m, t_context_ptr); + param_types[param_index++] = lb_type(m, t_context_ptr); } - LLVMTypeRef t = LLVMFunctionType(return_type, param_types, param_count, type->Proc.c_vararg); + LLVMTypeRef t = LLVMFunctionType(return_type, param_types, cast(unsigned)param_index, type->Proc.c_vararg); return LLVMPointerType(t, 0); } break; @@ -634,6 +753,12 @@ void lb_add_member(lbModule *m, String const &name, lbValue val) { void lb_add_member(lbModule *m, HashKey const &key, lbValue val) { map_set(&m->members, key, val); } +void lb_add_procedure_value(lbModule *m, lbProcedure *p) { + if (p->entity != nullptr) { + map_set(&m->procedure_values, hash_pointer(p->value), p->entity); + } +} + LLVMAttributeRef lb_create_enum_attribute(LLVMContextRef ctx, char const *name, u64 value) { @@ -653,6 +778,8 @@ void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *nam lbProcedure *lb_create_procedure(lbModule *m, Entity *entity) { + GB_ASSERT(entity != nullptr); + lbProcedure *p = gb_alloc_item(heap_allocator(), lbProcedure); p->module = m; @@ -691,6 +818,14 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity) { LLVMTypeRef func_type = LLVMGetElementType(func_ptr_type); p->value = LLVMAddFunction(m->mod, name, func_type); + + lbValue value = {}; + value.type = p->type; + value.value = p->value; + lb_add_entity(m, entity, value); + lb_add_procedure_value(m, p); + + LLVMSetFunctionCallConv(p->value, lb_calling_convention_map[pt->Proc.calling_convention]); lbValue proc_value = {p->value, p->type}; lb_add_entity(m, entity, proc_value); @@ -709,7 +844,7 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity) { isize parameter_index = 0; if (pt->Proc.param_count) { TypeTuple *params = &pt->Proc.params->Tuple; - for (isize i = 0; i < pt->Proc.param_count; i++, parameter_index++) { + for (isize i = 0; i < pt->Proc.param_count; i++) { Entity *e = params->variables[i]; Type *original_type = e->type; Type *abi_type = pt->Proc.abi_compat_params[i]; @@ -725,11 +860,12 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity) { lb_add_proc_attribute_at_index(p, offset+parameter_index+j, "noalias"); } } - parameter_index += abi_type->Tuple.variables.count-1; + parameter_index += abi_type->Tuple.variables.count; } else { if (e->flags&EntityFlag_NoAlias) { lb_add_proc_attribute_at_index(p, offset+parameter_index, "noalias"); } + parameter_index += 1; } } } @@ -740,7 +876,6 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity) { lb_add_proc_attribute_at_index(p, offset+parameter_index, "nocapture"); } - return p; } @@ -841,6 +976,12 @@ lbValue lb_add_param(lbProcedure *p, Entity *e, Ast *expr, Type *abi_type, i32 i } +void lb_start_block(lbProcedure *p, lbBlock *b) { + GB_ASSERT(b != nullptr); + p->curr_block = b; + LLVMPositionBuilderAtEnd(p->builder, b->block); +} + void lb_begin_procedure_body(lbProcedure *p) { DeclInfo *decl = decl_info_of_entity(p->entity); if (decl != nullptr) { @@ -855,9 +996,7 @@ void lb_begin_procedure_body(lbProcedure *p) { p->decl_block = lb_create_block(p, "decls"); p->entry_block = lb_create_block(p, "entry"); - p->curr_block = p->entry_block; - - LLVMPositionBuilderAtEnd(p->builder, p->curr_block->block); + lb_start_block(p, p->entry_block); GB_ASSERT(p->type != nullptr); @@ -899,7 +1038,6 @@ void lb_begin_procedure_body(lbProcedure *p) { Entity *e = params->variables[i]; if (e->kind != Entity_Variable) { - parameter_index += 1; continue; } @@ -920,7 +1058,6 @@ void lb_begin_procedure_body(lbProcedure *p) { for_array(i, params->variables) { Entity *e = params->variables[i]; if (e->kind != Entity_Variable) { - parameter_index += 1; continue; } Type *abi_type = e->type; @@ -992,6 +1129,8 @@ void lb_begin_procedure_body(lbProcedure *p) { lbContextData ctx = {ctx_addr, p->scope_index}; array_add(&p->context_stack, ctx); } + + lb_start_block(p, p->entry_block); } void lb_end_procedure_body(lbProcedure *p) { @@ -1036,15 +1175,15 @@ lbBlock *lb_create_block(lbProcedure *p, char const *name) { return b; } -void lb_start_block(lbProcedure *p, lbBlock *b) { - p->curr_block = b; - LLVMPositionBuilderAtEnd(p->builder, b->block); -} - void lb_emit_jump(lbProcedure *p, lbBlock *target_block) { if (p->curr_block == nullptr) { return; } + LLVMValueRef last_instr = LLVMGetLastInstruction(p->curr_block->block); + if (last_instr != nullptr && LLVMIsATerminatorInst(last_instr)) { + return; + } + lb_add_edge(p->curr_block, target_block); LLVMBuildBr(p->builder, target_block->block); p->curr_block = nullptr; @@ -1055,6 +1194,11 @@ void lb_emit_if(lbProcedure *p, lbValue cond, lbBlock *true_block, lbBlock *fals if (b == nullptr) { return; } + LLVMValueRef last_instr = LLVMGetLastInstruction(p->curr_block->block); + if (last_instr != nullptr && LLVMIsATerminatorInst(last_instr)) { + return; + } + lb_add_edge(b, true_block); lb_add_edge(b, false_block); LLVMBuildCondBr(p->builder, cond.value, true_block->block, false_block->block); @@ -1099,18 +1243,23 @@ lbValue lb_build_cond(lbProcedure *p, Ast *cond, lbBlock *true_block, lbBlock *f lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e, bool zero_init, i32 param_index) { + GB_ASSERT(p->decl_block != p->curr_block); LLVMPositionBuilderAtEnd(p->builder, p->decl_block->block); - LLVMTypeRef llvm_type = lb_type(p->module, type); - LLVMValueRef ptr = LLVMBuildAlloca(p->builder, llvm_type, ""); - LLVMSetAlignment(ptr, 16); + char const *name = ""; + if (e != nullptr) { + name = alloc_cstring(heap_allocator(), e->token.string); + } + LLVMTypeRef llvm_type = lb_type(p->module, type); + LLVMValueRef ptr = LLVMBuildAlloca(p->builder, llvm_type, name); + LLVMSetAlignment(ptr, 16); // TODO(bill): Make this configurable + + LLVMPositionBuilderAtEnd(p->builder, p->curr_block->block); if (zero_init) { LLVMBuildStore(p->builder, LLVMConstNull(lb_type(p->module, type)), ptr); } - LLVMPositionBuilderAtEnd(p->builder, p->curr_block->block); - lbValue val = {}; val.value = ptr; val.type = alloc_type_pointer(type); @@ -1127,12 +1276,164 @@ lbAddr lb_add_local_generated(lbProcedure *p, Type *type, bool zero_init) { } +void lb_build_nested_proc(lbProcedure *p, AstProcLit *pd, Entity *e) { + GB_ASSERT(pd->body != nullptr); + lbModule *m = p->module; + auto *min_dep_set = &m->info->minimum_dependency_set; + + if (ptr_set_exists(min_dep_set, e) == false) { + // NOTE(bill): Nothing depends upon it so doesn't need to be built + return; + } + + // NOTE(bill): Generate a new name + // parent.name-guid + String original_name = e->token.string; + String pd_name = original_name; + if (e->Procedure.link_name.len > 0) { + pd_name = e->Procedure.link_name; + } + + isize name_len = p->name.len + 1 + pd_name.len + 1 + 10 + 1; + char *name_text = gb_alloc_array(heap_allocator(), char, name_len); + + i32 guid = cast(i32)p->children.count; + name_len = gb_snprintf(name_text, name_len, "%.*s.%.*s-%d", LIT(p->name), LIT(pd_name), guid); + String name = make_string(cast(u8 *)name_text, name_len-1); + + set_procedure_abi_types(heap_allocator(), e->type); + + + e->Procedure.link_name = name; + + lbProcedure *nested_proc = lb_create_procedure(p->module, e); + + lbValue value = {}; + value.value = nested_proc->value; + value.type = nested_proc->type; + + lb_add_entity(m, e, value); + array_add(&p->children, nested_proc); + array_add(&m->procedures_to_generate, nested_proc); +} + +void lb_build_constant_value_decl(lbProcedure *p, AstValueDecl *vd) { + if (vd == nullptr || vd->is_mutable) { + return; + } + + auto *min_dep_set = &p->module->info->minimum_dependency_set; + + + for_array(i, vd->names) { + Ast *ident = vd->names[i]; + GB_ASSERT(ident->kind == Ast_Ident); + Entity *e = entity_of_ident(ident); + GB_ASSERT(e != nullptr); + switch (e->kind) { + case Entity_TypeName: + case Entity_Procedure: + break; + default: + continue; + } + + if (e->kind == Entity_TypeName) { + bool polymorphic_struct = false; + if (e->type != nullptr && e->kind == Entity_TypeName) { + Type *bt = base_type(e->type); + if (bt->kind == Type_Struct) { + polymorphic_struct = bt->Struct.is_polymorphic; + } + } + + if (!polymorphic_struct && !ptr_set_exists(min_dep_set, e)) { + continue; + } + + // NOTE(bill): Generate a new name + // parent_proc.name-guid + String ts_name = e->token.string; + + lbModule *m = p->module; + isize name_len = p->name.len + 1 + ts_name.len + 1 + 10 + 1; + char *name_text = gb_alloc_array(heap_allocator(), char, name_len); + i32 guid = cast(i32)m->members.entries.count; + name_len = gb_snprintf(name_text, name_len, "%.*s.%.*s-%d", LIT(p->name), LIT(ts_name), guid); + + String name = make_string(cast(u8 *)name_text, name_len-1); + e->TypeName.ir_mangled_name = name; + + // irValue *value = ir_value_type_name(name, e->type); + // ir_add_entity_name(m, e, name); + // ir_gen_global_type_name(m, e, name); + } else if (e->kind == Entity_Procedure) { + CheckerInfo *info = p->module->info; + DeclInfo *decl = decl_info_of_entity(e); + ast_node(pl, ProcLit, decl->proc_lit); + if (pl->body != nullptr) { + auto *found = map_get(&info->gen_procs, hash_pointer(ident)); + if (found) { + auto procs = *found; + for_array(i, procs) { + Entity *e = procs[i]; + if (!ptr_set_exists(min_dep_set, e)) { + continue; + } + DeclInfo *d = decl_info_of_entity(e); + lb_build_nested_proc(p, &d->proc_lit->ProcLit, e); + } + } else { + lb_build_nested_proc(p, pl, e); + } + } else { + + // FFI - Foreign function interace + String original_name = e->token.string; + String name = original_name; + + if (e->Procedure.is_foreign) { + // lb_add_foreign_library_path(proc->module, e->Procedure.foreign_library); + } + + if (e->Procedure.link_name.len > 0) { + name = e->Procedure.link_name; + } + + HashKey key = hash_string(name); + lbValue *prev_value = map_get(&p->module->members, key); + if (prev_value != nullptr) { + // NOTE(bill): Don't do mutliple declarations in the IR + return; + } + + set_procedure_abi_types(heap_allocator(), e->type); + e->Procedure.link_name = name; + + lbProcedure *nested_proc = lb_create_procedure(p->module, e); + + lbValue value = {}; + value.value = nested_proc->value; + value.type = nested_proc->type; + + array_add(&p->module->procedures_to_generate, nested_proc); + if (p != nullptr) { + array_add(&p->children, nested_proc); + } else { + map_set(&p->module->members, hash_string(name), value); + } + } + } + } +} + + void lb_build_stmt_list(lbProcedure *p, Array const &stmts) { for_array(i, stmts) { Ast *stmt = stmts[i]; switch (stmt->kind) { case_ast_node(vd, ValueDecl, stmt); - // lb_build_constant_value_decl(b, vd); + lb_build_constant_value_decl(p, vd); case_end; case_ast_node(fb, ForeignBlockDecl, stmt); ast_node(block, BlockStmt, fb->body); @@ -1145,15 +1446,6 @@ void lb_build_stmt_list(lbProcedure *p, Array const &stmts) { } } -lbValue lb_build_gep(lbProcedure *p, lbValue const &value, i32 index) { - Type *elem_type = nullptr; - - - GB_ASSERT(elem_type != nullptr); - return lbValue{LLVMBuildStructGEP2(p->builder, lb_type(p->module, elem_type), value.value, index, ""), elem_type}; -} - - lbBranchBlocks lb_lookup_branch_blocks(lbProcedure *p, Ast *ident) { GB_ASSERT(ident->kind == Ast_Ident); Entity *e = entity_of_ident(ident); @@ -1342,6 +1634,8 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { LLVMValueRef global = LLVMAddGlobal(p->module->mod, lb_type(p->module, e->type), c_name); if (value.value != nullptr) { LLVMSetInitializer(global, value.value); + } else { + LLVMSetInitializer(global, LLVMConstNull(lb_type(p->module, e->type))); } if (e->Variable.thread_local_model != "") { LLVMSetThreadLocal(global, true); @@ -1373,37 +1667,48 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { } - - - auto addrs = array_make(heap_allocator(), vd->names.count); - auto values = array_make(heap_allocator(), 0, vd->names.count); - defer (array_free(&addrs)); - defer (array_free(&values)); - - for_array(i, vd->names) { - Ast *name = vd->names[i]; - if (!is_blank_ident(name)) { - Entity *e = entity_of_ident(name); - lbAddr local = lb_add_local(p, e->type, e); - addrs[i] = local; - if (vd->values.count == 0) { - lb_addr_store(p, addrs[i], lb_const_nil(p->module, lb_addr_type(addrs[i]))); + if (vd->values.count == 0) { // declared and zero-initialized + for_array(i, vd->names) { + Ast *name = vd->names[i]; + if (!is_blank_ident(name)) { + Entity *e = entity_of_ident(name); + lb_add_local(p, e->type, e, true); } } - } - - for_array(i, vd->values) { - Ast *expr = vd->values[i]; - lbValue value = lb_build_expr(p, expr); - GB_ASSERT_MSG(value.type != nullptr, "%s", expr_to_string(expr)); - if (is_type_tuple(value.type)) { + } else { // Tuple(s) + auto lvals = array_make(heap_allocator(), 0, vd->names.count); + auto inits = array_make(heap_allocator(), 0, vd->names.count); + for_array(i, vd->names) { + Ast *name = vd->names[i]; + lbAddr lval = {}; + if (!is_blank_ident(name)) { + Entity *e = entity_of_ident(name); + lval = lb_add_local(p, e->type, e, false); + } + array_add(&lvals, lval); } - array_add(&values, value); - } - for_array(i, values) { - lb_addr_store(p, addrs[i], values[i]); + for_array(i, vd->values) { + lbValue init = lb_build_expr(p, vd->values[i]); + Type *t = init.type; + if (t->kind == Type_Tuple) { + for_array(i, t->Tuple.variables) { + Entity *e = t->Tuple.variables[i]; + lbValue v = lb_emit_struct_ev(p, init, cast(i32)i); + array_add(&inits, v); + } + } else { + array_add(&inits, init); + } + } + + + for_array(i, inits) { + lbAddr lval = lvals[i]; + lbValue init = inits[i]; + lb_addr_store(p, lval, init); + } } case_end; @@ -1422,6 +1727,7 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { if (as->lhs.count == as->rhs.count) { if (as->lhs.count == 1) { + lbAddr lval = lvals[0]; Ast *rhs = as->rhs[0]; lbValue init = lb_build_expr(p, rhs); lb_addr_store(p, lvals[0], init); @@ -1434,8 +1740,9 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { } for_array(i, inits) { - auto lval = lvals[i]; - lb_addr_store(p, lval, inits[i]); + lbAddr lval = lvals[i]; + lbValue init = inits[i]; + lb_addr_store(p, lval, init); } } } else { @@ -1457,25 +1764,29 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { } for_array(i, inits) { - lb_addr_store(p, lvals[i], inits[i]); + lbAddr lval = lvals[i]; + lbValue init = inits[i]; + lb_addr_store(p, lval, init); } } } else { - // // NOTE(bill): Only 1 += 1 is allowed, no tuples - // // +=, -=, etc - // i32 op = cast(i32)as->op.kind; - // op += Token_Add - Token_AddEq; // Convert += to + - // if (op == Token_CmpAnd || op == Token_CmpOr) { - // Type *type = as->lhs[0]->tav.type; - // lbValue new_value = lb_emit_logical_binary_expr(p, cast(TokenKind)op, as->lhs[0], as->rhs[0], type); + // NOTE(bill): Only 1 += 1 is allowed, no tuples + // +=, -=, etc + i32 op = cast(i32)as->op.kind; + op += Token_Add - Token_AddEq; // Convert += to + + if (op == Token_CmpAnd || op == Token_CmpOr) { + // TODO(bill): assign op + // Type *type = as->lhs[0]->tav.type; + // lbValue new_value = lb_emit_logical_binary_expr(p, cast(TokenKind)op, as->lhs[0], as->rhs[0], type); - // lbAddr lhs = lb_build_addr(p, as->lhs[0]); - // lb_addr_store(p, lhs, new_value); - // } else { - // lbAddr lhs = lb_build_addr(p, as->lhs[0]); - // lbValue value = lb_build_expr(p, as->rhs[0]); - // ir_build_assign_op(p, lhs, value, cast(TokenKind)op); - // } + // lbAddr lhs = lb_build_addr(p, as->lhs[0]); + // lb_addr_store(p, lhs, new_value); + } else { + // TODO(bill): Assign op + // lbAddr lhs = lb_build_addr(p, as->lhs[0]); + // lbValue value = lb_build_expr(p, as->rhs[0]); + // lb_build_assign_op(p, lhs, value, cast(TokenKind)op); + } return; } case_end; @@ -1544,9 +1855,9 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { res = lb_add_local_generated(p, ret_type, false).addr; for_array(i, results) { Entity *e = tuple->variables[i]; - lbValue res = lb_emit_conv(p, results[i], e->type); lbValue field = lb_emit_struct_ep(p, res, cast(i32)i); - lb_emit_store(p, field, res); + lbValue val = lb_emit_conv(p, results[i], e->type); + lb_emit_store(p, field, val); } res = lb_emit_load(p, res); @@ -1561,6 +1872,10 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { LLVMBuildRetVoid(p->builder); } else { GB_ASSERT_MSG(res.value != nullptr, "%.*s", LIT(p->name)); + Type *abi_rt = p->type->Proc.abi_compat_result_type; + if (!are_types_identical(res.type, abi_rt)) { + res = lb_emit_transmute(p, res, abi_rt); + } LLVMBuildRet(p->builder, res.value); } case_end; @@ -1669,6 +1984,9 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { case_end; case_ast_node(ss, SwitchStmt, node); + if (true) { + return; + } if (ss->init != nullptr) { lb_build_stmt(p, ss->init); } @@ -1751,6 +2069,7 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { lb_emit_if(p, cond, body, next_cond); lb_start_block(p, next_cond); } + lb_emit_jump(p, body); lb_start_block(p, body); lb_push_target_list(p, ss->label, done, nullptr, fall); @@ -1814,6 +2133,14 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { } } +lbValue lb_emit_select(lbProcedure *p, lbValue cond, lbValue x, lbValue y) { + cond = lb_emit_conv(p, cond, t_llvm_bool); + lbValue res = {}; + res.value = LLVMBuildSelect(p->builder, cond.value, x.value, y.value, ""); + res.type = x.type; + return res; +} + lbValue lb_const_nil(lbModule *m, Type *type) { LLVMValueRef v = LLVMConstNull(lb_type(m, type)); return lbValue{v, type}; @@ -1845,6 +2172,51 @@ LLVMValueRef lb_const_f32(lbModule *m, f32 f, Type *type=t_f32) { return LLVMConstBitCast(i, lb_type(m, type)); } +lbValue lb_emit_min(lbProcedure *p, Type *t, lbValue x, lbValue y) { + x = lb_emit_conv(p, x, t); + y = lb_emit_conv(p, y, t); + + if (is_type_float(t)) { + gbAllocator a = heap_allocator(); + i64 sz = 8*type_size_of(t); + auto args = array_make(heap_allocator(), 2); + args[0] = x; + args[1] = y; + switch (sz) { + case 32: return lb_emit_runtime_call(p, "min_f32", args); + case 64: return lb_emit_runtime_call(p, "min_f64", args); + } + GB_PANIC("Unknown float type"); + } + return lb_emit_select(p, lb_emit_comp(p, Token_Lt, x, y), x, y); +} +lbValue lb_emit_max(lbProcedure *p, Type *t, lbValue x, lbValue y) { + x = lb_emit_conv(p, x, t); + y = lb_emit_conv(p, y, t); + + if (is_type_float(t)) { + gbAllocator a = heap_allocator(); + i64 sz = 8*type_size_of(t); + auto args = array_make(heap_allocator(), 2); + args[0] = x; + args[1] = y; + switch (sz) { + case 32: return lb_emit_runtime_call(p, "max_f32", args); + case 64: return lb_emit_runtime_call(p, "max_f64", args); + } + GB_PANIC("Unknown float type"); + } + return lb_emit_select(p, lb_emit_comp(p, Token_Gt, x, y), x, y); +} + + +lbValue lb_emit_clamp(lbProcedure *p, Type *t, lbValue x, lbValue min, lbValue max) { + lbValue z = {}; + z = lb_emit_max(p, t, x, min); + z = lb_emit_min(p, t, z, max); + return z; +} + @@ -1882,7 +2254,7 @@ isize lb_type_info_index(CheckerInfo *info, Type *type, bool err_on_not_found=tr } } if (err_on_not_found) { - GB_PANIC("NOT FOUND ir_type_info_index %s @ index %td", type_to_string(type), index); + GB_PANIC("NOT FOUND lb_type_info_index %s @ index %td", type_to_string(type), index); } return -1; } @@ -1956,16 +2328,29 @@ lbValue lb_typeid(lbModule *m, Type *type, Type *typeid_type) { return res; } +lbValue lb_type_info(lbModule *m, Type *type) { + GB_PANIC("TODO(bill): lb_type_info"); + return {}; +} + + lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { LLVMContextRef ctx = m->ctx; + type = default_type(type); Type *original_type = type; lbValue res = {}; - res.type = type; + res.type = original_type; type = core_type(type); value = convert_exact_value_for_type(value, type); + if (value.kind == ExactValue_Typeid) { + return lb_typeid(m, value.value_typeid, original_type); + } + + // GB_ASSERT_MSG(is_type_typed(type), "%s", type_to_string(type)); + if (is_type_slice(type)) { if (value.kind == ExactValue_String) { GB_ASSERT(is_type_u8_slice(type)); @@ -1985,14 +2370,14 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { isize max_len = 7+8+1; - u8 *str = cast(u8 *)gb_alloc_array(heap_allocator(), u8, max_len); - isize len = gb_snprintf(cast(char *)str, max_len, "csba$%x", m->global_array_index); + char *str = gb_alloc_array(heap_allocator(), char, max_len); + isize len = gb_snprintf(str, max_len, "csba$%x", m->global_array_index); m->global_array_index++; - String name = make_string(str, len-1); + String name = make_string(cast(u8 *)str, len-1); Entity *e = alloc_entity_constant(nullptr, make_token_ident(name), t, value); - LLVMValueRef global_data = LLVMAddGlobal(m->mod, lb_type(m, t), cast(char const *)str); + LLVMValueRef global_data = LLVMAddGlobal(m->mod, lb_type(m, t), str); LLVMSetInitializer(global_data, backing_array.value); lbValue g = {}; @@ -2003,7 +2388,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { lb_add_member(m, name, g); { - LLVMValueRef indices[2] = {lb_zero32(m), lb_zero32(m)}; + LLVMValueRef indices[2] = {llvm_zero32(m), llvm_zero32(m)}; LLVMValueRef ptr = LLVMConstInBoundsGEP(global_data, indices, 2); LLVMValueRef len = LLVMConstInt(lb_type(m, t_int), count, true); LLVMValueRef values[2] = {ptr, len}; @@ -2053,10 +2438,11 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { lbValue *found = map_get(&m->const_strings, key); if (found != nullptr) { res.value = found->value; + res.type = default_type(original_type); return res; } - LLVMValueRef indices[2] = {lb_zero32(m), lb_zero32(m)}; + LLVMValueRef indices[2] = {llvm_zero32(m), llvm_zero32(m)}; LLVMValueRef data = LLVMConstStringInContext(ctx, cast(char const *)value.value_string.text, cast(unsigned)value.value_string.len, @@ -2083,6 +2469,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value) { LLVMValueRef values[2] = {ptr, str_len}; res.value = LLVMConstNamedStruct(lb_type(m, original_type), values, 2); + res.type = default_type(original_type); map_set(&m->const_strings, key, res); @@ -2500,10 +2887,109 @@ lbValue lb_emit_source_code_location(lbProcedure *p, String const &procedure, To return res; } +lbValue lb_emit_unary_arith(lbProcedure *p, TokenKind op, lbValue x, Type *type) { + switch (op) { + case Token_Add: + return x; + case Token_Not: // Boolean not + case Token_Xor: // Bitwise not + case Token_Sub: // Number negation + break; + case Token_Pointer: + GB_PANIC("This should be handled elsewhere"); + break; + } + + if (is_type_array(x.type)) { + // IMPORTANT TODO(bill): This is very wasteful with regards to stack memory + Type *tl = base_type(x.type); + lbValue val = lb_address_from_load_or_generate_local(p, x); + GB_ASSERT(is_type_array(type)); + Type *elem_type = base_array_type(type); + + // NOTE(bill): Doesn't need to be zero because it will be initialized in the loops + lbAddr res_addr = lb_add_local_generated(p, type, false); + lbValue res = lb_addr_get_ptr(p, res_addr); + + bool inline_array_arith = type_size_of(type) <= build_context.max_align; + + i32 count = cast(i32)tl->Array.count; + + if (inline_array_arith) { + // inline + for (i32 i = 0; i < count; i++) { + lbValue e = lb_emit_load(p, lb_emit_array_epi(p, val, i)); + lbValue z = lb_emit_unary_arith(p, op, e, elem_type); + lb_emit_store(p, lb_emit_array_epi(p, res, i), z); + } + } else { + auto loop_data = lb_loop_start(p, count, t_i32); + + lbValue e = lb_emit_load(p, lb_emit_array_ep(p, val, loop_data.idx)); + lbValue z = lb_emit_unary_arith(p, op, e, elem_type); + lb_emit_store(p, lb_emit_array_ep(p, res, loop_data.idx), z); + + lb_loop_end(p, loop_data); + } + return lb_emit_load(p, res); + + } + + if (op == Token_Not) { + lbValue cmp = {}; + cmp.value = LLVMBuildNot(p->builder, x.value, ""); + cmp.type = x.type; + return lb_emit_conv(p, cmp, type); + } + + if (op == Token_Sub && is_type_integer(type) && is_type_different_to_arch_endianness(type)) { + Type *platform_type = integer_endian_type_to_platform_type(type); + lbValue v = lb_emit_byte_swap(p, x, platform_type); + + lbValue res = {}; + res.value = LLVMBuildNeg(p->builder, v.value, ""); + res.type = platform_type; + + return lb_emit_byte_swap(p, res, type); + } + + + lbValue res = {}; + + switch (op) { + case Token_Not: // Boolean not + res.value = LLVMBuildNot(p->builder, x.value, ""); + res.type = x.type; + return res; + case Token_Xor: // Bitwise not + res.value = LLVMBuildXor(p->builder, x.value, LLVMConstAllOnes(lb_type(p->module, x.type)), ""); + res.type = x.type; + return res; + case Token_Sub: // Number negation + if (is_type_integer(x.type)) { + res.value = LLVMBuildNeg(p->builder, x.value, ""); + } else if (is_type_float(x.type)) { + res.value = LLVMBuildFNeg(p->builder, x.value, ""); + } else { + GB_PANIC("Unhandled type %s", type_to_string(x.type)); + } + res.type = x.type; + return res; + } + + return res; +} + + lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Type *type) { lbModule *m = p->module; + + lhs = lb_emit_conv(p, lhs, type); + rhs = lb_emit_conv(p, rhs, type); + + lbValue res = {}; res.type = type; @@ -2571,6 +3057,7 @@ lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Ty res.value = LLVMBuildXor(p->builder, lhs.value, rhs.value, ""); return res; case Token_Shl: + rhs = lb_emit_conv(p, rhs, lhs.type); res.value = LLVMBuildShl(p->builder, lhs.value, rhs.value, ""); return res; case Token_Shr: @@ -2578,6 +3065,7 @@ lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Ty res.value = LLVMBuildLShr(p->builder, lhs.value, rhs.value, ""); return res; } + rhs = lb_emit_conv(p, rhs, lhs.type); res.value = LLVMBuildAShr(p->builder, lhs.value, rhs.value, ""); return res; case Token_AndNot: @@ -2650,6 +3138,7 @@ lbValue lb_build_binary_expr(lbProcedure *p, Ast *expr) { lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { lbModule *m = p->module; + t = reduce_tuple_to_single_type(t); Type *src_type = value.type; if (are_types_identical(t, src_type)) { @@ -2674,11 +3163,11 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { lb_addr_store(p, default_value, value); return lb_emit_conv(p, lb_addr_load(p, default_value), t_any); } else if (dst->kind == Type_Basic) { - if (is_type_float(dst)) { - return value; - } else if (is_type_integer(dst)) { - return value; - } + // if (is_type_float(dst)) { + // return value; + // } else if (is_type_integer(dst)) { + // return value; + // } // ExactValue ev = value->Constant.value; // if (is_type_float(dst)) { // ev = exact_value_to_float(ev); @@ -2723,7 +3212,6 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { return res; } -#if 0 // integer -> integer if (is_type_integer(src) && is_type_integer(dst)) { @@ -2734,55 +3222,64 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { if (sz > 1 && is_type_different_to_arch_endianness(src)) { Type *platform_src_type = integer_endian_type_to_platform_type(src); - value = ir_emit_byte_swap(p, value, platform_src_type); + value = lb_emit_byte_swap(p, value, platform_src_type); } - irConvKind kind = irConv_trunc; + LLVMOpcode op = LLVMTrunc; if (dz < sz) { - kind = irConv_trunc; + op = LLVMTrunc; } else if (dz == sz) { // NOTE(bill): In LLVM, all integers are signed and rely upon 2's compliment // NOTE(bill): Copy the value just for type correctness - kind = irConv_bitcast; + op = LLVMBitCast; } else if (dz > sz) { if (is_type_unsigned(src)) { - kind = irConv_zext; // zero extent + op = LLVMZExt; // zero extent } else { - kind = irConv_sext; // sign extent + op = LLVMSExt; // sign extent } } if (dz > 1 && is_type_different_to_arch_endianness(dst)) { Type *platform_dst_type = integer_endian_type_to_platform_type(dst); - lbValue res = ir_emit(p, ir_instr_conv(p, kind, value, src_type, platform_dst_type)); - return ir_emit_byte_swap(p, res, t); + lbValue res = {}; + res.value = LLVMBuildCast(p->builder, op, value.value, lb_type(m, platform_dst_type), ""); + res.type = t; + return lb_emit_byte_swap(p, res, t); } else { - return ir_emit(p, ir_instr_conv(p, kind, value, src_type, t)); + lbValue res = {}; + res.value = LLVMBuildCast(p->builder, op, value.value, lb_type(m, t), ""); + res.type = t; + return res; } } + // boolean -> boolean/integer if (is_type_boolean(src) && (is_type_boolean(dst) || is_type_integer(dst))) { - lbValue b = ir_emit(p, ir_instr_binary_op(p, Token_NotEq, value, v_zero, t_llvm_bool)); - return ir_emit(p, ir_instr_conv(p, irConv_zext, b, t_llvm_bool, t)); + LLVMValueRef b = LLVMBuildICmp(p->builder, LLVMIntNE, value.value, LLVMConstNull(lb_type(m, value.type)), ""); + lbValue res = {}; + res.value = LLVMBuildZExt(p->builder, value.value, lb_type(m, t), ""); + res.type = t; + return res; } if (is_type_cstring(src) && is_type_u8_ptr(dst)) { - return ir_emit_bitcast(p, value, dst); + return lb_emit_transmute(p, value, dst); } if (is_type_u8_ptr(src) && is_type_cstring(dst)) { - return ir_emit_bitcast(p, value, dst); + return lb_emit_transmute(p, value, dst); } if (is_type_cstring(src) && is_type_rawptr(dst)) { - return ir_emit_bitcast(p, value, dst); + return lb_emit_transmute(p, value, dst); } if (is_type_rawptr(src) && is_type_cstring(dst)) { - return ir_emit_bitcast(p, value, dst); + return lb_emit_transmute(p, value, dst); } if (are_types_identical(src, t_cstring) && are_types_identical(dst, t_string)) { lbValue c = lb_emit_conv(p, value, t_cstring); - auto args = array_make(heap_allocator(), 1); + auto args = array_make(heap_allocator(), 1); args[0] = c; lbValue s = lb_emit_runtime_call(p, "cstring_to_string", args); return lb_emit_conv(p, s, dst); @@ -2791,7 +3288,10 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { // integer -> boolean if (is_type_integer(src) && is_type_boolean(dst)) { - return ir_emit_comp(p, Token_NotEq, value, v_zero); + lbValue res = {}; + res.value = LLVMBuildICmp(p->builder, LLVMIntNE, value.value, LLVMConstNull(lb_type(m, value.type)), ""); + res.type = t_llvm_bool; + return lb_emit_conv(p, res, t); } // float -> float @@ -2799,21 +3299,27 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { gbAllocator a = heap_allocator(); i64 sz = type_size_of(src); i64 dz = type_size_of(dst); - irConvKind kind = irConv_fptrunc; + + lbValue res = {}; + res.type = t; + if (dz >= sz) { - kind = irConv_fpext; + res.value = LLVMBuildFPExt(p->builder, value.value, lb_type(m, t), ""); + } else { + res.value = LLVMBuildFPTrunc(p->builder, value.value, lb_type(m, t), ""); } - return ir_emit(p, ir_instr_conv(p, kind, value, src_type, t)); + return res; } +#if 0 if (is_type_complex(src) && is_type_complex(dst)) { Type *ft = base_complex_elem_type(dst); lbValue gen = lb_add_local_generated(p, dst, false); lbValue real = lb_emit_conv(p, ir_emit_struct_ev(p, value, 0), ft); lbValue imag = lb_emit_conv(p, ir_emit_struct_ev(p, value, 1), ft); - ir_emit_store(p, ir_emit_struct_ep(p, gen, 0), real); - ir_emit_store(p, ir_emit_struct_ep(p, gen, 1), imag); - return ir_emit_load(p, gen); + lb_emit_store(p, ir_emit_struct_ep(p, gen, 0), real); + lb_emit_store(p, ir_emit_struct_ep(p, gen, 1), imag); + return lb_emit_load(p, gen); } if (is_type_quaternion(src) && is_type_quaternion(dst)) { @@ -2824,27 +3330,27 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { lbValue q1 = lb_emit_conv(p, ir_emit_struct_ev(p, value, 1), ft); lbValue q2 = lb_emit_conv(p, ir_emit_struct_ev(p, value, 2), ft); lbValue q3 = lb_emit_conv(p, ir_emit_struct_ev(p, value, 3), ft); - ir_emit_store(p, ir_emit_struct_ep(p, gen, 0), q0); - ir_emit_store(p, ir_emit_struct_ep(p, gen, 1), q1); - ir_emit_store(p, ir_emit_struct_ep(p, gen, 2), q2); - ir_emit_store(p, ir_emit_struct_ep(p, gen, 3), q3); - return ir_emit_load(p, gen); + lb_emit_store(p, ir_emit_struct_ep(p, gen, 0), q0); + lb_emit_store(p, ir_emit_struct_ep(p, gen, 1), q1); + lb_emit_store(p, ir_emit_struct_ep(p, gen, 2), q2); + lb_emit_store(p, ir_emit_struct_ep(p, gen, 3), q3); + return lb_emit_load(p, gen); } if (is_type_float(src) && is_type_complex(dst)) { Type *ft = base_complex_elem_type(dst); lbValue gen = lb_add_local_generated(p, dst, true); lbValue real = lb_emit_conv(p, value, ft); - ir_emit_store(p, ir_emit_struct_ep(p, gen, 0), real); - return ir_emit_load(p, gen); + lb_emit_store(p, ir_emit_struct_ep(p, gen, 0), real); + return lb_emit_load(p, gen); } if (is_type_float(src) && is_type_quaternion(dst)) { Type *ft = base_complex_elem_type(dst); lbValue gen = lb_add_local_generated(p, dst, true); lbValue real = lb_emit_conv(p, value, ft); // @QuaternionLayout - ir_emit_store(p, ir_emit_struct_ep(p, gen, 3), real); - return ir_emit_load(p, gen); + lb_emit_store(p, ir_emit_struct_ep(p, gen, 3), real); + return lb_emit_load(p, gen); } if (is_type_complex(src) && is_type_quaternion(dst)) { Type *ft = base_complex_elem_type(dst); @@ -2852,46 +3358,57 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { lbValue real = lb_emit_conv(p, ir_emit_struct_ev(p, value, 0), ft); lbValue imag = lb_emit_conv(p, ir_emit_struct_ev(p, value, 1), ft); // @QuaternionLayout - ir_emit_store(p, ir_emit_struct_ep(p, gen, 3), real); - ir_emit_store(p, ir_emit_struct_ep(p, gen, 0), imag); - return ir_emit_load(p, gen); + lb_emit_store(p, ir_emit_struct_ep(p, gen, 3), real); + lb_emit_store(p, ir_emit_struct_ep(p, gen, 0), imag); + return lb_emit_load(p, gen); } - - +#endif // float <-> integer if (is_type_float(src) && is_type_integer(dst)) { - irConvKind kind = irConv_fptosi; + lbValue res = {}; + res.type = t; if (is_type_unsigned(dst)) { - kind = irConv_fptoui; + res.value = LLVMBuildFPToUI(p->builder, value.value, lb_type(m, t), ""); + } else { + res.value = LLVMBuildFPToSI(p->builder, value.value, lb_type(m, t), ""); } - return ir_emit(p, ir_instr_conv(p, kind, value, src_type, t)); + return res; } if (is_type_integer(src) && is_type_float(dst)) { - irConvKind kind = irConv_sitofp; + lbValue res = {}; + res.type = t; if (is_type_unsigned(src)) { - kind = irConv_uitofp; + res.value = LLVMBuildUIToFP(p->builder, value.value, lb_type(m, t), ""); + } else { + res.value = LLVMBuildSIToFP(p->builder, value.value, lb_type(m, t), ""); } - return ir_emit(p, ir_instr_conv(p, kind, value, src_type, t)); + return res; } // Pointer <-> uintptr if (is_type_pointer(src) && is_type_uintptr(dst)) { - return ir_emit_ptr_to_uintptr(p, value, t); + lbValue res = {}; + res.type = t; + res.value = LLVMBuildPtrToInt(p->builder, value.value, lb_type(m, t), ""); + return res; } if (is_type_uintptr(src) && is_type_pointer(dst)) { - return ir_emit_uintptr_to_ptr(p, value, t); + lbValue res = {}; + res.type = t; + res.value = LLVMBuildIntToPtr(p->builder, value.value, lb_type(m, t), ""); + return res; } +#if 0 if (is_type_union(dst)) { for_array(i, dst->Union.variants) { Type *vt = dst->Union.variants[i]; if (are_types_identical(vt, src_type)) { - ir_emit_comment(p, str_lit("union - child to parent")); gbAllocator a = heap_allocator(); lbValue parent = lb_add_local_generated(p, t, true); - ir_emit_store_union_variant(p, parent, value, vt); - return ir_emit_load(p, parent); + lb_emit_store_union_variant(p, parent, value, vt); + return lb_emit_load(p, parent); } } } @@ -2920,17 +3437,17 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { lbValue res = lb_emit_deep_field_gep(p, value, sel); Type *rt = ir_type(res); if (!are_types_identical(rt, dt) && are_types_identical(type_deref(rt), dt)) { - res = ir_emit_load(p, res); + res = lb_emit_load(p, res); } return res; } else { if (is_type_pointer(ir_type(value))) { Type *rt = ir_type(value); if (!are_types_identical(rt, dt) && are_types_identical(type_deref(rt), dt)) { - value = ir_emit_load(p, value); + value = lb_emit_load(p, value); } else { value = lb_emit_deep_field_gep(p, value, sel); - return ir_emit_load(p, value); + return lb_emit_load(p, value); } } @@ -2942,31 +3459,45 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { } } } +#endif // Pointer <-> Pointer if (is_type_pointer(src) && is_type_pointer(dst)) { - return ir_emit_bitcast(p, value, t); + lbValue res = {}; + res.type = t; + res.value = LLVMBuildBitCast(p->builder, value.value, lb_type(m, t), ""); + return res; } // proc <-> proc - if (is_type_p(src) && is_type_p(dst)) { - return ir_emit_bitcast(p, value, t); + if (is_type_proc(src) && is_type_proc(dst)) { + lbValue res = {}; + res.type = t; + res.value = LLVMBuildBitCast(p->builder, value.value, lb_type(m, t), ""); + return res; } // pointer -> proc - if (is_type_pointer(src) && is_type_p(dst)) { - return ir_emit_bitcast(p, value, t); + if (is_type_pointer(src) && is_type_proc(dst)) { + lbValue res = {}; + res.type = t; + res.value = LLVMBuildBitCast(p->builder, value.value, lb_type(m, t), ""); + return res; } // proc -> pointer - if (is_type_p(src) && is_type_pointer(dst)) { - return ir_emit_bitcast(p, value, t); + if (is_type_proc(src) && is_type_pointer(dst)) { + lbValue res = {}; + res.type = t; + res.value = LLVMBuildBitCast(p->builder, value.value, lb_type(m, t), ""); + return res; } +#if 0 // []byte/[]u8 <-> string if (is_type_u8_slice(src) && is_type_string(dst)) { @@ -2977,11 +3508,11 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { if (is_type_string(src) && is_type_u8_slice(dst)) { lbValue elem = ir_string_elem(p, value); lbValue elem_ptr = lb_add_local_generated(p, ir_type(elem), false); - ir_emit_store(p, elem_ptr, elem); + lb_emit_store(p, elem_ptr, elem); lbValue len = ir_string_len(p, value); lbValue slice = ir_add_local_slice(p, t, elem_ptr, v_zero, len); - return ir_emit_load(p, slice); + return lb_emit_load(p, slice); } if (is_type_array(dst)) { @@ -2993,16 +3524,16 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { for (i32 i = 0; i < index_count; i++) { lbValue elem = ir_emit_array_epi(p, v, i); - ir_emit_store(p, elem, e); + lb_emit_store(p, elem, e); } - return ir_emit_load(p, v); + return lb_emit_load(p, v); } if (is_type_any(dst)) { lbValue result = lb_add_local_generated(p, t_any, true); if (is_type_untyped_nil(src)) { - return ir_emit_load(p, result); + return lb_emit_load(p, result); } Type *st = default_type(src_type); @@ -3013,26 +3544,29 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { data = lb_emit_conv(p, data, t_rawptr); - lbValue id = ir_typeid(p->module, st); + lbValue id = lb_typeid(p->module, st); - ir_emit_store(p, ir_emit_struct_ep(p, result, 0), data); - ir_emit_store(p, ir_emit_struct_ep(p, result, 1), id); + lb_emit_store(p, ir_emit_struct_ep(p, result, 0), data); + lb_emit_store(p, ir_emit_struct_ep(p, result, 1), id); - return ir_emit_load(p, result); - } - - if (is_type_untyped(src)) { - if (is_type_string(src) && is_type_string(dst)) { - lbValue result = lb_add_local_generated(p, t, false); - ir_emit_store(p, result, value); - return ir_emit_load(p, result); - } + return lb_emit_load(p, result); } #endif + if (is_type_untyped(src)) { + if (is_type_string(src) && is_type_string(dst)) { + lbAddr result = lb_add_local_generated(p, t, false); + lb_addr_store(p, result, value); + return lb_addr_load(p, result); + } + } + + gb_printf_err("%.*s\n", LIT(p->name)); gb_printf_err("lb_emit_conv: src -> dst\n"); gb_printf_err("Not Identical %s != %s\n", type_to_string(src_type), type_to_string(t)); gb_printf_err("Not Identical %s != %s\n", type_to_string(src), type_to_string(dst)); + gb_printf_err("Not Identical %p != %p\n", src_type, t); + gb_printf_err("Not Identical %p != %p\n", src, dst); GB_PANIC("Invalid type conversion: '%s' to '%s' for procedure '%.*s'", @@ -3042,9 +3576,101 @@ lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t) { return {}; } +bool lb_is_type_aggregate(Type *t) { + t = base_type(t); + switch (t->kind) { + case Type_Basic: + switch (t->Basic.kind) { + case Basic_string: + case Basic_any: + return true; + + // case Basic_complex32: + case Basic_complex64: + case Basic_complex128: + case Basic_quaternion128: + case Basic_quaternion256: + return true; + } + break; + + case Type_Pointer: + return false; + + case Type_Array: + case Type_Slice: + case Type_Struct: + case Type_Union: + case Type_Tuple: + case Type_DynamicArray: + case Type_Map: + case Type_BitField: + case Type_SimdVector: + return true; + + case Type_Named: + return lb_is_type_aggregate(t->Named.base); + } + + return false; +} + lbValue lb_emit_transmute(lbProcedure *p, lbValue value, Type *t) { - // TODO(bill): lb_emit_transmute - return value; + Type *src_type = value.type; + if (are_types_identical(t, src_type)) { + return value; + } + + lbValue res = {}; + res.type = t; + + + Type *src = base_type(src_type); + Type *dst = base_type(t); + + lbModule *m = p->module; + + i64 sz = type_size_of(src); + i64 dz = type_size_of(dst); + + GB_ASSERT_MSG(sz == dz, "Invalid transmute conversion: '%s' to '%s'", type_to_string(src_type), type_to_string(t)); + + // NOTE(bill): Casting between an integer and a pointer cannot be done through a bitcast + if (is_type_uintptr(src) && is_type_pointer(dst)) { + res.value = LLVMBuildIntToPtr(p->builder, value.value, lb_type(m, t), ""); + return res; + } + if (is_type_pointer(src) && is_type_uintptr(dst)) { + res.value = LLVMBuildPtrToInt(p->builder, value.value, lb_type(m, t), ""); + return res; + } + if (is_type_uintptr(src) && is_type_proc(dst)) { + res.value = LLVMBuildIntToPtr(p->builder, value.value, lb_type(m, t), ""); + return res; + } + if (is_type_proc(src) && is_type_uintptr(dst)) { + res.value = LLVMBuildPtrToInt(p->builder, value.value, lb_type(m, t), ""); + return res; + } + + if (is_type_integer(src) && (is_type_pointer(dst) || is_type_cstring(dst))) { + res.value = LLVMBuildIntToPtr(p->builder, value.value, lb_type(m, t), ""); + return res; + } else if ((is_type_pointer(src) || is_type_cstring(src)) && is_type_integer(dst)) { + res.value = LLVMBuildPtrToInt(p->builder, value.value, lb_type(m, t), ""); + return res; + } + + if (lb_is_type_aggregate(src) || lb_is_type_aggregate(dst)) { + lbValue s = lb_address_from_load_or_generate_local(p, value); + lbValue d = lb_emit_transmute(p, s, alloc_type_pointer(t)); + return lb_emit_load(p, d); + } + + + res.value = LLVMBuildBitCast(p->builder, value.value, lb_type(p->module, t), ""); + // GB_PANIC("lb_emit_transmute"); + return res; } @@ -3067,12 +3693,12 @@ lbAddr lb_find_or_generate_context_ptr(lbProcedure *p) { return p->context_stack[p->context_stack.count-1].ctx; } - lbBlock *tmp_block = p->curr_block; - p->curr_block = p->blocks[0]; - - defer (p->curr_block = tmp_block); + // lbBlock *tmp_block = p->curr_block; + // p->curr_block = p->blocks[0]; + // defer (p->curr_block = tmp_block); lbAddr c = lb_add_local_generated(p, t_context, false); + c.kind = lbAddr_Context; lb_push_context_onto_stack(p, c); lb_addr_store(p, c, lb_addr_load(p, p->module->global_default_context)); lb_emit_init_context(p, c.addr); @@ -3247,6 +3873,9 @@ lbValue lb_emit_struct_ev(lbProcedure *p, lbValue s, i32 index) { case Type_Tuple: GB_ASSERT(t->Tuple.variables.count > 0); result_type = t->Tuple.variables[index]->type; + if (t->Tuple.variables.count == 1) { + return s; + } break; case Type_Slice: switch (index) { @@ -3420,6 +4049,41 @@ lbDefer lb_add_defer_node(lbProcedure *p, isize scope_index, Ast *stmt) { return d; } +lbDefer lb_add_defer_proc(lbProcedure *p, isize scope_index, lbValue deferred, Array const &result_as_args) { + lbDefer d = {lbDefer_Proc}; + d.scope_index = p->scope_index; + d.block = p->curr_block; + d.proc.deferred = deferred; + d.proc.result_as_args = result_as_args; + array_add(&p->defer_stmts, d); + return d; +} + + + +Array lb_value_to_array(lbProcedure *p, lbValue value) { + Array array = {}; + Type *t = base_type(value.type); + if (t == nullptr) { + // Do nothing + } else if (is_type_tuple(t)) { + GB_ASSERT(t->kind == Type_Tuple); + auto *rt = &t->Tuple; + if (rt->variables.count > 0) { + array = array_make(heap_allocator(), rt->variables.count); + for_array(i, rt->variables) { + lbValue elem = lb_emit_struct_ev(p, value, cast(i32)i); + array[i] = elem; + } + } + } else { + array = array_make(heap_allocator(), 1); + array[0] = value; + } + return array; +} + + lbValue lb_emit_call_internal(lbProcedure *p, lbValue value, lbValue return_ptr, Array const &processed_args, Type *abi_rt, lbAddr context_ptr, ProcInlining inlining) { unsigned arg_count = cast(unsigned)processed_args.count; @@ -3443,9 +4107,12 @@ lbValue lb_emit_call_internal(lbProcedure *p, lbValue value, lbValue return_ptr, args[arg_index++] = context_ptr.addr.value; } + LLVMBasicBlockRef curr_block = LLVMGetInsertBlock(p->builder); + GB_ASSERT(curr_block != p->decl_block->block); + LLVMValueRef ret = LLVMBuildCall(p->builder, value.value, args, arg_count, "");; lbValue res = {}; - res.value = LLVMBuildCall(p->builder, value.value, args, arg_count, ""); + res.value = ret; res.type = abi_rt; return res; } @@ -3504,7 +4171,7 @@ lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, for (isize i = 0; i < param_count; i++) { Entity *e = pt->Proc.params->Tuple.variables[i]; if (e->kind != Entity_Variable) { - array_add(&processed_args, args[i]); + // array_add(&processed_args, args[i]); continue; } GB_ASSERT(e->flags & EntityFlag_Param); @@ -3549,7 +4216,7 @@ lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, lbValue result = {}; - Type *abi_rt = pt->Proc.abi_compat_result_type; + Type *abi_rt = reduce_tuple_to_single_type(pt->Proc.abi_compat_result_type); Type *rt = reduce_tuple_to_single_type(results); if (pt->Proc.return_by_pointer) { lbValue return_ptr = {}; @@ -3567,39 +4234,39 @@ lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, lb_emit_call_internal(p, value, return_ptr, processed_args, nullptr, context_ptr, inlining); result = lb_emit_load(p, return_ptr); } else { - lb_emit_call_internal(p, value, {}, processed_args, abi_rt, context_ptr, inlining); - if (abi_rt != results) { + result = lb_emit_call_internal(p, value, {}, processed_args, abi_rt, context_ptr, inlining); + if (abi_rt != rt) { result = lb_emit_transmute(p, result, rt); } } - // if (value->kind == irValue_Proc) { - // lbProcedure *the_proc = &value->Proc; - // Entity *e = the_proc->entity; - // if (e != nullptr && entity_has_deferred_procedure(e)) { - // DeferredProcedureKind kind = e->Procedure.deferred_procedure.kind; - // Entity *deferred_entity = e->Procedure.deferred_procedure.entity; - // lbValue *deferred_found = map_get(&p->module->values, hash_entity(deferred_entity)); - // GB_ASSERT(deferred_found != nullptr); - // lbValue deferred = *deferred_found; + Entity **found = map_get(&p->module->procedure_values, hash_pointer(value.value)); + if (found != nullptr) { + Entity *e = *found; + if (e != nullptr && entity_has_deferred_procedure(e)) { + DeferredProcedureKind kind = e->Procedure.deferred_procedure.kind; + Entity *deferred_entity = e->Procedure.deferred_procedure.entity; + lbValue *deferred_found = map_get(&p->module->values, hash_entity(deferred_entity)); + GB_ASSERT(deferred_found != nullptr); + lbValue deferred = *deferred_found; - // auto in_args = args; - // Array result_as_args = {}; - // switch (kind) { - // case DeferredProcedure_none: - // break; - // case DeferredProcedure_in: - // result_as_args = in_args; - // break; - // case DeferredProcedure_out: - // result_as_args = ir_value_to_array(p, result); - // break; - // } + auto in_args = args; + Array result_as_args = {}; + switch (kind) { + case DeferredProcedure_none: + break; + case DeferredProcedure_in: + result_as_args = in_args; + break; + case DeferredProcedure_out: + result_as_args = lb_value_to_array(p, result); + break; + } - // ir_add_defer_proc(p, p->scope_index, deferred, result_as_args); - // } - // } + lb_add_defer_proc(p, p->scope_index, deferred, result_as_args); + } + } return result; } @@ -3611,12 +4278,12 @@ lbValue lb_emit_array_ep(lbProcedure *p, lbValue s, lbValue index) { GB_ASSERT_MSG(is_type_array(st) || is_type_enumerated_array(st), "%s", type_to_string(st)); LLVMValueRef indices[2] = {}; - indices[0] = lb_zero32(p->module); + indices[0] = llvm_zero32(p->module); indices[1] = lb_emit_conv(p, index, t_i32).value; Type *ptr = base_array_type(st); lbValue res = {}; - res.value = LLVMBuildGEP2(p->builder, lb_type(p->module, ptr), s.value, indices, 2, ""); + res.value = LLVMBuildGEP(p->builder, s.value, indices, 2, ""); res.type = alloc_type_pointer(ptr); return res; } @@ -3630,7 +4297,7 @@ lbValue lb_emit_array_epi(lbProcedure *p, lbValue s, i32 index) { GB_ASSERT(0 <= index); Type *ptr = base_array_type(st); lbValue res = {}; - res.value = LLVMBuildStructGEP2(p->builder, lb_type(p->module, st), s.value, index, ""); + res.value = LLVMBuildStructGEP(p->builder, s.value, index, ""); res.type = alloc_type_pointer(ptr); return res; } @@ -3639,13 +4306,648 @@ lbValue lb_emit_ptr_offset(lbProcedure *p, lbValue ptr, lbValue index) { LLVMValueRef indices[1] = {index.value}; lbValue res = {}; res.type = ptr.type; - res.value = LLVMBuildGEP2(p->builder, lb_type(p->module, ptr.type), ptr.value, indices, 1, ""); + res.value = LLVMBuildGEP2(p->builder, lb_type(p->module, type_deref(ptr.type)), ptr.value, indices, 1, ""); return res; } -void lb_fill_slice(lbProcedure *p, lbAddr slice, lbValue base_elem, lbValue len) { +void lb_fill_slice(lbProcedure *p, lbAddr const &slice, lbValue base_elem, lbValue len) { + Type *t = lb_addr_type(slice); + GB_ASSERT(is_type_slice(t)); + lbValue ptr = lb_addr_get_ptr(p, slice); + lb_emit_store(p, lb_emit_struct_ep(p, ptr, 0), base_elem); + lb_emit_store(p, lb_emit_struct_ep(p, ptr, 1), len); +} +void lb_fill_string(lbProcedure *p, lbAddr const &string, lbValue base_elem, lbValue len) { + Type *t = lb_addr_type(string); + GB_ASSERT(is_type_string(t)); + lbValue ptr = lb_addr_get_ptr(p, string); + lb_emit_store(p, lb_emit_struct_ep(p, ptr, 0), base_elem); + lb_emit_store(p, lb_emit_struct_ep(p, ptr, 1), len); +} +lbValue lb_string_elem(lbProcedure *p, lbValue string) { + Type *t = base_type(string.type); + GB_ASSERT(t->kind == Type_Basic && t->Basic.kind == Basic_string); + return lb_emit_struct_ev(p, string, 0); +} +lbValue lb_string_len(lbProcedure *p, lbValue string) { + Type *t = base_type(string.type); + GB_ASSERT_MSG(t->kind == Type_Basic && t->Basic.kind == Basic_string, "%s", type_to_string(t)); + return lb_emit_struct_ev(p, string, 1); +} + +lbValue lb_cstring_len(lbProcedure *p, lbValue value) { + GB_ASSERT(is_type_cstring(value.type)); + auto args = array_make(heap_allocator(), 1); + args[0] = lb_emit_conv(p, value, t_cstring); + return lb_emit_runtime_call(p, "cstring_len", args); +} + + +lbValue lb_array_elem(lbProcedure *p, lbValue array_ptr) { + Type *t = type_deref(array_ptr.type); + GB_ASSERT(is_type_array(t)); + return lb_emit_struct_ep(p, array_ptr, 0); +} + +lbValue lb_slice_elem(lbProcedure *p, lbValue slice) { + GB_ASSERT(is_type_slice(slice.type)); + return lb_emit_struct_ev(p, slice, 0); +} +lbValue lb_slice_len(lbProcedure *p, lbValue slice) { + GB_ASSERT(is_type_slice(slice.type)); + return lb_emit_struct_ev(p, slice, 1); +} +lbValue lb_dynamic_array_elem(lbProcedure *p, lbValue da) { + GB_ASSERT(is_type_dynamic_array(da.type)); + return lb_emit_struct_ev(p, da, 0); +} +lbValue lb_dynamic_array_len(lbProcedure *p, lbValue da) { + GB_ASSERT(is_type_dynamic_array(da.type)); + return lb_emit_struct_ev(p, da, 1); +} +lbValue lb_dynamic_array_cap(lbProcedure *p, lbValue da) { + GB_ASSERT(is_type_dynamic_array(da.type)); + return lb_emit_struct_ev(p, da, 2); +} +lbValue lb_dynamic_array_allocator(lbProcedure *p, lbValue da) { + GB_ASSERT(is_type_dynamic_array(da.type)); + return lb_emit_struct_ev(p, da, 3); +} + +lbValue lb_map_entries(lbProcedure *p, lbValue value) { + gbAllocator a = heap_allocator(); + Type *t = base_type(value.type); + GB_ASSERT_MSG(t->kind == Type_Map, "%s", type_to_string(t)); + init_map_internal_types(t); + Type *gst = t->Map.generated_struct_type; + i32 index = 1; + lbValue entries = lb_emit_struct_ev(p, value, index); + return entries; +} + +lbValue lb_map_entries_ptr(lbProcedure *p, lbValue value) { + gbAllocator a = heap_allocator(); + Type *t = base_type(type_deref(value.type)); + GB_ASSERT_MSG(t->kind == Type_Map, "%s", type_to_string(t)); + init_map_internal_types(t); + Type *gst = t->Map.generated_struct_type; + i32 index = 1; + lbValue entries = lb_emit_struct_ep(p, value, index); + return entries; +} + +lbValue lb_map_len(lbProcedure *p, lbValue value) { + lbValue entries = lb_map_entries(p, value); + return lb_dynamic_array_len(p, entries); +} + +lbValue lb_map_cap(lbProcedure *p, lbValue value) { + lbValue entries = lb_map_entries(p, value); + return lb_dynamic_array_cap(p, entries); +} + +lbValue lb_soa_struct_len(lbProcedure *p, lbValue value) { + Type *t = base_type(value.type); + bool is_ptr = false; + if (is_type_pointer(t)) { + is_ptr = true; + t = base_type(type_deref(t)); + } + + + if (t->Struct.soa_kind == StructSoa_Fixed) { + return lb_const_int(p->module, t_int, t->Struct.soa_count); + } + + GB_ASSERT(t->Struct.soa_kind == StructSoa_Slice || + t->Struct.soa_kind == StructSoa_Dynamic); + + isize n = 0; + Type *elem = base_type(t->Struct.soa_elem); + if (elem->kind == Type_Struct) { + n = elem->Struct.fields.count; + } else if (elem->kind == Type_Array) { + n = elem->Array.count; + } else { + GB_PANIC("Unreachable"); + } + + if (is_ptr) { + lbValue v = lb_emit_struct_ep(p, value, cast(i32)n); + return lb_emit_load(p, v); + } + return lb_emit_struct_ev(p, value, cast(i32)n); +} + +lbValue lb_soa_struct_cap(lbProcedure *p, lbValue value) { + Type *t = base_type(value.type); + + bool is_ptr = false; + if (is_type_pointer(t)) { + is_ptr = true; + t = base_type(type_deref(t)); + } + + if (t->Struct.soa_kind == StructSoa_Fixed) { + return lb_const_int(p->module, t_int, t->Struct.soa_count); + } + + GB_ASSERT(t->Struct.soa_kind == StructSoa_Dynamic); + + isize n = 0; + Type *elem = base_type(t->Struct.soa_elem); + if (elem->kind == Type_Struct) { + n = elem->Struct.fields.count+1; + } else if (elem->kind == Type_Array) { + n = elem->Array.count+1; + } else { + GB_PANIC("Unreachable"); + } + + if (is_ptr) { + lbValue v = lb_emit_struct_ep(p, value, cast(i32)n); + return lb_emit_load(p, v); + } + return lb_emit_struct_ev(p, value, cast(i32)n); +} + + + + +lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValue const &tv, BuiltinProcId id) { + ast_node(ce, CallExpr, expr); + + switch (id) { + case BuiltinProc_DIRECTIVE: { + ast_node(bd, BasicDirective, ce->proc); + String name = bd->name; + GB_ASSERT(name == "location"); + String procedure = p->entity->token.string; + TokenPos pos = ast_token(ce->proc).pos; + if (ce->args.count > 0) { + Ast *ident = unselector_expr(ce->args[0]); + GB_ASSERT(ident->kind == Ast_Ident); + Entity *e = entity_of_ident(ident); + GB_ASSERT(e != nullptr); + + if (e->parent_proc_decl != nullptr && e->parent_proc_decl->entity != nullptr) { + procedure = e->parent_proc_decl->entity->token.string; + } else { + procedure = str_lit(""); + } + pos = e->token.pos; + + } + return lb_emit_source_code_location(p, procedure, pos); + } + + case BuiltinProc_type_info_of: { + Ast *arg = ce->args[0]; + TypeAndValue tav = type_and_value_of_expr(arg); + if (tav.mode == Addressing_Type) { + Type *t = default_type(type_of_expr(arg)); + return lb_type_info(p->module, t); + } + GB_ASSERT(is_type_typeid(tav.type)); + + auto args = array_make(heap_allocator(), 1); + args[0] = lb_build_expr(p, arg); + return lb_emit_runtime_call(p, "__type_info_of", args); + } + + case BuiltinProc_typeid_of: { + Ast *arg = ce->args[0]; + TypeAndValue tav = type_and_value_of_expr(arg); + if (tav.mode == Addressing_Type) { + Type *t = default_type(type_of_expr(arg)); + return lb_typeid(p->module, t); + } + Type *t = base_type(tav.type); + GB_ASSERT(are_types_identical(t, t_type_info_ptr)); + + auto args = array_make(heap_allocator(), 1); + args[0] = lb_emit_conv(p, lb_build_expr(p, arg), t_type_info_ptr); + return lb_emit_runtime_call(p, "__typeid_of", args); + } + + case BuiltinProc_len: { + lbValue v = lb_build_expr(p, ce->args[0]); + Type *t = base_type(v.type); + if (is_type_pointer(t)) { + // IMPORTANT TODO(bill): Should there be a nil pointer check? + v = lb_emit_load(p, v); + t = type_deref(t); + } + if (is_type_cstring(t)) { + return lb_cstring_len(p, v); + } else if (is_type_string(t)) { + return lb_string_len(p, v); + } else if (is_type_array(t)) { + GB_PANIC("Array lengths are constant"); + } else if (is_type_slice(t)) { + return lb_slice_len(p, v); + } else if (is_type_dynamic_array(t)) { + return lb_dynamic_array_len(p, v); + } else if (is_type_map(t)) { + return lb_map_len(p, v); + } else if (is_type_soa_struct(t)) { + return lb_soa_struct_len(p, v); + } + + GB_PANIC("Unreachable"); + break; + } + + case BuiltinProc_cap: { + lbValue v = lb_build_expr(p, ce->args[0]); + Type *t = base_type(v.type); + if (is_type_pointer(t)) { + // IMPORTANT TODO(bill): Should there be a nil pointer check? + v = lb_emit_load(p, v); + t = type_deref(t); + } + if (is_type_string(t)) { + GB_PANIC("Unreachable"); + } else if (is_type_array(t)) { + GB_PANIC("Array lengths are constant"); + } else if (is_type_slice(t)) { + return lb_slice_len(p, v); + } else if (is_type_dynamic_array(t)) { + return lb_dynamic_array_cap(p, v); + } else if (is_type_map(t)) { + return lb_map_cap(p, v); + } else if (is_type_soa_struct(t)) { + return lb_soa_struct_cap(p, v); + } + + GB_PANIC("Unreachable"); + + break; + } + + case BuiltinProc_swizzle: { + lbAddr addr = lb_build_addr(p, ce->args[0]); + isize index_count = ce->args.count-1; + if (index_count == 0) { + return lb_addr_load(p, addr); + } + lbValue src = lb_addr_get_ptr(p, addr); + // TODO(bill): Should this be zeroed or not? + lbAddr dst = lb_add_local_generated(p, tv.type, true); + lbValue dst_ptr = lb_addr_get_ptr(p, dst); + + for (i32 i = 1; i < ce->args.count; i++) { + TypeAndValue tv = type_and_value_of_expr(ce->args[i]); + GB_ASSERT(is_type_integer(tv.type)); + GB_ASSERT(tv.value.kind == ExactValue_Integer); + + i32 src_index = cast(i32)big_int_to_i64(&tv.value.value_integer); + i32 dst_index = i-1; + + lbValue src_elem = lb_emit_array_epi(p, src, src_index); + lbValue dst_elem = lb_emit_array_epi(p, dst_ptr, dst_index); + + lb_emit_store(p, dst_elem, lb_emit_load(p, src_elem)); + } + return lb_addr_load(p, dst); + } + + case BuiltinProc_complex: { + lbValue real = lb_build_expr(p, ce->args[0]); + lbValue imag = lb_build_expr(p, ce->args[1]); + lbAddr dst_addr = lb_add_local_generated(p, tv.type, false); + lbValue dst = lb_addr_get_ptr(p, dst_addr); + + Type *ft = base_complex_elem_type(tv.type); + real = lb_emit_conv(p, real, ft); + imag = lb_emit_conv(p, imag, ft); + lb_emit_store(p, lb_emit_struct_ep(p, dst, 0), real); + lb_emit_store(p, lb_emit_struct_ep(p, dst, 1), imag); + + return lb_emit_load(p, dst); + } + + case BuiltinProc_quaternion: { + lbValue real = lb_build_expr(p, ce->args[0]); + lbValue imag = lb_build_expr(p, ce->args[1]); + lbValue jmag = lb_build_expr(p, ce->args[2]); + lbValue kmag = lb_build_expr(p, ce->args[3]); + + // @QuaternionLayout + lbAddr dst_addr = lb_add_local_generated(p, tv.type, false); + lbValue dst = lb_addr_get_ptr(p, dst_addr); + + Type *ft = base_complex_elem_type(tv.type); + real = lb_emit_conv(p, real, ft); + imag = lb_emit_conv(p, imag, ft); + jmag = lb_emit_conv(p, jmag, ft); + kmag = lb_emit_conv(p, kmag, ft); + lb_emit_store(p, lb_emit_struct_ep(p, dst, 3), real); + lb_emit_store(p, lb_emit_struct_ep(p, dst, 0), imag); + lb_emit_store(p, lb_emit_struct_ep(p, dst, 1), jmag); + lb_emit_store(p, lb_emit_struct_ep(p, dst, 2), kmag); + + return lb_emit_load(p, dst); + } + + case BuiltinProc_real: { + lbValue val = lb_build_expr(p, ce->args[0]); + if (is_type_complex(val.type)) { + lbValue real = lb_emit_struct_ev(p, val, 0); + return lb_emit_conv(p, real, tv.type); + } else if (is_type_quaternion(val.type)) { + // @QuaternionLayout + lbValue real = lb_emit_struct_ev(p, val, 3); + return lb_emit_conv(p, real, tv.type); + } + GB_PANIC("invalid type for real"); + return {}; + } + case BuiltinProc_imag: { + lbValue val = lb_build_expr(p, ce->args[0]); + if (is_type_complex(val.type)) { + lbValue imag = lb_emit_struct_ev(p, val, 1); + return lb_emit_conv(p, imag, tv.type); + } else if (is_type_quaternion(val.type)) { + // @QuaternionLayout + lbValue imag = lb_emit_struct_ev(p, val, 0); + return lb_emit_conv(p, imag, tv.type); + } + GB_PANIC("invalid type for imag"); + return {}; + } + case BuiltinProc_jmag: { + lbValue val = lb_build_expr(p, ce->args[0]); + if (is_type_quaternion(val.type)) { + // @QuaternionLayout + lbValue imag = lb_emit_struct_ev(p, val, 1); + return lb_emit_conv(p, imag, tv.type); + } + GB_PANIC("invalid type for jmag"); + return {}; + } + case BuiltinProc_kmag: { + lbValue val = lb_build_expr(p, ce->args[0]); + if (is_type_quaternion(val.type)) { + // @QuaternionLayout + lbValue imag = lb_emit_struct_ev(p, val, 2); + return lb_emit_conv(p, imag, tv.type); + } + GB_PANIC("invalid type for kmag"); + return {}; + } + + case BuiltinProc_conj: { + lbValue val = lb_build_expr(p, ce->args[0]); + lbValue res = {}; + Type *t = val.type; + if (is_type_complex(t)) { + res = lb_addr_get_ptr(p, lb_add_local_generated(p, tv.type, false)); + lbValue real = lb_emit_struct_ev(p, val, 0); + lbValue imag = lb_emit_struct_ev(p, val, 1); + imag = lb_emit_unary_arith(p, Token_Sub, imag, imag.type); + lb_emit_store(p, lb_emit_struct_ep(p, res, 0), real); + lb_emit_store(p, lb_emit_struct_ep(p, res, 1), imag); + } else if (is_type_quaternion(t)) { + // @QuaternionLayout + res = lb_addr_get_ptr(p, lb_add_local_generated(p, tv.type, false)); + lbValue real = lb_emit_struct_ev(p, val, 3); + lbValue imag = lb_emit_struct_ev(p, val, 0); + lbValue jmag = lb_emit_struct_ev(p, val, 1); + lbValue kmag = lb_emit_struct_ev(p, val, 2); + imag = lb_emit_unary_arith(p, Token_Sub, imag, imag.type); + jmag = lb_emit_unary_arith(p, Token_Sub, jmag, jmag.type); + kmag = lb_emit_unary_arith(p, Token_Sub, kmag, kmag.type); + lb_emit_store(p, lb_emit_struct_ep(p, res, 3), real); + lb_emit_store(p, lb_emit_struct_ep(p, res, 0), imag); + lb_emit_store(p, lb_emit_struct_ep(p, res, 1), jmag); + lb_emit_store(p, lb_emit_struct_ep(p, res, 2), kmag); + } + return lb_emit_load(p, res); + } + + case BuiltinProc_expand_to_tuple: { + lbValue val = lb_build_expr(p, ce->args[0]); + Type *t = base_type(val.type); + + if (!is_type_tuple(tv.type)) { + if (t->kind == Type_Struct) { + GB_ASSERT(t->Struct.fields.count == 1); + return lb_emit_struct_ev(p, val, 0); + } else if (t->kind == Type_Array) { + GB_ASSERT(t->Array.count == 1); + return lb_emit_array_epi(p, val, 0); + } else { + GB_PANIC("Unknown type of expand_to_tuple"); + } + + } + + GB_ASSERT(is_type_tuple(tv.type)); + // NOTE(bill): Doesn't need to be zero because it will be initialized in the loops + lbValue tuple = lb_addr_get_ptr(p, lb_add_local_generated(p, tv.type, false)); + if (t->kind == Type_Struct) { + for_array(src_index, t->Struct.fields) { + Entity *field = t->Struct.fields[src_index]; + i32 field_index = field->Variable.field_index; + lbValue f = lb_emit_struct_ev(p, val, field_index); + lbValue ep = lb_emit_struct_ep(p, tuple, cast(i32)src_index); + lb_emit_store(p, ep, f); + } + } else if (t->kind == Type_Array) { + // TODO(bill): Clean-up this code + lbValue ap = lb_address_from_load_or_generate_local(p, val); + for (i32 i = 0; i < cast(i32)t->Array.count; i++) { + lbValue f = lb_emit_load(p, lb_emit_array_epi(p, ap, i)); + lbValue ep = lb_emit_struct_ep(p, tuple, i); + lb_emit_store(p, ep, f); + } + } else { + GB_PANIC("Unknown type of expand_to_tuple"); + } + return lb_emit_load(p, tuple); + } + + case BuiltinProc_min: { + Type *t = type_of_expr(expr); + if (ce->args.count == 2) { + return lb_emit_min(p, t, lb_build_expr(p, ce->args[0]), lb_build_expr(p, ce->args[1])); + } else { + lbValue x = lb_build_expr(p, ce->args[0]); + for (isize i = 1; i < ce->args.count; i++) { + x = lb_emit_min(p, t, x, lb_build_expr(p, ce->args[i])); + } + return x; + } + } + + case BuiltinProc_max: { + Type *t = type_of_expr(expr); + if (ce->args.count == 2) { + return lb_emit_max(p, t, lb_build_expr(p, ce->args[0]), lb_build_expr(p, ce->args[1])); + } else { + lbValue x = lb_build_expr(p, ce->args[0]); + for (isize i = 1; i < ce->args.count; i++) { + x = lb_emit_max(p, t, x, lb_build_expr(p, ce->args[i])); + } + return x; + } + } + + case BuiltinProc_abs: { + gbAllocator a = heap_allocator(); + lbValue x = lb_build_expr(p, ce->args[0]); + Type *t = x.type; + if (is_type_unsigned(t)) { + return x; + } + if (is_type_quaternion(t)) { + i64 sz = 8*type_size_of(t); + auto args = array_make(heap_allocator(), 1); + args[0] = x; + switch (sz) { + case 128: return lb_emit_runtime_call(p, "abs_quaternion128", args); + case 256: return lb_emit_runtime_call(p, "abs_quaternion256", args); + } + GB_PANIC("Unknown complex type"); + } else if (is_type_complex(t)) { + i64 sz = 8*type_size_of(t); + auto args = array_make(heap_allocator(), 1); + args[0] = x; + switch (sz) { + case 64: return lb_emit_runtime_call(p, "abs_complex64", args); + case 128: return lb_emit_runtime_call(p, "abs_complex128", args); + } + GB_PANIC("Unknown complex type"); + } else if (is_type_float(t)) { + i64 sz = 8*type_size_of(t); + auto args = array_make(heap_allocator(), 1); + args[0] = x; + switch (sz) { + case 32: return lb_emit_runtime_call(p, "abs_f32", args); + case 64: return lb_emit_runtime_call(p, "abs_f64", args); + } + GB_PANIC("Unknown float type"); + } + lbValue zero = lb_const_nil(p->module, t); + lbValue cond = lb_emit_comp(p, Token_Lt, x, zero); + lbValue neg = lb_emit_unary_arith(p, Token_Sub, x, t); + return lb_emit_select(p, cond, neg, x); + } + + case BuiltinProc_clamp: + return lb_emit_clamp(p, type_of_expr(expr), + lb_build_expr(p, ce->args[0]), + lb_build_expr(p, ce->args[1]), + lb_build_expr(p, ce->args[2])); + + + + #if 0 + // "Intrinsics" + case BuiltinProc_atomic_fence: + case BuiltinProc_atomic_fence_acq: + case BuiltinProc_atomic_fence_rel: + case BuiltinProc_atomic_fence_acqrel: + return lb_emit(p, lb_instr_atomic_fence(p, id)); + + case BuiltinProc_atomic_store: + case BuiltinProc_atomic_store_rel: + case BuiltinProc_atomic_store_relaxed: + case BuiltinProc_atomic_store_unordered: { + lbValue dst = lb_build_expr(p, ce->args[0]); + lbValue val = lb_build_expr(p, ce->args[1]); + val = lb_emit_conv(p, val, type_deref(ir_type(dst))); + return lb_emit(p, lb_instr_atomic_store(p, dst, val, id)); + } + + case BuiltinProc_atomic_load: + case BuiltinProc_atomic_load_acq: + case BuiltinProc_atomic_load_relaxed: + case BuiltinProc_atomic_load_unordered: { + lbValue dst = lb_build_expr(p, ce->args[0]); + return lb_emit(p, lb_instr_atomic_load(p, dst, id)); + } + + case BuiltinProc_atomic_add: + case BuiltinProc_atomic_add_acq: + case BuiltinProc_atomic_add_rel: + case BuiltinProc_atomic_add_acqrel: + case BuiltinProc_atomic_add_relaxed: + case BuiltinProc_atomic_sub: + case BuiltinProc_atomic_sub_acq: + case BuiltinProc_atomic_sub_rel: + case BuiltinProc_atomic_sub_acqrel: + case BuiltinProc_atomic_sub_relaxed: + case BuiltinProc_atomic_and: + case BuiltinProc_atomic_and_acq: + case BuiltinProc_atomic_and_rel: + case BuiltinProc_atomic_and_acqrel: + case BuiltinProc_atomic_and_relaxed: + case BuiltinProc_atomic_nand: + case BuiltinProc_atomic_nand_acq: + case BuiltinProc_atomic_nand_rel: + case BuiltinProc_atomic_nand_acqrel: + case BuiltinProc_atomic_nand_relaxed: + case BuiltinProc_atomic_or: + case BuiltinProc_atomic_or_acq: + case BuiltinProc_atomic_or_rel: + case BuiltinProc_atomic_or_acqrel: + case BuiltinProc_atomic_or_relaxed: + case BuiltinProc_atomic_xor: + case BuiltinProc_atomic_xor_acq: + case BuiltinProc_atomic_xor_rel: + case BuiltinProc_atomic_xor_acqrel: + case BuiltinProc_atomic_xor_relaxed: + case BuiltinProc_atomic_xchg: + case BuiltinProc_atomic_xchg_acq: + case BuiltinProc_atomic_xchg_rel: + case BuiltinProc_atomic_xchg_acqrel: + case BuiltinProc_atomic_xchg_relaxed: { + lbValue dst = lb_build_expr(p, ce->args[0]); + lbValue val = lb_build_expr(p, ce->args[1]); + val = lb_emit_conv(p, val, type_deref(ir_type(dst))); + return lb_emit(p, lb_instr_atomic_rmw(p, dst, val, id)); + } + + case BuiltinProc_atomic_cxchg: + case BuiltinProc_atomic_cxchg_acq: + case BuiltinProc_atomic_cxchg_rel: + case BuiltinProc_atomic_cxchg_acqrel: + case BuiltinProc_atomic_cxchg_relaxed: + case BuiltinProc_atomic_cxchg_failrelaxed: + case BuiltinProc_atomic_cxchg_failacq: + case BuiltinProc_atomic_cxchg_acq_failrelaxed: + case BuiltinProc_atomic_cxchg_acqrel_failrelaxed: + case BuiltinProc_atomic_cxchgweak: + case BuiltinProc_atomic_cxchgweak_acq: + case BuiltinProc_atomic_cxchgweak_rel: + case BuiltinProc_atomic_cxchgweak_acqrel: + case BuiltinProc_atomic_cxchgweak_relaxed: + case BuiltinProc_atomic_cxchgweak_failrelaxed: + case BuiltinProc_atomic_cxchgweak_failacq: + case BuiltinProc_atomic_cxchgweak_acq_failrelaxed: + case BuiltinProc_atomic_cxchgweak_acqrel_failrelaxed: { + Type *type = expr->tav.type; + + lbValue address = lb_build_expr(p, ce->args[0]); + Type *elem = type_deref(ir_type(address)); + lbValue old_value = lb_build_expr(p, ce->args[1]); + lbValue new_value = lb_build_expr(p, ce->args[2]); + old_value = lb_emit_conv(p, old_value, elem); + new_value = lb_emit_conv(p, new_value, elem); + + return lb_emit(p, lb_instr_atomic_cxchg(p, type, address, old_value, new_value, id)); + } + #endif + + + } + + GB_PANIC("Unhandled built-in procedure"); + return {}; } @@ -3674,8 +4976,7 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { } else { id = BuiltinProc_DIRECTIVE; } - GB_PANIC("lb_build_builtin_proc"); - // return lb_build_builtin_proc(p, expr, tv, id); + return lb_build_builtin_proc(p, expr, tv, id); } // NOTE(bill): Regular call @@ -3900,7 +5201,10 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { for (isize i = 0; i < param_count; i++) { Entity *e = param_tuple->variables[i]; if (e->kind == Entity_Variable) { - GB_ASSERT(args[i].value != nullptr); + if (args[i].value == nullptr) { + continue; + } + GB_ASSERT_MSG(args[i].value != nullptr, "%.*s", LIT(e->token.string)); args[i] = lb_emit_conv(p, args[i], e->type); } } @@ -3963,6 +5267,10 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { bool lb_is_const(lbValue value) { LLVMValueRef v = value.value; + if (is_type_untyped_nil(value.type) || is_type_untyped_undef(value.type)) { + // TODO(bill): Is this correct behaviour? + return true; + } if (LLVMIsConstant(v)) { return true; } @@ -3992,20 +5300,14 @@ lbValue lb_emit_byte_swap(lbProcedure *p, lbValue value, Type *platform_type) { Type *vt = core_type(value.type); GB_ASSERT(type_size_of(vt) == type_size_of(platform_type)); // TODO(bill): lb_emit_byte_swap - return value; + lbValue res = {}; + res.type = platform_type; + res.value = value.value; + return res; } - -struct lbLoopData { - lbAddr idx_addr; - lbValue idx; - lbBlock *body; - lbBlock *done; - lbBlock *loop; -}; - -lbLoopData lb_loop_start(lbProcedure *p, isize count, Type *index_type=t_int) { +lbLoopData lb_loop_start(lbProcedure *p, isize count, Type *index_type) { lbLoopData data = {}; lbValue max = lb_const_int(p->module, t_int, count); @@ -4070,7 +5372,6 @@ lbValue lb_emit_comp_against_nil(lbProcedure *p, TokenKind op_kind, lbValue x) { return res; } } else if (is_type_slice(t)) { - gb_printf_err("HERE\n"); lbValue data = lb_emit_struct_ev(p, x, 0); lbValue cap = lb_emit_struct_ev(p, x, 1); if (op_kind == Token_CmpEq) { @@ -4118,7 +5419,7 @@ lbValue lb_emit_comp_against_nil(lbProcedure *p, TokenKind op_kind, lbValue x) { lbValue invalid_typeid = lb_const_value(p->module, t_typeid, exact_value_i64(0)); return lb_emit_comp(p, op_kind, x, invalid_typeid); } else if (is_type_bit_field(t)) { - auto args = array_make(heap_allocator(), 2); + auto args = array_make(heap_allocator(), 2); lbValue lhs = lb_address_from_load_or_generate_local(p, x); args[0] = lb_emit_conv(p, lhs, t_rawptr); args[1] = lb_const_int(p->module, t_int, type_size_of(t)); @@ -4338,7 +5639,7 @@ lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue ri } GB_ASSERT(runtime_proc != nullptr); - auto args = array_make(heap_allocator(), 2); + auto args = array_make(heap_allocator(), 2); args[0] = left; args[1] = right; return lb_emit_runtime_call(p, runtime_proc, args); @@ -4363,7 +5664,7 @@ lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue ri } GB_ASSERT(runtime_proc != nullptr); - auto args = array_make(heap_allocator(), 2); + auto args = array_make(heap_allocator(), 2); args[0] = left; args[1] = right; return lb_emit_runtime_call(p, runtime_proc, args); @@ -4419,7 +5720,7 @@ lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue ri lbValue res = {}; res.type = t_llvm_bool; - if (is_type_integer(left.type) || is_type_boolean(left.type) || is_type_integer(left.type)) { + if (is_type_integer(left.type) || is_type_boolean(left.type) || is_type_pointer(left.type) || is_type_proc(left.type) || is_type_enum(left.type)) { LLVMIntPredicate pred = {}; if (is_type_unsigned(left.type)) { switch (op_kind) { @@ -4453,7 +5754,7 @@ lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue ri } res.value = LLVMBuildFCmp(p->builder, pred, left.value, right.value, ""); } else { - GB_PANIC("Unhandled comparison kind"); + GB_PANIC("Unhandled comparison kind %s %.*s %s", type_to_string(left.type), LIT(token_strings[op_kind]), type_to_string(right.type)); } return res; @@ -4515,6 +5816,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { } + switch (expr->kind) { case_ast_node(bl, BasicLit, expr); TokenPos pos = bl->token.pos; @@ -4530,8 +5832,16 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { return lb_addr_load(p, lb_build_addr(p, expr)); case_end; - case_ast_node(u, Undef, expr); - return lbValue{LLVMGetUndef(lb_type(m, tv.type)), tv.type}; + case_ast_node(u, Undef, expr) + lbValue res = {}; + if (is_type_untyped(tv.type)) { + res.value = nullptr; + res.type = t_untyped_undef; + } else { + res.value = LLVMGetUndef(lb_type(m, tv.type)); + res.type = tv.type; + } + return res; case_end; case_ast_node(i, Ident, expr); @@ -4549,6 +5859,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { res.type = e->type; return res; } + GB_ASSERT(e->kind != Entity_ProcGroup); auto *found = map_get(&p->module->values, hash_entity(e)); if (found) { @@ -4561,7 +5872,8 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { } else if (e != nullptr && e->kind == Entity_Variable) { return lb_addr_load(p, lb_build_addr(p, expr)); } - GB_PANIC("nullptr value for expression from identifier: %.*s.%.*s : %s @ %p", LIT(e->pkg->name), LIT(i->token.string), type_to_string(e->type), expr); + gb_printf_err("Error in: %.*s(%td:%td)\n", LIT(p->name), i->token.pos.line, i->token.pos.column); + GB_PANIC("nullptr value for expression from identifier: %.*s.%.*s (%p) : %s @ %p", LIT(e->pkg->name), LIT(e->token.string), e, type_to_string(e->type), expr); return {}; case_end; @@ -4655,82 +5967,82 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { case_end; case_ast_node(ue, UnaryExpr, expr); - #if 0 switch (ue->op.kind) { case Token_And: { Ast *ue_expr = unparen_expr(ue->expr); - if (ue_expr->kind == Ast_TypeAssertion) { - gbAllocator a = heap_allocator(); - GB_ASSERT(is_type_pointer(tv.type)); + // if (ue_expr->kind == Ast_TypeAssertion) { + // gbAllocator a = heap_allocator(); + // GB_ASSERT(is_type_pointer(tv.type)); - ast_node(ta, TypeAssertion, ue_expr); - TokenPos pos = ast_token(expr).pos; - Type *type = type_of_expr(ue_expr); - GB_ASSERT(!is_type_tuple(type)); + // ast_node(ta, TypeAssertion, ue_expr); + // TokenPos pos = ast_token(expr).pos; + // Type *type = type_of_expr(ue_expr); + // GB_ASSERT(!is_type_tuple(type)); - lbValue e = lb_build_expr(p, ta->expr); - Type *t = type_deref(e.type); - if (is_type_union(t)) { - lbValue v = e; - if (!is_type_pointer(v.type)) { - v = lb_address_from_load_or_generate_local(p, v); - } - Type *src_type = type_deref(v.type); - Type *dst_type = type; + // lbValue e = lb_build_expr(p, ta->expr); + // Type *t = type_deref(e.type); + // if (is_type_union(t)) { + // lbValue v = e; + // if (!is_type_pointer(v.type)) { + // v = lb_address_from_load_or_generate_local(p, v); + // } + // Type *src_type = type_deref(v.type); + // Type *dst_type = type; - lbValue src_tag = lb_emit_load(p, lb_emit_union_tag_ptr(p, v)); - lbValue dst_tag = lb_const_union_tag(src_type, dst_type); + // lbValue src_tag = lb_emit_load(p, lb_emit_union_tag_ptr(p, v)); + // lbValue dst_tag = lb_const_union_tag(src_type, dst_type); - lbValue ok = lb_emit_comp(p, Token_CmpEq, src_tag, dst_tag); - auto args = array_make(heap_allocator(), 6); - args[0] = ok; + // lbValue ok = lb_emit_comp(p, Token_CmpEq, src_tag, dst_tag); + // auto args = array_make(heap_allocator(), 6); + // args[0] = ok; - args[1] = lb_find_or_add_entity_string(p->module, pos.file); - args[2] = lb_const_int(pos.line); - args[3] = lb_const_int(pos.column); + // args[1] = lb_find_or_add_entity_string(p->module, pos.file); + // args[2] = lb_const_int(pos.line); + // args[3] = lb_const_int(pos.column); - args[4] = lb_typeid(p->module, src_type); - args[5] = lb_typeid(p->module, dst_type); - lb_emit_runtime_call(p, "type_assertion_check", args); + // args[4] = lb_typeid(p->module, src_type); + // args[5] = lb_typeid(p->module, dst_type); + // lb_emit_runtime_call(p, "type_assertion_check", args); - lbValue data_ptr = v; - return ir_emit_conv(p, data_ptr, tv.type); - } else if (is_type_any(t)) { - lbValue v = e; - if (is_type_pointer(ir_type(v))) { - v = ir_emit_load(p, v); - } + // lbValue data_ptr = v; + // return lb_emit_conv(p, data_ptr, tv.type); + // } else if (is_type_any(t)) { + // lbValue v = e; + // if (is_type_pointer(ir_type(v))) { + // v = lb_emit_load(p, v); + // } - lbValue data_ptr = ir_emit_struct_ev(p, v, 0); - lbValue any_id = ir_emit_struct_ev(p, v, 1); - lbValue id = lb_typeid(p->module, type); + // lbValue data_ptr = lb_emit_struct_ev(p, v, 0); + // lbValue any_id = lb_emit_struct_ev(p, v, 1); + // lbValue id = lb_typeid(p->module, type); - lbValue ok = lb_emit_comp(p, Token_CmpEq, any_id, id); - auto args = array_make(ir_allocator(), 6); - args[0] = ok; + // lbValue ok = lb_emit_comp(p, Token_CmpEq, any_id, id); + // auto args = array_make(heap_allocator(), 6); + // args[0] = ok; - args[1] = lb_find_or_add_entity_string(p->module, pos.file); - args[2] = lb_const_int(pos.line); - args[3] = ir_const_int(pos.column); + // args[1] = lb_find_or_add_entity_string(p->module, pos.file); + // args[2] = lb_const_int(pos.line); + // args[3] = lb_const_int(pos.column); - args[4] = any_id; - args[5] = id; - lb_emit_runtime_call(p, "type_assertion_check", args); + // args[4] = any_id; + // args[5] = id; + // lb_emit_runtime_call(p, "type_assertion_check", args); - return ir_emit_conv(p, data_ptr, tv.type); - } else { - GB_PANIC("TODO(bill): type assertion %s", type_to_string(type)); - } - } else if (ue_expr->kind == Ast_IndexExpr) { - } + // return lb_emit_conv(p, data_ptr, tv.type); + // } else { + // GB_PANIC("TODO(bill): type assertion %s", type_to_string(type)); + // } + // } return lb_build_addr_ptr(p, ue->expr); } default: - return lb_emit_unary_arith(p, ue->op.kind, lb_build_expr(p, ue->expr), tv.type); + { + lbValue v = lb_build_expr(p, ue->expr); + return lb_emit_unary_arith(p, ue->op.kind, v, tv.type); + } } - #endif case_end; case_ast_node(be, BinaryExpr, expr); @@ -4835,7 +6147,6 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { } String name = i->token.string; Entity *e = entity_of_ident(expr); - // GB_ASSERT(name == e->token.string); return lb_build_addr_from_entity(p, e, expr); case_end; @@ -4863,17 +6174,17 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { GB_ASSERT(e->flags & EntityFlag_TypeField); String name = e->token.string; /*if (name == "names") { - lbValue ti_ptr = ir_type_info(proc, type); - lbValue variant = ir_emit_struct_ep(proc, ti_ptr, 2); + lbValue ti_ptr = lb_type_info(p, type); + lbValue variant = ir_emit_struct_ep(p, ti_ptr, 2); lbValue names_ptr = nullptr; if (is_type_enum(type)) { - lbValue enum_info = lb_emit_conv(proc, variant, t_type_info_enum_ptr); - names_ptr = ir_emit_struct_ep(proc, enum_info, 1); + lbValue enum_info = lb_emit_conv(p, variant, t_type_info_enum_ptr); + names_ptr = ir_emit_struct_ep(p, enum_info, 1); } else if (type->kind == Type_Struct) { - lbValue struct_info = lb_emit_conv(proc, variant, t_type_info_struct_ptr); - names_ptr = ir_emit_struct_ep(proc, struct_info, 1); + lbValue struct_info = lb_emit_conv(p, variant, t_type_info_struct_ptr); + names_ptr = ir_emit_struct_ep(p, struct_info, 1); } return ir_addr(names_ptr); } else */{ @@ -4954,44 +6265,43 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { case_ast_node(ta, TypeAssertion, expr); gbAllocator a = heap_allocator(); TokenPos pos = ast_token(expr).pos; - lbValue e = ir_build_expr(proc, ta->expr); + lbValue e = lb_build_expr(proc, ta->expr); Type *t = type_deref(ir_type(e)); if (is_type_union(t)) { Type *type = type_of_expr(expr); lbValue v = lb_add_local_generated(proc, type, false); ir_emit_comment(proc, str_lit("cast - union_cast")); - ir_emit_store(proc, v, ir_emit_union_cast(proc, ir_build_expr(proc, ta->expr), type, pos)); + lb_emit_store(proc, v, ir_emit_union_cast(proc, lb_build_expr(proc, ta->expr), type, pos)); return ir_addr(v); } else if (is_type_any(t)) { ir_emit_comment(proc, str_lit("cast - any_cast")); Type *type = type_of_expr(expr); - return ir_emit_any_cast_addr(proc, ir_build_expr(proc, ta->expr), type, pos); + return ir_emit_any_cast_addr(proc, lb_build_expr(proc, ta->expr), type, pos); } else { GB_PANIC("TODO(bill): type assertion %s", type_to_string(ir_type(e))); } case_end; +#endif case_ast_node(ue, UnaryExpr, expr); switch (ue->op.kind) { case Token_And: { - return ir_build_addr(proc, ue->expr); + return lb_build_addr(p, ue->expr); } default: - GB_PANIC("Invalid unary expression for ir_build_addr"); + GB_PANIC("Invalid unary expression for lb_build_addr"); } case_end; - case_ast_node(be, BinaryExpr, expr); - lbValue v = ir_build_expr(proc, expr); - Type *t = ir_type(v); + lbValue v = lb_build_expr(p, expr); + Type *t = v.type; if (is_type_pointer(t)) { - return ir_addr(v); + return lb_addr(v); } - return ir_addr(ir_address_from_load_or_generate_local(proc, v)); + return lb_addr(lb_address_from_load_or_generate_local(p, v)); case_end; case_ast_node(ie, IndexExpr, expr); - ir_emit_comment(proc, str_lit("IndexExpr")); Type *t = base_type(type_of_expr(ie->expr)); gbAllocator a = heap_allocator(); @@ -4999,92 +6309,95 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { t = base_type(type_deref(t)); if (is_type_soa_struct(t)) { // SOA STRUCTURES!!!! - lbValue val = ir_build_addr_ptr(proc, ie->expr); - if (deref) { - val = ir_emit_load(proc, val); - } + GB_PANIC("SOA STRUCTURES!!!!"); + // lbValue val = lb_build_addr_ptr(p, ie->expr); + // if (deref) { + // val = lb_emit_load(p, val); + // } - lbValue index = ir_build_expr(proc, ie->index); - return ir_addr_soa_variable(val, index, ie->index); + // lbValue index = lb_build_expr(p, ie->index); + // return lb_addr_soa_variable(val, index, ie->index); } if (ie->expr->tav.mode == Addressing_SoaVariable) { // SOA Structures for slices/dynamic arrays GB_ASSERT(is_type_pointer(type_of_expr(ie->expr))); - lbValue field = ir_build_expr(proc, ie->expr); - lbValue index = ir_build_expr(proc, ie->index); + lbValue field = lb_build_expr(p, ie->expr); + lbValue index = lb_build_expr(p, ie->index); if (!build_context.no_bounds_check) { - // TODO HACK(bill): Clean up this hack to get the length for bounds checking - GB_ASSERT(field->kind == irValue_Instr); - irInstr *instr = &field->Instr; + GB_PANIC("HERE"); + // // TODO HACK(bill): Clean up this hack to get the length for bounds checking + // GB_ASSERT(LLVMIsALoadInst(field.value)); - GB_ASSERT(instr->kind == irInstr_Load); - lbValue a = instr->Load.address; + // lbValue a = {}; + // a.value = LLVMGetOperand(field.value, 0); + // a.type = alloc_type_pointer(field.type); - GB_ASSERT(a->kind == irValue_Instr); - irInstr *b = &a->Instr; - GB_ASSERT(b->kind == irInstr_StructElementPtr); - lbValue base_struct = b->StructElementPtr.address; + // irInstr *b = &a->Instr; + // GB_ASSERT(b->kind == irInstr_StructElementPtr); + // lbValue base_struct = b->StructElementPtr.address; - GB_ASSERT(is_type_soa_struct(type_deref(ir_type(base_struct)))); - lbValue len = ir_soa_struct_len(proc, base_struct); - ir_emit_bounds_check(proc, ast_token(ie->index), index, len); + // GB_ASSERT(is_type_soa_struct(type_deref(ir_type(base_struct)))); + // lbValue len = ir_soa_struct_len(p, base_struct); + // ir_emit_bounds_check(p, ast_token(ie->index), index, len); } - lbValue val = ir_emit_ptr_offset(proc, field, index); - return ir_addr(val); + lbValue val = lb_emit_ptr_offset(p, field, index); + return lb_addr(val); } GB_ASSERT_MSG(is_type_indexable(t), "%s %s", type_to_string(t), expr_to_string(expr)); if (is_type_map(t)) { - lbValue map_val = ir_build_addr_ptr(proc, ie->expr); - if (deref) { - map_val = ir_emit_load(proc, map_val); - } + GB_PANIC("map index"); + // lbValue map_val = lb_build_addr_ptr(p, ie->expr); + // if (deref) { + // map_val = lb_emit_load(p, map_val); + // } - lbValue key = ir_build_expr(proc, ie->index); - key = lb_emit_conv(proc, key, t->Map.key); + // lbValue key = lb_build_expr(p, ie->index); + // key = lb_emit_conv(p, key, t->Map.key); - Type *result_type = type_of_expr(expr); - return ir_addr_map(map_val, key, t, result_type); + // Type *result_type = type_of_expr(expr); + // return lb_addr_map(map_val, key, t, result_type); } - lbValue using_addr = nullptr; + lbValue using_addr = {}; switch (t->kind) { case Type_Array: { - lbValue array = nullptr; - if (using_addr != nullptr) { + lbValue array = {}; + if (using_addr.value != nullptr) { array = using_addr; } else { - array = ir_build_addr_ptr(proc, ie->expr); + array = lb_build_addr_ptr(p, ie->expr); if (deref) { - array = ir_emit_load(proc, array); + array = lb_emit_load(p, array); } } - lbValue index = lb_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); - lbValue elem = ir_emit_array_ep(proc, array, index); + lbValue index = lb_build_expr(p, ie->index); + index = lb_emit_conv(p, index, t_int); + lbValue elem = lb_emit_array_ep(p, array, index); auto index_tv = type_and_value_of_expr(ie->index); if (index_tv.mode != Addressing_Constant) { - lbValue len = ir_const_int(t->Array.count); - ir_emit_bounds_check(proc, ast_token(ie->index), index, len); + // lbValue len = lb_const_int(p->module, t_int, t->Array.count); + // ir_emit_bounds_check(p, ast_token(ie->index), index, len); } - return ir_addr(elem); + return lb_addr(elem); } case Type_EnumeratedArray: { - lbValue array = nullptr; - if (using_addr != nullptr) { + lbValue array = {}; + if (using_addr.value != nullptr) { array = using_addr; } else { - array = ir_build_addr_ptr(proc, ie->expr); + array = lb_build_addr_ptr(p, ie->expr); if (deref) { - array = ir_emit_load(proc, array); + array = lb_emit_load(p, array); } } @@ -5092,62 +6405,62 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { auto index_tv = type_and_value_of_expr(ie->index); - lbValue index = nullptr; + lbValue index = {}; if (compare_exact_values(Token_NotEq, t->EnumeratedArray.min_value, exact_value_i64(0))) { if (index_tv.mode == Addressing_Constant) { ExactValue idx = exact_value_sub(index_tv.value, t->EnumeratedArray.min_value); - index = ir_value_constant(index_type, idx); + index = lb_const_value(p->module, index_type, idx); } else { - index = lb_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); - index = ir_emit_arith(proc, Token_Sub, index, ir_value_constant(index_type, t->EnumeratedArray.min_value), index_type); + index = lb_emit_conv(p, lb_build_expr(p, ie->index), t_int); + index = lb_emit_arith(p, Token_Sub, index, lb_const_value(p->module, index_type, t->EnumeratedArray.min_value), index_type); } } else { - index = lb_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); + index = lb_emit_conv(p, lb_build_expr(p, ie->index), t_int); } - lbValue elem = ir_emit_array_ep(proc, array, index); + lbValue elem = lb_emit_array_ep(p, array, index); if (index_tv.mode != Addressing_Constant) { - lbValue len = ir_const_int(t->EnumeratedArray.count); - ir_emit_bounds_check(proc, ast_token(ie->index), index, len); + // lbValue len = ir_const_int(t->EnumeratedArray.count); + // ir_emit_bounds_check(p, ast_token(ie->index), index, len); } - return ir_addr(elem); + return lb_addr(elem); } case Type_Slice: { - lbValue slice = nullptr; - if (using_addr != nullptr) { - slice = ir_emit_load(proc, using_addr); + lbValue slice = {}; + if (using_addr.value != nullptr) { + slice = lb_emit_load(p, using_addr); } else { - slice = ir_build_expr(proc, ie->expr); + slice = lb_build_expr(p, ie->expr); if (deref) { - slice = ir_emit_load(proc, slice); + slice = lb_emit_load(p, slice); } } - lbValue elem = ir_slice_elem(proc, slice); - lbValue index = lb_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); - lbValue len = ir_slice_len(proc, slice); - ir_emit_bounds_check(proc, ast_token(ie->index), index, len); - lbValue v = ir_emit_ptr_offset(proc, elem, index); - return ir_addr(v); + lbValue elem = lb_slice_elem(p, slice); + lbValue index = lb_emit_conv(p, lb_build_expr(p, ie->index), t_int); + lbValue len = lb_slice_len(p, slice); + // ir_emit_bounds_check(p, ast_token(ie->index), index, len); + lbValue v = lb_emit_ptr_offset(p, elem, index); + return lb_addr(v); } case Type_DynamicArray: { - lbValue dynamic_array = nullptr; - if (using_addr != nullptr) { - dynamic_array = ir_emit_load(proc, using_addr); + lbValue dynamic_array = {}; + if (using_addr.value != nullptr) { + dynamic_array = lb_emit_load(p, using_addr); } else { - dynamic_array = ir_build_expr(proc, ie->expr); + dynamic_array = lb_build_expr(p, ie->expr); if (deref) { - dynamic_array = ir_emit_load(proc, dynamic_array); + dynamic_array = lb_emit_load(p, dynamic_array); } } - lbValue elem = ir_dynamic_array_elem(proc, dynamic_array); - lbValue len = ir_dynamic_array_len(proc, dynamic_array); - lbValue index = lb_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); - ir_emit_bounds_check(proc, ast_token(ie->index), index, len); - lbValue v = ir_emit_ptr_offset(proc, elem, index); - return ir_addr(v); + lbValue elem = lb_dynamic_array_elem(p, dynamic_array); + lbValue len = lb_dynamic_array_len(p, dynamic_array); + lbValue index = lb_emit_conv(p, lb_build_expr(p, ie->index), t_int); + // lb_emit_bounds_check(p, ast_token(ie->index), index, len); + lbValue v = lb_emit_ptr_offset(p, elem, index); + return lb_addr(v); } @@ -5157,180 +6470,182 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { lbValue len; lbValue index; - if (using_addr != nullptr) { - str = ir_emit_load(proc, using_addr); + if (using_addr.value != nullptr) { + str = lb_emit_load(p, using_addr); } else { - str = ir_build_expr(proc, ie->expr); + str = lb_build_expr(p, ie->expr); if (deref) { - str = ir_emit_load(proc, str); + str = lb_emit_load(p, str); } } - elem = ir_string_elem(proc, str); - len = ir_string_len(proc, str); + elem = lb_string_elem(p, str); + len = lb_string_len(p, str); - index = lb_emit_conv(proc, ir_build_expr(proc, ie->index), t_int); - ir_emit_bounds_check(proc, ast_token(ie->index), index, len); + index = lb_emit_conv(p, lb_build_expr(p, ie->index), t_int); + // lb_emit_bounds_check(p, ast_token(ie->index), index, len); - return ir_addr(ir_emit_ptr_offset(proc, elem, index)); + return lb_addr(lb_emit_ptr_offset(p, elem, index)); } } case_end; case_ast_node(se, SliceExpr, expr); - ir_emit_comment(proc, str_lit("SliceExpr")); gbAllocator a = heap_allocator(); - lbValue low = v_zero; - lbValue high = nullptr; + lbValue low = lb_const_int(p->module, t_int, 0); + lbValue high = {}; - if (se->low != nullptr) low = ir_build_expr(proc, se->low); - if (se->high != nullptr) high = ir_build_expr(proc, se->high); + if (se->low != nullptr) low = lb_build_expr(p, se->low); + if (se->high != nullptr) high = lb_build_expr(p, se->high); bool no_indices = se->low == nullptr && se->high == nullptr; - lbValue addr = ir_build_addr_ptr(proc, se->expr); - lbValue base = ir_emit_load(proc, addr); - Type *type = base_type(ir_type(base)); + lbValue addr = lb_build_addr_ptr(p, se->expr); + lbValue base = lb_emit_load(p, addr); + Type *type = base_type(base.type); if (is_type_pointer(type)) { type = base_type(type_deref(type)); addr = base; - base = ir_emit_load(proc, base); + base = lb_emit_load(p, base); } // TODO(bill): Cleanup like mad! switch (type->kind) { case Type_Slice: { Type *slice_type = type; - lbValue len = ir_slice_len(proc, base); - if (high == nullptr) high = len; + lbValue len = lb_slice_len(p, base); + if (high.value == nullptr) high = len; if (!no_indices) { - ir_emit_slice_bounds_check(proc, se->open, low, high, len, se->low != nullptr); + // ir_emit_slice_bounds_check(p, se->open, low, high, len, se->low != nullptr); } - lbValue elem = ir_emit_ptr_offset(proc, ir_slice_elem(proc, base), low); - lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); + lbValue elem = lb_emit_ptr_offset(p, lb_slice_elem(p, base), low); + lbValue new_len = lb_emit_arith(p, Token_Sub, high, low, t_int); - lbValue slice = lb_add_local_generated(proc, slice_type, false); - ir_fill_slice(proc, slice, elem, new_len); - return ir_addr(slice); + lbAddr slice = lb_add_local_generated(p, slice_type, false); + lb_fill_slice(p, slice, elem, new_len); + return slice; } case Type_DynamicArray: { Type *elem_type = type->DynamicArray.elem; Type *slice_type = alloc_type_slice(elem_type); - lbValue len = ir_dynamic_array_len(proc, base); - if (high == nullptr) high = len; + lbValue len = lb_dynamic_array_len(p, base); + if (high.value == nullptr) high = len; if (!no_indices) { - ir_emit_slice_bounds_check(proc, se->open, low, high, len, se->low != nullptr); + // lb_emit_slice_bounds_check(p, se->open, low, high, len, se->low != nullptr); } - lbValue elem = ir_emit_ptr_offset(proc, ir_dynamic_array_elem(proc, base), low); - lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); + lbValue elem = lb_emit_ptr_offset(p, lb_dynamic_array_elem(p, base), low); + lbValue new_len = lb_emit_arith(p, Token_Sub, high, low, t_int); - lbValue slice = lb_add_local_generated(proc, slice_type, false); - ir_fill_slice(proc, slice, elem, new_len); - return ir_addr(slice); + lbAddr slice = lb_add_local_generated(p, slice_type, false); + lb_fill_slice(p, slice, elem, new_len); + return slice; } case Type_Array: { Type *slice_type = alloc_type_slice(type->Array.elem); - lbValue len = ir_array_len(proc, base); + lbValue len = lb_const_int(p->module, t_int, type->Array.count); - if (high == nullptr) high = len; + if (high.value == nullptr) high = len; bool low_const = type_and_value_of_expr(se->low).mode == Addressing_Constant; bool high_const = type_and_value_of_expr(se->high).mode == Addressing_Constant; if (!low_const || !high_const) { if (!no_indices) { - ir_emit_slice_bounds_check(proc, se->open, low, high, len, se->low != nullptr); + // lb_emit_slice_bounds_check(p, se->open, low, high, len, se->low != nullptr); } } - lbValue elem = ir_emit_ptr_offset(proc, ir_array_elem(proc, addr), low); - lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); + lbValue elem = lb_emit_ptr_offset(p, lb_array_elem(p, addr), low); + lbValue new_len = lb_emit_arith(p, Token_Sub, high, low, t_int); - lbValue slice = lb_add_local_generated(proc, slice_type, false); - ir_fill_slice(proc, slice, elem, new_len); - return ir_addr(slice); + lbAddr slice = lb_add_local_generated(p, slice_type, false); + lb_fill_slice(p, slice, elem, new_len); + return slice; } case Type_Basic: { GB_ASSERT(type == t_string); - lbValue len = ir_string_len(proc, base); - if (high == nullptr) high = len; + lbValue len = lb_string_len(p, base); + if (high.value == nullptr) high = len; if (!no_indices) { - ir_emit_slice_bounds_check(proc, se->open, low, high, len, se->low != nullptr); + // lb_emit_slice_bounds_check(p, se->open, low, high, len, se->low != nullptr); } - lbValue elem = ir_emit_ptr_offset(proc, ir_string_elem(proc, base), low); - lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); + lbValue elem = lb_emit_ptr_offset(p, lb_string_elem(p, base), low); + lbValue new_len = lb_emit_arith(p, Token_Sub, high, low, t_int); - lbValue str = lb_add_local_generated(proc, t_string, false); - ir_fill_string(proc, str, elem, new_len); - return ir_addr(str); + lbAddr str = lb_add_local_generated(p, t_string, false); + lb_fill_string(p, str, elem, new_len); + return str; } case Type_Struct: if (is_type_soa_struct(type)) { - lbValue len = ir_soa_struct_len(proc, addr); - if (high == nullptr) high = len; + lbValue len = lb_soa_struct_len(p, addr); + if (high.value == nullptr) high = len; if (!no_indices) { - ir_emit_slice_bounds_check(proc, se->open, low, high, len, se->low != nullptr); + // lb_emit_slice_bounds_check(p, se->open, low, high, len, se->low != nullptr); } + GB_PANIC("#soa struct slice"); + #if 0 - lbValue dst = lb_add_local_generated(proc, type_of_expr(expr), true); + lbAddr dst = lb_add_local_generated(p, type_of_expr(expr), true); if (type->Struct.soa_kind == StructSoa_Fixed) { i32 field_count = cast(i32)type->Struct.fields.count; for (i32 i = 0; i < field_count; i++) { - lbValue field_dst = ir_emit_struct_ep(proc, dst, i); - lbValue field_src = ir_emit_struct_ep(proc, addr, i); - field_src = ir_emit_array_ep(proc, field_src, low); - ir_emit_store(proc, field_dst, field_src); + lbValue field_dst = lb_emit_struct_ep(p, dst, i); + lbValue field_src = lb_emit_struct_ep(p, addr, i); + field_src = lb_emit_array_ep(p, field_src, low); + lb_emit_store(p, field_dst, field_src); } - lbValue len_dst = ir_emit_struct_ep(proc, dst, field_count); - lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); - ir_emit_store(proc, len_dst, new_len); + lbValue len_dst = lb_emit_struct_ep(p, dst, field_count); + lbValue new_len = lb_emit_arith(p, Token_Sub, high, low, t_int); + lb_emit_store(p, len_dst, new_len); } else if (type->Struct.soa_kind == StructSoa_Slice) { if (no_indices) { - ir_emit_store(proc, dst, base); + lb_emit_store(p, dst, base); } else { i32 field_count = cast(i32)type->Struct.fields.count - 1; for (i32 i = 0; i < field_count; i++) { - lbValue field_dst = ir_emit_struct_ep(proc, dst, i); - lbValue field_src = ir_emit_struct_ev(proc, base, i); - field_src = ir_emit_ptr_offset(proc, field_src, low); - ir_emit_store(proc, field_dst, field_src); + lbValue field_dst = lb_emit_struct_ep(p, dst, i); + lbValue field_src = lb_emit_struct_ev(p, base, i); + field_src = lb_emit_ptr_offset(p, field_src, low); + lb_emit_store(p, field_dst, field_src); } - lbValue len_dst = ir_emit_struct_ep(proc, dst, field_count); - lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); - ir_emit_store(proc, len_dst, new_len); + lbValue len_dst = lb_emit_struct_ep(p, dst, field_count); + lbValue new_len = lb_emit_arith(p, Token_Sub, high, low, t_int); + lb_emit_store(p, len_dst, new_len); } } else if (type->Struct.soa_kind == StructSoa_Dynamic) { i32 field_count = cast(i32)type->Struct.fields.count - 3; for (i32 i = 0; i < field_count; i++) { - lbValue field_dst = ir_emit_struct_ep(proc, dst, i); - lbValue field_src = ir_emit_struct_ev(proc, base, i); - field_src = ir_emit_ptr_offset(proc, field_src, low); - ir_emit_store(proc, field_dst, field_src); + lbValue field_dst = lb_emit_struct_ep(p, dst, i); + lbValue field_src = lb_emit_struct_ev(p, base, i); + field_src = lb_emit_ptr_offset(p, field_src, low); + lb_emit_store(p, field_dst, field_src); } - lbValue len_dst = ir_emit_struct_ep(proc, dst, field_count); - lbValue new_len = ir_emit_arith(proc, Token_Sub, high, low, t_int); - ir_emit_store(proc, len_dst, new_len); + lbValue len_dst = lb_emit_struct_ep(p, dst, field_count); + lbValue new_len = lb_emit_arith(p, Token_Sub, high, low, t_int); + lb_emit_store(p, len_dst, new_len); } - return ir_addr(dst); + return dst; + #endif } break; @@ -5341,38 +6656,36 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { case_ast_node(de, DerefExpr, expr); // TODO(bill): Is a ptr copy needed? - lbValue addr = ir_build_expr(proc, de->expr); - addr = ir_emit_ptr_offset(proc, addr, v_zero); - return ir_addr(addr); + lbValue addr = lb_build_expr(p, de->expr); + return lb_addr(addr); case_end; case_ast_node(ce, CallExpr, expr); // NOTE(bill): This is make sure you never need to have an 'array_ev' - lbValue e = ir_build_expr(proc, expr); - lbValue v = lb_add_local_generated(proc, ir_type(e), false); - ir_emit_store(proc, v, e); - return ir_addr(v); + lbValue e = lb_build_expr(p, expr); + lbAddr v = lb_add_local_generated(p, e.type, false); + lb_addr_store(p, v, e); + return v; case_end; case_ast_node(cl, CompoundLit, expr); - ir_emit_comment(proc, str_lit("CompoundLit")); Type *type = type_of_expr(expr); Type *bt = base_type(type); - lbValue v = lb_add_local_generated(proc, type, true); + lbAddr v = lb_add_local_generated(p, type, true); Type *et = nullptr; switch (bt->kind) { - case Type_Array: et = bt->Array.elem; break; + case Type_Array: et = bt->Array.elem; break; case Type_EnumeratedArray: et = bt->EnumeratedArray.elem; break; - case Type_Slice: et = bt->Slice.elem; break; - case Type_BitSet: et = bt->BitSet.elem; break; - case Type_SimdVector: et = bt->SimdVector.elem; break; + case Type_Slice: et = bt->Slice.elem; break; + case Type_BitSet: et = bt->BitSet.elem; break; + case Type_SimdVector: et = bt->SimdVector.elem; break; } String proc_name = {}; - if (proc->entity) { - proc_name = proc->entity->token.string; + if (p->entity) { + proc_name = p->entity->token.string; } TokenPos pos = ast_token(expr).pos; @@ -5387,11 +6700,11 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { GB_ASSERT(is_type_struct(bt) || is_raw_union); TypeStruct *st = &bt->Struct; if (cl->elems.count > 0) { - ir_emit_store(proc, v, lb_const_value(proc->module, type, exact_value_compound(expr))); + lb_addr_store(p, v, lb_const_value(p->module, type, exact_value_compound(expr))); for_array(field_index, cl->elems) { Ast *elem = cl->elems[field_index]; - lbValue field_expr = nullptr; + lbValue field_expr = {}; Entity *field = nullptr; isize index = field_index; @@ -5410,26 +6723,27 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { field = st->fields[index]; Type *ft = field->type; - if (!is_raw_union && !is_type_typeid(ft) && ir_is_elem_const(proc->module, elem, ft)) { + if (!is_raw_union && !is_type_typeid(ft) && lb_is_elem_const(elem, ft)) { continue; } - field_expr = ir_build_expr(proc, elem); + field_expr = lb_build_expr(p, elem); - GB_ASSERT(ir_type(field_expr)->kind != Type_Tuple); + Type *fet = field_expr.type; + GB_ASSERT(fet->kind != Type_Tuple); - Type *fet = ir_type(field_expr); // HACK TODO(bill): THIS IS A MASSIVE HACK!!!! if (is_type_union(ft) && !are_types_identical(fet, ft) && !is_type_untyped(fet)) { GB_ASSERT_MSG(union_variant_index(ft, fet) > 0, "%s", type_to_string(fet)); - lbValue gep = ir_emit_struct_ep(proc, v, cast(i32)index); - ir_emit_store_union_variant(proc, gep, field_expr, fet); + lbValue gep = lb_emit_struct_ep(p, lb_addr_get_ptr(p, v), cast(i32)index); + // TODO(bill): lb_emit_store_union_variant + // lb_emit_store_union_variant(p, gep, field_expr, fet); } else { - lbValue fv = lb_emit_conv(proc, field_expr, ft); - lbValue gep = ir_emit_struct_ep(proc, v, cast(i32)index); - ir_emit_store(proc, gep, fv); + lbValue fv = lb_emit_conv(p, field_expr, ft); + lbValue gep = lb_emit_struct_ep(p, lb_addr_get_ptr(p, v), cast(i32)index); + lb_emit_store(p, gep, fv); } } } @@ -5440,30 +6754,31 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { if (cl->elems.count == 0) { break; } - gbAllocator a = heap_allocator(); - { - auto args = array_make(a, 3); - args[0] = ir_gen_map_header(proc, v, type); - args[1] = ir_const_int(2*cl->elems.count); - args[2] = ir_emit_source_code_location(proc, proc_name, pos); - lb_emit_runtime_call(proc, "__dynamic_map_reserve", args); - } - for_array(field_index, cl->elems) { - Ast *elem = cl->elems[field_index]; - ast_node(fv, FieldValue, elem); + // TODO(bill): Map CompoundLit + // gbAllocator a = heap_allocator(); + // { + // auto args = array_make(a, 3); + // args[0] = ir_gen_map_header(proc, v, type); + // args[1] = ir_const_int(2*cl->elems.count); + // args[2] = ir_emit_source_code_location(proc, proc_name, pos); + // lb_emit_runtime_call(proc, "__dynamic_map_reserve", args); + // } + // for_array(field_index, cl->elems) { + // Ast *elem = cl->elems[field_index]; + // ast_node(fv, FieldValue, elem); - lbValue key = ir_build_expr(proc, fv->field); - lbValue value = ir_build_expr(proc, fv->value); - ir_insert_dynamic_map_key_and_value(proc, v, type, key, value); - } + // lbValue key = lb_build_expr(proc, fv->field); + // lbValue value = lb_build_expr(proc, fv->value); + // ir_insert_dynamic_map_key_and_value(proc, v, type, key, value); + // } break; } case Type_Array: { if (cl->elems.count > 0) { - ir_emit_store(proc, v, lb_const_value(proc->module, type, exact_value_compound(expr))); + lb_addr_store(p, v, lb_const_value(p->module, type, exact_value_compound(expr))); - auto temp_data = array_make(heap_allocator(), 0, cl->elems.count); + auto temp_data = array_make(heap_allocator(), 0, cl->elems.count); defer (array_free(&temp_data)); // NOTE(bill): Separate value, gep, store into their own chunks @@ -5471,7 +6786,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { Ast *elem = cl->elems[i]; if (elem->kind == Ast_FieldValue) { ast_node(fv, FieldValue, elem); - if (ir_is_elem_const(proc->module, fv->value, et)) { + if (lb_is_elem_const(fv->value, et)) { continue; } if (is_ast_range(fv->field)) { @@ -5488,10 +6803,10 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { hi += 1; } - lbValue value = ir_build_expr(proc, fv->value); + lbValue value = lb_build_expr(p, fv->value); for (i64 k = lo; k < hi; k++) { - irCompoundLitElemTempData data = {}; + lbCompoundLitElemTempData data = {}; data.value = value; data.elem_index = cast(i32)k; array_add(&temp_data, data); @@ -5502,18 +6817,19 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { GB_ASSERT(tav.mode == Addressing_Constant); i64 index = exact_value_to_i64(tav.value); - irCompoundLitElemTempData data = {}; - data.value = lb_emit_conv(proc, ir_build_expr(proc, fv->value), et); + lbValue value = lb_build_expr(p, fv->value); + lbCompoundLitElemTempData data = {}; + data.value = lb_emit_conv(p, value, et); data.expr = fv->value; data.elem_index = cast(i32)index; array_add(&temp_data, data); } } else { - if (ir_is_elem_const(proc->module, elem, et)) { + if (lb_is_elem_const(elem, et)) { continue; } - irCompoundLitElemTempData data = {}; + lbCompoundLitElemTempData data = {}; data.expr = elem; data.elem_index = cast(i32)i; array_add(&temp_data, data); @@ -5521,38 +6837,38 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { } for_array(i, temp_data) { - temp_data[i].gep = ir_emit_array_epi(proc, v, temp_data[i].elem_index); + temp_data[i].gep = lb_emit_array_epi(p, lb_addr_get_ptr(p, v), temp_data[i].elem_index); } for_array(i, temp_data) { - auto return_ptr_hint_ast = proc->return_ptr_hint_ast; - auto return_ptr_hint_value = proc->return_ptr_hint_value; - auto return_ptr_hint_used = proc->return_ptr_hint_used; - defer (proc->return_ptr_hint_ast = return_ptr_hint_ast); - defer (proc->return_ptr_hint_value = return_ptr_hint_value); - defer (proc->return_ptr_hint_used = return_ptr_hint_used); + auto return_ptr_hint_ast = p->return_ptr_hint_ast; + auto return_ptr_hint_value = p->return_ptr_hint_value; + auto return_ptr_hint_used = p->return_ptr_hint_used; + defer (p->return_ptr_hint_ast = return_ptr_hint_ast); + defer (p->return_ptr_hint_value = return_ptr_hint_value); + defer (p->return_ptr_hint_used = return_ptr_hint_used); lbValue field_expr = temp_data[i].value; Ast *expr = temp_data[i].expr; - proc->return_ptr_hint_value = temp_data[i].gep; - proc->return_ptr_hint_ast = unparen_expr(expr); + p->return_ptr_hint_value = temp_data[i].gep; + p->return_ptr_hint_ast = unparen_expr(expr); - if (field_expr == nullptr) { - field_expr = ir_build_expr(proc, expr); + if (field_expr.value == nullptr) { + field_expr = lb_build_expr(p, expr); } - Type *t = ir_type(field_expr); + Type *t = field_expr.type; GB_ASSERT(t->kind != Type_Tuple); - lbValue ev = lb_emit_conv(proc, field_expr, et); + lbValue ev = lb_emit_conv(p, field_expr, et); - if (!proc->return_ptr_hint_used) { + if (!p->return_ptr_hint_used) { temp_data[i].value = ev; } } for_array(i, temp_data) { - if (temp_data[i].value != nullptr) { - ir_emit_store(proc, temp_data[i].gep, temp_data[i].value, false); + if (temp_data[i].value.value != nullptr) { + lb_emit_store(p, temp_data[i].gep, temp_data[i].value); } } } @@ -5560,9 +6876,9 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { } case Type_EnumeratedArray: { if (cl->elems.count > 0) { - ir_emit_store(proc, v, lb_const_value(proc->module, type, exact_value_compound(expr))); + lb_addr_store(p, v, lb_const_value(p->module, type, exact_value_compound(expr))); - auto temp_data = array_make(heap_allocator(), 0, cl->elems.count); + auto temp_data = array_make(heap_allocator(), 0, cl->elems.count); defer (array_free(&temp_data)); // NOTE(bill): Separate value, gep, store into their own chunks @@ -5570,7 +6886,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { Ast *elem = cl->elems[i]; if (elem->kind == Ast_FieldValue) { ast_node(fv, FieldValue, elem); - if (ir_is_elem_const(proc->module, fv->value, et)) { + if (lb_is_elem_const(fv->value, et)) { continue; } if (is_ast_range(fv->field)) { @@ -5587,10 +6903,10 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { hi += 1; } - lbValue value = ir_build_expr(proc, fv->value); + lbValue value = lb_build_expr(p, fv->value); for (i64 k = lo; k < hi; k++) { - irCompoundLitElemTempData data = {}; + lbCompoundLitElemTempData data = {}; data.value = value; data.elem_index = cast(i32)k; array_add(&temp_data, data); @@ -5601,18 +6917,19 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { GB_ASSERT(tav.mode == Addressing_Constant); i64 index = exact_value_to_i64(tav.value); - irCompoundLitElemTempData data = {}; - data.value = lb_emit_conv(proc, ir_build_expr(proc, fv->value), et); + lbValue value = lb_build_expr(p, fv->value); + lbCompoundLitElemTempData data = {}; + data.value = lb_emit_conv(p, value, et); data.expr = fv->value; data.elem_index = cast(i32)index; array_add(&temp_data, data); } } else { - if (ir_is_elem_const(proc->module, elem, et)) { + if (lb_is_elem_const(elem, et)) { continue; } - irCompoundLitElemTempData data = {}; + lbCompoundLitElemTempData data = {}; data.expr = elem; data.elem_index = cast(i32)i; array_add(&temp_data, data); @@ -5624,38 +6941,38 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { for_array(i, temp_data) { i32 index = temp_data[i].elem_index - index_offset; - temp_data[i].gep = ir_emit_array_epi(proc, v, index); + temp_data[i].gep = lb_emit_array_epi(p, lb_addr_get_ptr(p, v), index); } for_array(i, temp_data) { - auto return_ptr_hint_ast = proc->return_ptr_hint_ast; - auto return_ptr_hint_value = proc->return_ptr_hint_value; - auto return_ptr_hint_used = proc->return_ptr_hint_used; - defer (proc->return_ptr_hint_ast = return_ptr_hint_ast); - defer (proc->return_ptr_hint_value = return_ptr_hint_value); - defer (proc->return_ptr_hint_used = return_ptr_hint_used); + auto return_ptr_hint_ast = p->return_ptr_hint_ast; + auto return_ptr_hint_value = p->return_ptr_hint_value; + auto return_ptr_hint_used = p->return_ptr_hint_used; + defer (p->return_ptr_hint_ast = return_ptr_hint_ast); + defer (p->return_ptr_hint_value = return_ptr_hint_value); + defer (p->return_ptr_hint_used = return_ptr_hint_used); lbValue field_expr = temp_data[i].value; Ast *expr = temp_data[i].expr; - proc->return_ptr_hint_value = temp_data[i].gep; - proc->return_ptr_hint_ast = unparen_expr(expr); + p->return_ptr_hint_value = temp_data[i].gep; + p->return_ptr_hint_ast = unparen_expr(expr); - if (field_expr == nullptr) { - field_expr = ir_build_expr(proc, expr); + if (field_expr.value == nullptr) { + field_expr = lb_build_expr(p, expr); } - Type *t = ir_type(field_expr); + Type *t = field_expr.type; GB_ASSERT(t->kind != Type_Tuple); - lbValue ev = lb_emit_conv(proc, field_expr, et); + lbValue ev = lb_emit_conv(p, field_expr, et); - if (!proc->return_ptr_hint_used) { + if (!p->return_ptr_hint_used) { temp_data[i].value = ev; } } for_array(i, temp_data) { - if (temp_data[i].value != nullptr) { - ir_emit_store(proc, temp_data[i].gep, temp_data[i].value, false); + if (temp_data[i].value.value != nullptr) { + lb_emit_store(p, temp_data[i].gep, temp_data[i].value); } } } @@ -5666,12 +6983,11 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { Type *elem_type = bt->Slice.elem; Type *elem_ptr_type = alloc_type_pointer(elem_type); Type *elem_ptr_ptr_type = alloc_type_pointer(elem_ptr_type); - lbValue slice = lb_const_value(proc->module, type, exact_value_compound(expr)); - GB_ASSERT(slice->kind == irValue_ConstantSlice); + lbValue slice = lb_const_value(p->module, type, exact_value_compound(expr)); - lbValue data = ir_emit_array_ep(proc, slice->ConstantSlice.backing_array, v_zero32); + lbValue data = lb_slice_elem(p, slice); - auto temp_data = array_make(heap_allocator(), 0, cl->elems.count); + auto temp_data = array_make(heap_allocator(), 0, cl->elems.count); defer (array_free(&temp_data)); for_array(i, cl->elems) { @@ -5679,7 +6995,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { if (elem->kind == Ast_FieldValue) { ast_node(fv, FieldValue, elem); - if (ir_is_elem_const(proc->module, fv->value, et)) { + if (lb_is_elem_const(fv->value, et)) { continue; } @@ -5697,10 +7013,10 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { hi += 1; } - lbValue value = lb_emit_conv(proc, ir_build_expr(proc, fv->value), et); + lbValue value = lb_emit_conv(p, lb_build_expr(p, fv->value), et); for (i64 k = lo; k < hi; k++) { - irCompoundLitElemTempData data = {}; + lbCompoundLitElemTempData data = {}; data.value = value; data.elem_index = cast(i32)k; array_add(&temp_data, data); @@ -5710,26 +7026,26 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { GB_ASSERT(fv->field->tav.mode == Addressing_Constant); i64 index = exact_value_to_i64(fv->field->tav.value); - lbValue field_expr = ir_build_expr(proc, fv->value); - GB_ASSERT(!is_type_tuple(ir_type(field_expr))); + lbValue field_expr = lb_build_expr(p, fv->value); + GB_ASSERT(!is_type_tuple(field_expr.type)); - lbValue ev = lb_emit_conv(proc, field_expr, et); + lbValue ev = lb_emit_conv(p, field_expr, et); - irCompoundLitElemTempData data = {}; + lbCompoundLitElemTempData data = {}; data.value = ev; data.elem_index = cast(i32)index; array_add(&temp_data, data); } } else { - if (ir_is_elem_const(proc->module, elem, et)) { + if (lb_is_elem_const(elem, et)) { continue; } - lbValue field_expr = ir_build_expr(proc, elem); - GB_ASSERT(!is_type_tuple(ir_type(field_expr))); + lbValue field_expr = lb_build_expr(p, elem); + GB_ASSERT(!is_type_tuple(field_expr.type)); - lbValue ev = lb_emit_conv(proc, field_expr, et); + lbValue ev = lb_emit_conv(p, field_expr, et); - irCompoundLitElemTempData data = {}; + lbCompoundLitElemTempData data = {}; data.value = ev; data.elem_index = cast(i32)i; array_add(&temp_data, data); @@ -5737,15 +7053,15 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { } for_array(i, temp_data) { - temp_data[i].gep = ir_emit_ptr_offset(proc, data, ir_const_int(temp_data[i].elem_index)); + temp_data[i].gep = lb_emit_ptr_offset(p, data, lb_const_int(p->module, t_int, temp_data[i].elem_index)); } for_array(i, temp_data) { - ir_emit_store(proc, temp_data[i].gep, temp_data[i].value); + lb_emit_store(p, temp_data[i].gep, temp_data[i].value); } - lbValue count = ir_const_int(slice->ConstantSlice.count); - ir_fill_slice(proc, v, data, count); + // lbValue count = lb_const_int(p->module, t_int, slice->ConstantSlice.count); + // ir_fill_slice(p, v, data, count); } break; } @@ -5754,24 +7070,26 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { if (cl->elems.count == 0) { break; } + // TODO(bill): Type_DynamicArray + #if 0 Type *et = bt->DynamicArray.elem; gbAllocator a = heap_allocator(); - lbValue size = ir_const_int(type_size_of(et)); - lbValue align = ir_const_int(type_align_of(et)); + lbValue size = lb_const_int(p->module, t_int, type_size_of(et)); + lbValue align = lb_const_int(p->module, t_int, type_align_of(et)); i64 item_count = gb_max(cl->max_count, cl->elems.count); { - auto args = array_make(a, 5); - args[0] = lb_emit_conv(proc, v, t_rawptr); + auto args = array_make(a, 5); + args[0] = lb_emit_conv(p, lb_addr_get_ptr(p, v), t_rawptr); args[1] = size; args[2] = align; - args[3] = ir_const_int(2*item_count); // TODO(bill): Is this too much waste? - args[4] = ir_emit_source_code_location(proc, proc_name, pos); - lb_emit_runtime_call(proc, "__dynamic_array_reserve", args); + args[3] = lb_const_int(p->module, t_int, 2*item_count); // TODO(bill): Is this too much waste? + args[4] = lb_emit_source_code_location(p, proc_name, pos); + lb_emit_runtime_call(p, "__dynamic_array_reserve", args); } - lbValue items = ir_generate_array(proc->module, et, item_count, str_lit("dacl$"), cast(i64)cast(intptr)expr); + lbValue items = lb_generate_array(p->module, et, item_count, str_lit("dacl$"), cast(i64)cast(intptr)expr); for_array(i, cl->elems) { Ast *elem = cl->elems[i]; @@ -5791,31 +7109,31 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { hi += 1; } - lbValue value = lb_emit_conv(proc, ir_build_expr(proc, fv->value), et); + lbValue value = lb_emit_conv(p, lb_build_expr(p, fv->value), et); for (i64 k = lo; k < hi; k++) { - lbValue ep = ir_emit_array_epi(proc, items, cast(i32)k); - ir_emit_store(proc, ep, value); + lbValue ep = ir_emit_array_epi(p, items, cast(i32)k); + lb_emit_store(p, ep, value); } } else { GB_ASSERT(fv->field->tav.mode == Addressing_Constant); i64 field_index = exact_value_to_i64(fv->field->tav.value); - lbValue ev = ir_build_expr(proc, fv->value); - lbValue value = lb_emit_conv(proc, ev, et); - lbValue ep = ir_emit_array_epi(proc, items, cast(i32)field_index); - ir_emit_store(proc, ep, value); + lbValue ev = lb_build_expr(p, fv->value); + lbValue value = lb_emit_conv(p, ev, et); + lbValue ep = ir_emit_array_epi(p, items, cast(i32)field_index); + lb_emit_store(p, ep, value); } } else { - lbValue value = lb_emit_conv(proc, ir_build_expr(proc, elem), et); - lbValue ep = ir_emit_array_epi(proc, items, cast(i32)i); - ir_emit_store(proc, ep, value); + lbValue value = lb_emit_conv(p, lb_build_expr(p, elem), et); + lbValue ep = ir_emit_array_epi(p, items, cast(i32)i); + lb_emit_store(p, ep, value); } } { - auto args = array_make(a, 6); + auto args = array_make(a, 6); args[0] = lb_emit_conv(proc, v, t_rawptr); args[1] = size; args[2] = align; @@ -5824,13 +7142,14 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { args[5] = ir_emit_source_code_location(proc, proc_name, pos); lb_emit_runtime_call(proc, "__dynamic_array_append", args); } + #endif break; } case Type_Basic: { GB_ASSERT(is_type_any(bt)); if (cl->elems.count > 0) { - ir_emit_store(proc, v, lb_const_value(proc->module, type, exact_value_compound(expr))); + lb_addr_store(p, v, lb_const_value(p->module, type, exact_value_compound(expr))); String field_names[2] = { str_lit("data"), str_lit("id"), @@ -5843,7 +7162,7 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { for_array(field_index, cl->elems) { Ast *elem = cl->elems[field_index]; - lbValue field_expr = nullptr; + lbValue field_expr = {}; isize index = field_index; if (elem->kind == Ast_FieldValue) { @@ -5857,14 +7176,14 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { index = sel.index[0]; } - field_expr = ir_build_expr(proc, elem); + field_expr = lb_build_expr(p, elem); - GB_ASSERT(ir_type(field_expr)->kind != Type_Tuple); + GB_ASSERT(field_expr.type->kind != Type_Tuple); Type *ft = field_types[index]; - lbValue fv = lb_emit_conv(proc, field_expr, ft); - lbValue gep = ir_emit_struct_ep(proc, v, cast(i32)index); - ir_emit_store(proc, gep, fv); + lbValue fv = lb_emit_conv(p, field_expr, ft); + lbValue gep = lb_emit_struct_ep(p, lb_addr_get_ptr(p, v), cast(i32)index); + lb_emit_store(p, gep, fv); } } @@ -5874,29 +7193,30 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { case Type_BitSet: { i64 sz = type_size_of(type); if (cl->elems.count > 0 && sz > 0) { - ir_emit_store(proc, v, lb_const_value(proc->module, type, exact_value_compound(expr))); + lb_addr_store(p, v, lb_const_value(p->module, type, exact_value_compound(expr))); - lbValue lower = ir_value_constant(t_int, exact_value_i64(bt->BitSet.lower)); + lbValue lower = lb_const_value(p->module, t_int, exact_value_i64(bt->BitSet.lower)); for_array(i, cl->elems) { Ast *elem = cl->elems[i]; GB_ASSERT(elem->kind != Ast_FieldValue); - if (ir_is_elem_const(proc->module, elem, et)) { + if (lb_is_elem_const(elem, et)) { continue; } - lbValue expr = ir_build_expr(proc, elem); - GB_ASSERT(ir_type(expr)->kind != Type_Tuple); + lbValue expr = lb_build_expr(p, elem); + GB_ASSERT(expr.type->kind != Type_Tuple); Type *it = bit_set_to_int(bt); - lbValue e = lb_emit_conv(proc, expr, it); - e = ir_emit_arith(proc, Token_Sub, e, lower, it); - e = ir_emit_arith(proc, Token_Shl, v_one, e, it); + lbValue one = lb_const_value(p->module, it, exact_value_i64(1)); + lbValue e = lb_emit_conv(p, expr, it); + e = lb_emit_arith(p, Token_Sub, e, lower, it); + e = lb_emit_arith(p, Token_Shl, one, e, it); - lbValue old_value = ir_emit_bitcast(proc, ir_emit_load(proc, v), it); - lbValue new_value = ir_emit_arith(proc, Token_Or, old_value, e, it); - new_value = ir_emit_bitcast(proc, new_value, type); - ir_emit_store(proc, v, new_value); + lbValue old_value = lb_emit_transmute(p, lb_addr_load(p, v), it); + lbValue new_value = lb_emit_arith(p, Token_Or, old_value, e, it); + new_value = lb_emit_transmute(p, new_value, type); + lb_addr_store(p, v, new_value); } } break; @@ -5904,32 +7224,31 @@ lbAddr lb_build_addr(lbProcedure *p, Ast *expr) { } - return ir_addr(v); + return v; case_end; case_ast_node(tc, TypeCast, expr); Type *type = type_of_expr(expr); - lbValue x = ir_build_expr(proc, tc->expr); - lbValue e = nullptr; + lbValue x = lb_build_expr(p, tc->expr); + lbValue e = {}; switch (tc->token.kind) { case Token_cast: - e = lb_emit_conv(proc, x, type); + e = lb_emit_conv(p, x, type); break; case Token_transmute: - e = lb_emit_transmute(proc, x, type); + e = lb_emit_transmute(p, x, type); break; default: GB_PANIC("Invalid AST TypeCast"); } - lbValue v = lb_add_local_generated(proc, type, false); - ir_emit_store(proc, v, e); - return ir_addr(v); + lbAddr v = lb_add_local_generated(p, type, false); + lb_addr_store(p, v, e); + return v; case_end; case_ast_node(ac, AutoCast, expr); - return ir_build_addr(proc, ac->expr); + return lb_build_addr(p, ac->expr); case_end; -#endif } TokenPos token_pos = ast_token(expr).pos; @@ -5996,6 +7315,7 @@ bool lb_init_generator(lbGenerator *gen, Checker *c) { map_init(&gen->module.types, a); map_init(&gen->module.values, a); map_init(&gen->module.members, a); + map_init(&gen->module.procedure_values, a); map_init(&gen->module.const_strings, a); map_init(&gen->module.const_string_byte_slices, a); map_init(&gen->module.anonymous_proc_lits, a); @@ -6022,6 +7342,8 @@ lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value) { if (value.value != nullptr) { GB_ASSERT(LLVMIsConstant(value.value)); LLVMSetInitializer(g.value, value.value); + } else { + LLVMSetInitializer(g.value, LLVMConstNull(lb_type(m, type))); } lb_add_entity(m, e, g); @@ -6129,6 +7451,8 @@ void lb_generate_code(lbGenerator *gen) { } if (is_foreign) { LLVMSetExternallyInitialized(g.value, true); + } else { + LLVMSetInitializer(g.value, LLVMConstNull(lb_type(m, e->type))); } if (is_export) { LLVMSetLinkage(g.value, LLVMDLLExportLinkage); @@ -6183,6 +7507,9 @@ void lb_generate_code(lbGenerator *gen) { case Entity_Procedure: break; } + if (e->token.string == "RtlFillMemory") { + gb_printf_err("%.*s\n", LIT(e->token.string)); + } bool polymorphic_struct = false; if (e->type != nullptr && e->kind == Entity_TypeName) { @@ -6197,9 +7524,6 @@ void lb_generate_code(lbGenerator *gen) { continue; } - if (is_type_polymorphic(e->type)) { - continue; - } String mangled_name = lb_get_entity_name(m, e); @@ -6211,9 +7535,10 @@ void lb_generate_code(lbGenerator *gen) { { if (e->pkg->name == "demo") { + // } else if (e->pkg->name == "runtime") { // } else if (e->pkg->name == "os") { } else { - continue; + // continue; } lbProcedure *p = lb_create_procedure(m, e); @@ -6231,16 +7556,24 @@ void lb_generate_code(lbGenerator *gen) { lb_end_procedure_body(p); } lb_end_procedure(p); + + if (LLVMVerifyFunction(p->value, LLVMReturnStatusAction)) { + gb_printf_err("FAILED FOR: %.*s\n", LIT(p->name)); + LLVMDumpValue(p->value); + gb_printf_err("\n\n\n\n"); + LLVMVerifyFunction(p->value, LLVMAbortProcessAction); + + } } char *llvm_error = nullptr; defer (LLVMDisposeMessage(llvm_error)); - LLVMVerifyModule(mod, LLVMAbortProcessAction, &llvm_error); - - LLVMDumpModule(mod); + // LLVMVerifyModule(mod, LLVMAbortProcessAction, &llvm_error); + + // char const *target_triple = "x86_64-pc-windows-msvc"; diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index 2ee269bb6..e807e1c06 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -55,8 +55,9 @@ struct lbModule { Map types; // Key: Type * - Map values; // Key: Entity * - Map members; // Key: String + Map values; // Key: Entity * + Map members; // Key: String + Map procedure_values; // Key: LLVMValueRef Map const_strings; // Key: String Map const_string_byte_slices; // Key: String @@ -222,6 +223,8 @@ LLVMTypeRef lb_addr_lb_type(lbAddr const &addr); void lb_addr_store(lbProcedure *p, lbAddr const &addr, lbValue value); lbValue lb_addr_load(lbProcedure *p, lbAddr const &addr); lbValue lb_emit_load(lbProcedure *p, lbValue v); +void lb_emit_store(lbProcedure *p, lbValue ptr, lbValue value); + void lb_build_stmt(lbProcedure *p, Ast *stmt); lbValue lb_build_expr(lbProcedure *p, Ast *expr); @@ -233,30 +236,35 @@ lbValue lb_build_gep(lbProcedure *p, lbValue const &value, i32 index) ; lbValue lb_emit_struct_ep(lbProcedure *p, lbValue s, i32 index); lbValue lb_emit_struct_ev(lbProcedure *p, lbValue s, i32 index); lbValue lb_emit_array_epi(lbProcedure *p, lbValue value, i32 index); - +lbValue lb_emit_array_ep(lbProcedure *p, lbValue s, lbValue index); +lbValue lb_emit_deep_field_gep(lbProcedure *p, lbValue e, Selection sel); lbValue lb_emit_arith(lbProcedure *p, TokenKind op, lbValue lhs, lbValue rhs, Type *type); - +lbValue lb_emit_byte_swap(lbProcedure *p, lbValue value, Type *platform_type); void lb_emit_defer_stmts(lbProcedure *p, lbDeferExitKind kind, lbBlock *block); - +lbValue lb_emit_transmute(lbProcedure *p, lbValue value, Type *t); +lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue right); +lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, ProcInlining inlining = ProcInlining_none, bool use_return_ptr_hint = false); lbValue lb_emit_conv(lbProcedure *p, lbValue value, Type *t); + lbValue lb_build_call_expr(lbProcedure *p, Ast *expr); -lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value={}); +lbAddr lb_find_or_generate_context_ptr(lbProcedure *p); +void lb_push_context_onto_stack(lbProcedure *p, lbAddr ctx); + +lbAddr lb_add_global_generated(lbModule *m, Type *type, lbValue value={}); lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e=nullptr, bool zero_init=true, i32 param_index=0); -lbValue lb_emit_transmute(lbProcedure *p, lbValue value, Type *t); - -lbValue lb_emit_comp(lbProcedure *p, TokenKind op_kind, lbValue left, lbValue right); -lbValue lb_emit_call(lbProcedure *p, lbValue value, Array const &args, ProcInlining inlining = ProcInlining_none, bool use_return_ptr_hint = false); lbValue lb_typeid(lbModule *m, Type *type, Type *typeid_type=t_typeid); lbValue lb_address_from_load_or_generate_local(lbProcedure *p, lbValue value); - lbDefer lb_add_defer_node(lbProcedure *p, isize scope_index, Ast *stmt); +lbAddr lb_add_local_generated(lbProcedure *p, Type *type, bool zero_init); + +lbValue lb_emit_runtime_call(lbProcedure *p, char const *c_name, Array const &args); enum lbCallingConventionKind { From 2180f4a475287546b9230745343ca3e0847525c6 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 23 Feb 2020 10:04:25 +0000 Subject: [PATCH 13/46] Basic work on obj generation --- LLVM-C.dll | Bin 0 -> 51116544 bytes build.bat | 7 +- core/mem/mem.odin | 6 +- core/runtime/internal.odin | 16 +- core/runtime/procs_windows_amd64.odin | 18 +- examples/llvm-demo/demo.odin | 80 ++++----- src/checker.cpp | 2 + src/llvm_backend.cpp | 231 ++++++++++++++++++++++---- src/llvm_backend.hpp | 11 ++ src/parser.hpp | 4 +- 10 files changed, 285 insertions(+), 90 deletions(-) create mode 100644 LLVM-C.dll diff --git a/LLVM-C.dll b/LLVM-C.dll new file mode 100644 index 0000000000000000000000000000000000000000..598db4d919e9366d3331afdbb547bf1354abde9f GIT binary patch literal 51116544 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

  • E(R`8vR15kE20DZ;;>-v+4v2~L>2 z)4&w#bdWA|_snvI&To74^5%hRTTRw>ko`gs`)}JpW6=uP{#1}jAp3FkCygNORnY!l z(ET_N`_n|8dqopbDRbf#F5@Q*h8s zfH`gc3{cR(`iqeLM&O21Z-@%~e4R_67J?${RftpmfC^A_r}VpklhP)z65fRipy%rx zXB7gu1LPynsy0xU7o3cavvR@2J6UT%VRr8c*kSGvhgrO2LpTiVx-)0s_a#0qg^uaD zsDSTF40Zqyeunsi?n?xE-I~eO(LAuZ*d6g3)y~lx9BVL&g>GL0BeF$2x$gjzo1{Oa96@S707#yt! zY@k^|e;RUn1G$eEw9+2rK3wGkbbSo!dRu;wE_C;CVRav9pb(q;K;kdbAA#Lh0CQje zRCM>bMnKn>;F=Evg)8WMe{jXi3tdlO4$_70zAQ&@Cc(O%;5h4xMWEf6(DlrpKs7LE z`13gH1DJRxYcQzEsmYoIYWl8y2zEIe%;i_7z+Dc>FwpYO6m+u|D132^KfurLbTEFpwbfLTVmp$0M z6x44X5cfL5+*>di5y(*YhJtJcxfkRvZ1qVrB!7iNS~1Y`-0MNQ(B10=aW4huxzD%{ z4&R4X(C|Gl3B$dAK`R?T?!|S!1$6&II;2$)2BuiQgLI+0ca|MEd~Lx>cy-X)53@m2 zN09czd=L{{@bhc3f@ay$I$7C4?S~il!0v5?xmN(wy;DIp<8v?cK9z8YE8M^o>vE7T zboaip1-n-ltb|tv&Ar{AL&hQQ?FTVo?iGQwcfN!A7ZworD#F~GFcBks;pa!;s^6jQ zNp(ni5Cc=J;n?seBljiAAudtI}J>+UI*zy5AP})aCp~( zmGI`Ewcl@pHa$SX`#y*X3-1(2``sPXem`*s?C3z4qd)W`91V4ED=6eZ?#0y}hOX}k zhlHXVm}0#T(uMBcQ`TVj>VlQ<%76k7)Y{wyZNGyW!4UWMgP1V)ia^$je+Q*!35a_? zT0jHY0n@!lK{kWji)()uco(xG>vM=Ju7N4m=OA6^?v(<$7vw_F`c(%|3g~22g9P^c zd7$A)&H2!F82@(G=^$r<*Hz#QG(2M%O-d#gAHwY~M& z4BXz52?MpaOc@v$Fxp#%wvhJLPKZh^uu9N*BpB^2cUumI7e%kp+gk?=$Zl^%Dk8PF zEX*isZ}BRE+FQ5pBel1#DS#&X!1q(HM!G!r3{v~lIU6;+Hk*RO%Lg0^YS_Zd(FPJ; zoe-5?V3nYL5k`24+i)(tz!d9tkS_H6z-0l>zrJ84yf$d#N2@`X zUO@8idJq$qe@!6cN8+IJJ>mv9D_k^%=HG^Ha8^JrA5%d#gWL<+2ZqhPpmYv8zYgMx zFfhd$4$_70-Y9dhdu_o=cy-X+I~(Lkh zagGthITkM+k(>kCPY!VpsN;olerplLJ*8mFSY@!eM<3#zAg~f%M}&K}f`$Si?%4@q z!rY?)a!=2!4=5x->opMW zISO(F#62fLOqhEtK<@c@73`i(F!v~8bq~0sf$W}15cf=lxMvBr@ZpEJ2NaSXy}XGC z_gn=z0^**VASTQ`9w7H*LflgXbI-&M)bIiI&s?LS{U6YZ6Kv_-5Yz@yWEF>W{n@}2 zt2;;+dV0??0SDS!NELMltv%ok8l!-?)E~qIyA*WZGNe7Q9n>D!aRnTJf)EFLynN7( za4>ZJ&kV@=p9Jvw3fAqZ(6YGIfsujXcq{0#PSCm(k6zZ4ubUV_{wXj%+1Wb-G&#`A zdIKESpd~=8f5A-fx*t|X=xx=Y)jpbFHfRMGs}_WL1GKK|3&=3n86Lf?E)Y@BilWHK zEsUMMD?EC8!3$mld{=-hH1OyJFM#prYz3`{@#uB^09qacT9X4=@8b$ulXC*X_B{Yv z?E}if{F<&GKJg2?$`7xcB@7j)GC z%_De#&UFXPtAN)Kfz|{;*ATg=RIq`U;kY{RYx)L&L<>L~5sTFVqEghNwI+F1dzku(APyB+t9Uuuo*9y2G7oF34Q?&0gzD^ps{p* zK}LQ72L*mXPXT@b4+DNdM+JTX2M2yZPXm4dj{tr_M+bfZhXj5>&j5ab4)Ee4LB|As z0fz#9LB|4qfd+6Ofl6G^4kg&CsuSRSX(1{K{DPezJs!QR+7VkA`2`z6%9~q35y}FZ zp9ZNzPlyi(t61*zuy}>HR7ey`LRY{>Vvg&h~b<;6q;a0TG;azitsynwoQDyU@*axbp_Fm!xm`}Frr9=*KFz!d9rkS=uh zcIkuN+Y460TQePbKP0GNgDf0qnGW6vnLZtK|ND8c`y65J6Tsp=P;n1(AGn&r5}u%J z51Rjh^lI6_6l*_77rOgi>4Dw%7F>_;-a%_`c!N5S=@Ai)(&30aRuwvMz^&+B7i5%8o63Z|Q*DTMJggn}ZU*$60U8e$ND6{|y>n zcm&E}kaF$~o$gbjV z;L8|U)v<-Q6vX{^!Af|~pxoDZoYi9Hd!}C?vq0{5nh7c_!1v1^KrSVK=QQQDC32P@&t zK`Aeev)-8go+$-n7RddNro-KT0Vdwb>I~AN$r=PIO6HyhyZ@RlH2ja&VR!#oQ1b*7 z{@`XNmh=v7&!Lvj=RvyA-9JkU?0&4}^KsUS+3%S^Yc9a+>6#GfrvN72$@+K}_>!zo zprZQjDX{y~VD4wd;r>=oyA0%hTHK`vbV@_fAllDYCLdR(X8`Pm8d|gLI+0 zKS~1}{&&Gjc+Y?)H;~+KvG_d`s0|EGKTe?C!;tVdfQfgqE(U4QWCblYeKGe0*!^NK z_aCjs?*33vNa73sK8X9tGy+JDhLtz*(D25UUZCeQg4Pd!>L*D5%O0c)-Mz2W!0tT@ zR>HdnG-Hhv-Ws5}V+ZK`lM!fo782eHF!4^-$sjG7tcw=BXL_Lvak?AK>7iBF!~1It z)cv^1n_x(IZwEJAc$a}GR`FOY`@OUv?(YRF;jKX#zeiN8Es*hg(EP=Vj$`2P{ip>E z-wl-rM?%B*X&eFfLC+@#Ej0k`w*&_s>wl0g^ziLc1&1$=^`qS2AO){y;|DQe>0t_J zcD<9e92BTGj)L7g5$0Y7O!tby!V_2f$`2Brp!pThel&1ngjFA;3*Ei9RKV`N3s%B= z2Bp1%2v3yuAH;o*F!v=?V1#EXD5rq(7q0OF=>A}LNUkvhQ>^nry3pNc1#zD&SP3r= zO8!E)PXv;mzJn_98Arh3_fZoX-v`Pu+_x2E6UcqI=0leX7T?wclnbg2NZ< zeX7Sd&?_^~LU1_SxDg?S(_3lBi`^#YNXT{*B#O-FauMp$3eQ#)5k3Zu={1fN_ctD+7A`8klO#CW&*gtI?h@E6Ypew49b$4 zte-$hTNdJeHkkWeOR$IkUeL-7ko!SnTG+xLdOm~uWN`X115>QqLAuc0F9mf!SP3uB zWaRXNNZ%rp!OflTlioAEs5k%)vxbYboW)sgTvPrtb|twlvuIkKa*)-_lbiN@s0gp_a(yI$AIa+r=XYwxer(WV-_U; zf%?Co_1ECe9jiaK^6Qoy#C>2TygH!H95(ks`qSc|PM!tCeS$FeB@|(V-(65hfZT^` zJOwlZ2HM{M>GgaA2M+6bkS_G_vx2zqE?5cg8F=`C_Ul06R}nNm3<7p#Og22_|} zNq;Gj`V-V%c(G#-IQ%ZELgV*AK8E{3K`kAS`*5uXfX=U9hm?B9z!YmaNEf>Mc1eT7 zZ!K5}?;N!9kpnd7!~$(E3nBWq3^4Id)?$zrO>iIU#oygvr>DW3u8QPzl=>-(KzkHg zzg~yL>M=0IdL5(--Tl9$Anpe%;hlpc{+B@Fza1R^5Jw8a9NCbE5x%`3n?T`PMGv70TFZ%`6pF)W78wQwoCu=dtOPZ`rAg9mW1rFb3D$t~H zG#BA?Yo5e`56vLm2O~)^*Klvy8CBIg2PuAtb|tvCH)>}?U;#F z|AU4Ip!H`1OuUozGsOK&p!)OfPO$sUVD4wd;eKCG&j{pxT;UIza{=wgg1AZzOtFT8 zbfLTdmIT=SykI4~e?X3b=fC5u88hEAfyy9o`>O~M{s}PgPS(pHEt;&4K;bV7asM%8 zX!yJ4U=RPRAeVsLPoO_54sjJ5m|}eo(uMARDTw>uLelpgkYnKPKgQ|}b~3oXM`>@6KFyX9Ns}77lYc1{F>lUPU~ddHUqT6+X$-a#oFy)r+-s|hWFJhgwv7J z`_=?#c>hPvtl(C?kWW5?{RC26lfN%>AM`+}{gw2`KzQV~N<@4;`;WEpPfky3pPK zN)+t=wGj8CmWRh!xj}<8pk~E!R(=o@=KLuT=a+-hiv`5diZDkfWFi6`nqEvnHiO)Y ztA7FA?|U5L3Q(+i^s?H6bfLS~3gX_m5S2YB;eCwt_YC;>(ti*W=H3>Fd(%Pg?br$q zB%;{g#5l%-=-|+EB(0VCs z=>xPv4RoF`B!3^UR^5-dGu>047mGI6%DbJ6wa?gT?H$R983-2j2!R@ zar8$8Xm~pyIU1Ti_JT&{K;aGQ+hTJsw14p&(muWhrdaobbfJg06vVxI!Af}7fF=Ww z%0FpPxI)siJctQ%?-I!TV>@WlAY(H)kSD_2J0T4b$WZrw1=$R8FRuO&^!!z{@*1QI z-Mv{t;PAy-{z1xX=zc^{c@5u>cmOOx5^7>#igh_i7rJ|Q34-1G7t;TD1Mh!8)`Lb*ho^^l5EB-@Paypf(D=s-4v2d% z%0ttG0g`*+>nnwwp=(s2`&pWK!RrOTB!JdeV%^UoC<0k87zt6i3#<~f&I4n;;B#RP zh8IGI(ANtlu#>%B@aK1S1`pVJ!5cgjtruMTot>dm_Vsq8^@3#}<01Q5ypb;FMVxoC z6jbtn;ulwbuK<-Limb=M5zD&`OtHQP=|Yd+Tm0booeNgN+k=*WeuE+vl7Ie#n6UUo zp1;@F08WpNa?tns|w=Ya!4vm15>Q?LAuc0s|9hdFIWk$4N7`E z&bngSd!{e2@up4F;PZtGVB(#u!XPc0tV*D+axUo9nqJ;(vQVc_O+q*wxqO|P1Z_Xy z8gGEkKcLpX>p{BE-Jit=4sWdWFQmN>Digu=1E`q*4)Eiwp!Pmk9JRf_b{#nA(_rqu znuy)~uAq`06#lr<3$#B~4oL-RV2ZUJqzm2st9Zfg_XR8AwLwWQ$5~gv=4CK=XtFAS#w&Fp?r(#+KQsYH z_`}?ftNwuAUl9&*l^d91%?Ig14}UF)`*p!ecx6D2L2`e`RHXADCn4P502A+I{X7Lc z-^>JZf9@J^_=~~ZKQ$iH{W#XEI)Q3XMOIgEI$%w~melLH!9fj*X^&oB!Rhezv#sES z0q&J_f|%e$p4Q0<8tr~@b2Zpam!!dI!r~<(vYX)d!GSwY$m>IeKsAmct0=f!VBLc) z>AvRzyXO-m=pIgmyC-xSycUZDF=6gG0SY5eh5Jk|-GR{8CVCZC(-}H^iqxp!(Vd#0^ zAoD>TERSB+7_8=(Aw+#t6u{<#DnhWKDCXya%|E;m*?dU+f+pNSZier7WrBn!D@cLy3q536el=R|3V`54O)Hxx#j{pbbKlaQ6B_Md(Q+G?_@m;(xS+Sb)k?ClCkHUoZeMLE@dPi$Pj6SwV%>i@7Vn?!P7p4t0;0 zN24*_4~cKkf#4|d4aya1imYG3?qK!7=G66&6ZAp3;uxzV$OUP~Sv^2B;|pbo&1)bw zTfFp!*bED=OlW+A#%-~+N1@}9pz(i?US2kEu(7&>bfJfr7CSh+-h$o9dk5rsr0@c{ z2EJY*2;?+Sc!9t+opoY52n2buc~;FyBr)|ZV*>{yqp?^7GCi7X|V-r`}8pr zxP5vg6VyHhwf-^p|8PRur#m4kPk~i}&KSgKpSp8`_Wx{0Z=W9cqYiFlT6Et4pZTc= z+V8AD#G#*AFCyO}wNEXWC~BYbz6G^U+1DYpPp`dUXYhcuPgh?+2{CwhIh&(~*Jeg= zc==?3!V6TGVT6|>2PC{YAu5BwDnZ3OMtF&HfcF1vLl3VBzsU|SO^}CR?RgGHio)ye zYfyOoUV{`~%U;97tNJ`jctP{W*KBD1z%{-GJ)dqnWR`Ckm}318(uJNsxLCmXqZh1% zw+3ZC@Hp#>$?usQK;;IgJoz*k-adW+6YpdV25He`O`80k>4onSaQ-M0gO(?y;V7;L z*H4i01l%w~u8*Cjyk|;NWObbanipdIl7prGh=&}!FEIsFe@vVLa?Eko86cYR#pT6d zn|&ZQTfF=o2DTYq|AQM+$o3UM>??)XHwBx0?;!`#dw}gb2(l;bIO_=z&G;f2VxJDo zzHT)8K=n0Bd3k6O*ndYSf&IsV&Axgja8xV;E8(3u3Etjd1qVF1{lf`j!rB`Zpy}D0 zi@-krBnl35iAu(0(1zeiTuVb)fnOSN|TmzI-`2Go zhJs@a;&u=TP4B#*lnZh{uK9cD{%h3vZ+4I_boWa^+%F4B?}+(ti2Ex*sTg*iWD_W? zA?`1LiFdL-o&;_We*%Sl>_TwZi^1IA8iL*Zu6fY>imN_j1NA`_S<@k*8V06V#q+Ub zf+z-X_}hY&@alj96CD1a@fApJcmZ?&B53%7F4$BCCHGENwke?ctO*qM%nS@K<}Luc zUk&E|qruqSe-!3^T;sFQ^U~cRt}+8ttj|HZ(8GV$fAIOnvS1~=JSgrz###+_GB~Bz zgP7oy&acVJ0&)IxP&B-l4|eoH5paU{cqxG7XlQz21*Ke2dI8OwV{1Pw1C?ottl^NX z<_4x%%R#!(-TUev*uA=7CA>1A$cKmbG1l%$@SZ?FhzWDA2q?FAvVNcVp6P`J#J!0y z_a+1(0vYPwqXp3P0jj^Sxfi^qR*}^m+Q;LAuc0YXxzyELaII52*8umDb6+1JuU;IT!4lL&D(bws@(C25}F#U_dV4gFrE$$QlZc zH`X=Sk|ICEJw{+9yo#{$_BiXLNl3NcoJpXH2D}Qs3nt#l`WF4j9^ffxQFyKfR`g^eQXRB$=O8iUP!`G3ISRRmVTn>ZO-9~@`BG#P1?*BxjnrEr|} z6imF6)fSXf_RRqYojS~Y&-`(^58RMIcHgFn;QDIoL~wo8l8dD%I{zE&zDZyuyp0o~ z?mNc%bs{`h`~)#!@tFY%G);)39tlC?GZ5KP@cJ5@5s=+;2;!cjV9QuVu(`(`;+{od zCAJ(0hdy-)8F+_6@s6J;cftDBGXv4A} z0o20)oyP^qYSX|J>;Gabk;nycWGz?;Zw^ZT2;@Y_#+wpIcL+4z^de&xIKTuU4)l0A z!50x=(DF!OD9t=_o!0J1YF7)y&>nAu6vDSA8_nAQI2XRovc48*j zeFp`>3C!c=2OkXgxfVgg58N!o5`Lh18nm7XlJ&&E6stW*7rOgS{Q$e~FE}0WzCo!U z5bpZ|N-dqN*Fh1i0dZd;%zXiv?#nHNx)0ZQ2Podt6j`4`lKM3;#TpLMh3-Bri2L?} zmGG{ah`iqF7^^fW`GK5yoK+sg1gAuPP1Yr#+}6q34$2@EGr-{~2y^cOZ;bFX1;rdF zzHzk=!lCsoB);9i6l*w07rJ|^zJtS47p#O=2CaS2Jq2E}^n;i%_liK`|2wGEJ24&X z-i-pV`1itaFDuAqkbA+y8d%~VdY=kvdxjsR3*Eh^zJc9~wLNp3wPFhLdQeb{1~k5K zoV5TZ-pTqH(tiSVu3qp$obCp5x+#*=!4(QLf2D$40&+jD@g(Sc=y6CWZUa-S=^$O` z?&pHIe=b-FZx32{{{{szBz^n`F=64|0ts(Wd-X-cG;nx7De5Vo>xo-ySEYM z-U}WW?hOUyB#?VS=MG_OkCi~&dmNJMw}C0v=^$O`?p^f-?B2OxCA>W-<->8-ACulQ zfp%hp=MR_=HTegacqeNzNQ)*bsJ?meb_&?(VlbzRA~_wLKA`*gQSbA3t_mGnLB7w! zuMAQdfbR2{24;ir^RNapL7Vw`SCnmG1Z_Ti-Py{ho~sP?(@)xibi)_GL)4;FE3TlPHFYo|g z+Mxlx!~?W-z7=#11LEe6AKzCq;@dC(VIoQU;-bnl9VfT0N zZ)g2F0n}dPeKG-hN#$|Y(24JvKv4)z;_(w9jcLW>tiCYuPSyhx-ZQ-roCMljPt2ts zn>)eV>l1iZF}@IX1#hp1UHXx8gB^6!5d6{)XnE-iN}Ztm42olH`5C%?emW@4_42lX zDOPuoF7*6->jMV^c*h0k{3uX1W$a|V23F7OKMAxQ`6jHL2fF_hRPBS$j|v8{n!)Es zf%+RSlqZ67@*i$!q3P`cE`*@&-C6^!|8bp{16>c*4zailOtJ0<=|Xp}7RbHZS!2OU zczr;H3A{geoOK7Na|0^NK;wI$Au3pb=?rpjC#%{d(0Bo8L<*GgUgS;yyLuYT)l;3p zt_Bx9U;^s?RFF$R;SFksVheBR{a@)2SA~Ho)^d<8boXby2bZ6=U?sddXzrge38{Vs zI}=jBPJoGbvND6TXtD}{nqF)B!R}Xsx&NvYru!lNNzf7!P;!UQZ-K^pK=U17cd*LT zLP}4Rqr>;V13UE+SPAbzSUNbyY6>pc!TnoH5EC58X`QSqKyH$RxakoWI3-xTbVPO& zy#E0zx=`GM+8;{67IgX$_h9c2L2pe1^@kv*K&N%Gg8M_Aec&)!1ar?uN2D-<#_v^- zb)fhKwUe>MFLXaWJGkM@`wbi-tnAnVt?Ml~(C&hj@SXuh7E=1OnEW18b~u0w4<}IA zLE_f{Cf>=q7^Fp$brUEo&-Q}dZU%9?$IGt{NNxuuP^kOi`3tm851aerKzTxu^*O{< zko?VhALMKF^m*zH*!_DUD%XG<19$&1R%x)4!7(onVuE8H)V_vfFHrt{ApvppMNV)6 z@ObHfLc{MVC?r7fk83?Rbi4|6e2pJ#{J#c=AJ*}; zY&Y2LY7n=3y!>j1gM5t<|F6LA=Y^>JgVG*7&YCd^sqzCk6XyQUpy=yl1@+vH zvw}tlK*{_CFU0-ZIG{ykz+=|LXiR3@+z-j9g! zkyKD9L()SghzWLNS|{rbP;hg3TNhOGfn&V}R7F8@eb%J+OknX&*1I65-RlHLw>r#e zY{*UnMK@x65M#bc2-Jg7WEBPXdsv?|ULq zCuVRkyjJq)Wo@7Ejp-O`C1_N`qmwleG<2|ywP?aOrViE=5NA833X%x~3 z-U~8Gt_>XY?hvm=ymYff3VPK1i!mOITE2*2OP~5r!Qqcyz8qr(4cbCiO;;k9cP~JN zN@pwBQA`j=S-jk6f#fK7d52N{f>K?YB5Nu*@v(+rOP}+ffZgK+R>EtDNS{kVi4qhx z$5~f`n6UI90ZN}gTfpu)#0pIhidfx)ksgX5`K1(W8S5QvRWCopJwae4yp9O>Yy~+2 z;+~x#Cd@q=AopZK+|vYe&qQ-<;REW;gHjE={j3D4@Dy29A?=kKZ0@Ol3=SVq%f_RZ z_an?b$61pmBJJ|Yfp#Gkjz;fu9>b&NF|^zvy3pOb>jBuk zp!q?MUfwq-?ZIQL(I7`c+#3&K!rc1=;@;yR_i{koyO9~19t<$udlh6e$i3ifhGqO3 zdVk+`utRy5fhpGiAYJJ0<$}1k7p#OA)Yt-#ZtQ~e6kdZHU*MYRJ%|Z&ZwVwlfZF#j zA{xNq8whi6gE2<5$S zft}t4bGj&!(~-+JQ&3I0&b}nAxh>1#Ngg#kQPl=P%rd_F2wy}F!zTVB7z>-{YydB z1IYd0W+0aI0_qNf+z&ZLKn+Z>&Ijp2cfS_Y{a_`$fBMke-~XNoJXZn=|Dt}#;H1KF z)&!V%C+lU97ERVieeaoG+)cz%V6P8A8 z)*VRrL(&hn{v~|_Yv`*H`pdv_<^%1COSz7~kzZuN^SM{;G-xQRR zLGH(uen6+Og7yba0FU+_15>Q+AYJI;zv?#F{cFKWc;|o;13bSTXXTiPbRUBdBKz!XKgIwJe^DIne+qI5$o-%h0#I|-0I4kkIuEEF68_C2kAn0Z`Vz5_{xHn@baLAZ#5`TA>msOV#30g1rol`LE(F&671fE z|5q}Cc0s&kz;y4_9_V;FuKGt26274O5IuT%)xd{)v9^PBp}Y6i4X}H8!Af}lpq&45 zj5Ql{TsXwN`5-3DywSBDt_d!gUdy&r%si**l@56u4@Liyd;oekGNP*G= zc-bo!_kzn$2vo0NtWW9(=|XpJ)>Ux$ zVqKqfjP>?ZxO?w|m@xOIK-Md{g9cP~l!D!x2y^cP4Gj0Pwn5zs?nYw?U(if&nj&jC zq!vyCQ>^SDUFh!Jbp`BRU$7Eh8&Km7DSTIh8vT&;yB@@Zxz_~Jo)!l+@;D&wWrVrc z0MorkJE86cm0Q@#U#NTAA+cNrrdW@IbfLSK3*z2buo7M$wDhnWln5a1-49~I-0K2K z59*-w5K#gS--Umm>7hX#BYaa^q3*?%enI`NG(}d>d1IjSG{Aw!>JQR|?%t@&;P5>Q zR>HdnEqt{>!=DiM>Vudt_illNFQ~o#Vns37y^b*VUQokuZ*2?Iy|~t|f%;vb^b4uA zrhzHebdWA|_pZ7Gc5f|M2`^~y0=a*68&s)5+}$}{k?T`c(xnjV%zTJ6)o6zh4AF7)vAg1EO9tb{iQ z`C>B)!Qrb2bMFBa4EO$pwI{*DkXYOc+Rh2;k92|C z!)jm(dw+Y@1#tNCf|c<8=|t|29AnMyg1a{##Dux`ODA|c+VxJ*`S%52_a6KOO%DQ? z?o|cl98mb;D$k(jJs*d}GH92ZM=xtQNEdqezB&(f?_7w=9<=oE8&v2*(!+lc6XxC) zNP0*Ir3VX$dlO;qO;E-NUsq7fg4~NMzxhDYFKT-|9;6H1y;czSVzk#G`#U-&zGw0V znFZ?afhI0M4puzQ+5i*pWc>{3Z-7Q2U)1JDX$6O`dMoJs%Up2yKKubq1Pc@p?uD+mL%lzz{NGz9 z591>qo#6X(pcmPoT%+@K!X`%0)i0o^C@{X=ITw8UNiXZu3E&%XIy`z=e}S3cC3mdf zplr}WJFbafB?mluS=k{>&{aAq!fO~kI$c3m=?FqZL09R#g9Zqe%X2^%=Ya0?;TLe7 z(HXmfA9T&man}=|v$Q~W=78?j;TM41qXTNg;k`o#R2hP9wn4i?2W*xAblo0kkO;bN z&qbvIY_p~-+8sKeJrelu&;d0YK{lb?p#!=+hXFJ#W}(l(zyP{PhkEztfO<5r`*SSX zK*0k1WfbQTyx;N+d`PGcDdvo~Z8L-`#BhdDql>2fj z6~OENE`cqE-}R3$&z<@O?Rt62S}l&VOCW_`*pRyr2(uU(W0e z;01kX_vMIILfdDcasZTx(8qUR`{|oN5ytzi5k#?ygLI)s3)e|-wA=+N;XTs`D<2@^ z-_}j=^1&X&1eFh<^6W?>xO`aN_@3!SL?*a=DEta79~xv3FlvfQ*u^tEMLU(V}39x&4!Af}lpwth?ShG9f?#%}=Veb6`DSxkn%HI_kVD}2b z+tB!-+YYSGwtAo})n++av1Q>*y`V3$H4A=+Y45C zrx!Ur9B1|DgRVdUwI71|pyS1$^8$Lo31V9>Xg!hnSLt zK;et4ynxR4E{DYOG%&^b9;6FBe6=9XtpzLL%|S^I$60UmA)WsNn&JQ_h~ummVB(#u z&LAzCtf0jHA~yvb^v6Cylg3nW6xW0IJA&rdzk){gK<-EF@AGeGo!a-FX(wX?=!BJn z;2L`aC}lUFVD#wa&4(nyBCu0gGkdYjhQu5O2fja839lW( zEX&mGJ&So1e@E zO-h0sdYm;M!~_R7zb5M!$owQ|z03;^h>H(?ga)z!l8d44y*mNwUR?b<(7qMW{xygz z#K08meUL76_i{np3tHI&ny*H4Z!~DF5X8OlASTScPay6+4w_GmNCJm&BFw!FqKFWN zx_2+gW>9*-HQowZZVej$0XvlU8JJ>S57LG1-l&7n_4gjVy!$|_j5JxVgLeI0N(8$? z8|I2%A|O{Fl?ULU>SbNjhf*Gx-&_qY4?qj*q2)ow1f=o+wCp`iku?rHeZ{&Iq8X(; zIC%gZ;Wl6uyxO4NBRokSXPpjOKLc)*`lx_PhGVRtDKKy_9%t=>N~U$Pg3d$d*JPCe zY1ias1Nhv}bp;0(lC z3ek+>pP&1|{y76y!MhtJiydcG2aTdIoN$7bbjMghRXWr^Qc%gXPS#$KK26p&V2T%% z>t7fofMZA#=AQ^*6#sy`roF7Qx={Qx{W`=ypa}%1e^zv3`e$A@sJdpI3ek+>A5DmV zYQQRZv%66%^y}S_1Kbe)xzi1;)sM5Df=Z@!vf6_5X|l$EDPGs^_e?Jm;=%q|`5qcS z9YQGn0Tje&sy>K}<7O#krpfc+!d4Gs(x|3vNs$Ilyxe{O>u zgp}Ugdq4~38|)GO@#%s4#|kQ$*2%gSq)(Ie44C5G3i8i{IIw>-VgA`6h~gjcP+c$U zB2@ppz6kLT=l~I@e_mjTpL<}}vMz;aM)6PQUa)`mfK~9W1~~}HKjL5~D>x$jBZKe{ z7gRE>leHG4Pm^^HnBr{(`R70^*gq@ZLF4Cz0E&M=y-kl^)~XJ05X0g}8tNa=fGN~J zH##xn=N!2C&AJz&8O1+4_kjJg2CRa2Hp&3saaQ)O_e{pd#z^tQ(*=*8U!4%iv`*Gs zkUmY;9x%mQ3L5wO5Cis)Cd@w)sQv*r)q7dF+EM%y4lNHr2e?B0bD|y7Kl|Fj>5Ubl z8O1*@cZ2;i2dsj(yB#(Ed~b&w_=1R^Kkab;yn;%mb+X2S^l7rzfGOV8_V-LL6d?Xt z`4$>K9{g+!(E6ekG*bbpFTjZo%Xk`eeI7eFoA7=ErybUIkS_H4LJQ*jyI>`};Pehp zUdLFiK`97QzuAMB;DU@_ll4e9xIMfal#VK*!QmbVai_=21$>~I1>AfGtuF_)cb0ZQ z>tk>shQ+22yTUgTZN$ekwNVjNF^i&rdZ=a zy3p%2D- z9CT?gM{ngp1RXfSq3*v5Yv1DPZ$j@AI}Q#w-fdut^*u-zy8F9!fa7~ESP5?rC>JeE$bAVe#G41CDQSNZ*J6JDL&ZXa*!l!`CZ=5+KqVm|or_P~Sw6H5D9g ztWU57?fdOur#XR@@EZ2Q&-Yl`3(Df)Ui(TA6YMI`efFR*^n^I)&}(q=vv^s^jTDB^ z@S6&<4wU}DjWR6x#SzpiP-IPqSRDqYSeJuzp@*Lr#F4gOCA>PI$b^UAan>2VNb$c2 z>Dg<(SZ#Xz8!ys<=c)67e$?c#7fYkni*6)udqLjDH z(vbcoQhUV$OaD?2>|EBn5X~s%ZRIvZhWZOm4n8Ul{F;5o-`0b;$DKcb7Dj>U18`rAe>-a}C^;w}1a*NygR^On9$73%w39Uf z;@WzU-cDx}*Ph-Ab?puY(Dm27yjmb<3V<5BoU9rkwkE4PnBp}6xm+9K@+B~r2Xmr? zFf@H!oeV7>z>Qoi=>vM+XFJ$oyk%gD^*%@!diu};IdD5G$R{4XygneOz|+Su*4^MF z0Zz&LK}>K;=GSC(fp}aUQ3 z^8k)RMM2XPmw&Bh1Wia7ALw*l(R_fJUm$ixr>h6Jgiljs%>x&AtfG@~p9cVHpCO+I zUQT=F0ISt-ec%EbZ7(?P3c9PE;S;~WAy6%o0LrAe z&jSGUp+BLV2LMvfPuKGRayDT-4*=BvaN*ZzQGsMSo74Pw&I5R{9shX%4c#Qo2V`=9 z=L4L;4J!D2z+`Tu`2eKz09qmK7*P8JyrdkOgwr~~Q{69Qf z@r4{Kc#Z&+dOeKKyeOXmo+E&7`Ue%%Pz=qVs-Te?P<;a$m&7(+32GjL#vedwte5v0 zm||52=|az+w>E(D=UK24-aX&~+C{|x*>j-wBcy&_4r&Qm1cLMD#b?m`nZSZke(27E zmLIsfdAGU`KK{EN#DtZ1CXf*` zanOiaM*!HpjWG9aV8(E-=uD`4L75a=c)CLBZ&3N^(aS3aDWBCry3pO*wH_RvpqdUe z{)7^q$5^9#;qHwGF=6g~0tsJG`|8CFf3SNMVeVzXbnnsWQ1{{*e}b+D28{-Q?yCi- zZC3FakRlOflmD%C&wHJ?VxT1`22^-AQoin zTM?*Jp$u{Ko~O`6;mrgNWN3PIoegy_uK57ydXsd>s-iG3#p({yg&w|IAop%(wFN8T z)j?Tbdz^K~#P>{R&z!LZuipn96aWt3c70$;R|;3$0yLBe!zfmG&H>T!qNx0nT)0W28pLBvQ7sl4Bj>{ z#kw4%3*EiD)_~oc3s%Al9xp=5f2X_Q>G?c}33G1t<<&uR?`)7G zA?bHMhzUy%DiHUwgWUVW3mmkCF!w58x;GV+5<%|8RewO&GhYW6#JtDA6l*+47rJ|Y ztpvMwEm#Tf9F+F*aaNAL_mF)hp!rWBXn$JaI4c88ypy#Uq(zgp3Dk79g*crJ=JeFR zh@eIe@3)|k1GyhG&w?$yq3!+c5LYb&Q>@=Xy3pNk1#y2bSP5?p$T6VQy$doP@S+zo z+zT%6K7m^Nkn?>Xz{ERQgF#v}Swa2d7qyOtGqibfLR{*K)A?d%;S0Ye3_d z;P3~HXB=mJ(TP;weCh-ZBY;mBpl7Y5iajsP>1X9|xFt zC+lWV7T07w1j@R$5cj*m+@Jajd-%J8dQKqsgZ6b`OaGw3T~Pf48H8;EQ>^MBUFhz& zg1A2ytb{iPG~Nmh|C|3A7>==?Zb#HVASS51apc!z4QU6DCz*rBWjox!f&TCTG|)Hv zL^v8+KC*&p5|DdA^&&R+Lg%MZ$8Y#Sy3pO*wG^^MT|rOzRyz%?+1y*=s$ao=9B65chS%ny!l zRQGLxj1Nx-6$&d{z~T4tJ~VzWe8+U(JZO1_t2}_-7Y4eY8Pr||4_2_+&&SeUUbPq; zerv%>c;}#uXB=bY2F-wig7G*jKZprRkD&EcQy}9T<)HN*Kb*ntod|QU0;YSP!rY51 zJae2niqwx*s%tw!IR^Kbokr>wx9>-l*fNPIlR)26i-t~Y-Z|DM# zUe*n4YZyI_yPg28Ve;s7-Qdy7yR{2Ch2wGDbq93G%4%>5V6}p1Ucj&6x*(0e-gUtX zjYW`)G7{#kX7uP4&E{Fn=xTi6nCk@wk6zykpZV)uAH4Xo1a#v>?F#{q-p~s^-L4Nj zdU-E^4CHqXz3}217TH@c*<-BlKr>h`Hi8s&hrR&cJ)-N;?R$ZUt4ESv-0NUx;NQ;r z7E)i_0TuoNt{Wf?P66Kopsw+AYG~pEx%epB@rn9f!cA{$}i~suBi3(c91Ug^5N71Xn)Y7 zm-k*5X!RGUEuX>wDs2-%6*Rvl>oc&p544Vcp$>8OfxFNQ=>G+tK#<07!AB?bvS!T! zjk>|tFSYN0%(sRj=8rkB%(wmn#ZE6P$e*5QBes$-2OA&o=;b{PE--vl96DJ+Z3uo% z)|Vg=P2Njgpj$TVK|bhYH3d~>1rFfQj)XWn;^mCbtPE)Bx%MJTdIpaU^s?>;_v_&4 z`2jN|J%h&Apy~N&2WEQS4PF7yx(lKiDLqHbhot8Tv%%?kHYb+!tg;9*JwE^$2u{yz zSY%(pWRJ1_>v+$^_~PM0(49CWr)R!4aC-g=sej*q>tC$tnGv!i^9o3XChucV&C6#G z4q^8@D;Zx{eL|$?X|2fVIRokbT+H+W3NO!2czOxnhLK(>u*_%YfwLd$)fwQ#hBCtc zaxOH1gVT#ODEoni_d8iPfS8)Bkzk6~sS}i5)`OaKovceixzoW8?3v(x<$9pEC$IEvtz&~Dopo66G za?6jB3?ALQO`!6n7d~E|`~_4%9oF!$zF#^EX}tU>q}-}8H=T@CM;X_dHc$&)ku?=kabH;gDP2&SrtuJ`IDwV$8g@aG$T8NXprs(7 zlyaPPC5Q=bm4fEuLCyW07T_=wf;h+G<-^wq=fKvlm@b62_i?qKq5B0v^BEq!ywkwN zGHW_W7kYT@nhp-HTCft{9JKM;+n_}Z5SQKuF~Kh7*JMqBjMsuzuf5=aIC$fAXe1jT zIT%_#Tm1k3-=p!(0Y(M}k8W1>ld$r60k~BZ&Ee6@`UsjB6Tqt;K+}C1(B{Yms7!@N zFE40)l}9gYpx!1%kdh2`@KQ||l>~62F~055%X)ME7RKW)Dg~hB0-%}30+1AF(NDnq zEsXqvt|vS?LB+i*1HXpr0e(T>8y=mmA9|gc_%(bVbh`e4&3Nj76AjFU2 z5uf-4LR11EbCRwNphnRreu3NueofZ{{F<%`{2Hzo()dNr@@u+6uI2=3v;dv?!Y`1b zVgNe54>AWDqv8NMtsSyT-Q&3H1kjlP{FFe-(6i^>g9p!b?inhn`# zv;lN;RT}zv;|3m`B`N{@0>+?z1f;x-Vf@4|;H|(f7@|@D>OxoW3zn!Dr16U!|tns!gU2S|KM8B0&UN*gBLdQeuJEEzy( z_u4Lpx))b|hmE&FCIX=6hq;4vp}Y6gWUzZFI6q7R;@*Q-pzd|RbZ;oAqyd%ZxY~=* z`3`l+D2*7HVvPssLU*qe#JztZh3FelX9r%MA7hOM4Z=ghHy*@D-Um-H+^Y*piJZ0#g3B&& zc>_(q?vN~I2Bui`LAuc0yK5rYy|Q2>ygcB{2%8^2###+t913=CJ%|Z&FAF4hK5u)^ z^nwH8-i4Q;>A?Wgy=Orw5#(N6>jy!NVbFdJh%3~<6zhJFE_C;DLEOs=R>J$I4Rt;# z8{|kxddLScVeb6`+OpZndL8862t#oAI>OxB@B|}#zk*s8AooJXa4^qfgU%1IgDVN% zZ{UKDl^s@BAa6g4ng9;pyI>`}XVCWlfx2hV`7is<_e=~h_a5m0kMAxA@BcFZyZ7NG zX!u@ujN#tUCD8PXYkW5lGM-irPPn{jV2ZUIqzgTKSM`J4>kC%G3)&?CD*PeqC62MK z1`YZ_!goE033IOr==9P~aQ=AlLm%wkMwojQFx{&PvKbV29$iZC$6>JQR| z?%rR0VE5XBmGJ6-_G2KG53@mzgt&J;hzWDA3dFtapnV%25cev=+*|MnBYZ_cF$;1p zxJiO#zNi-xzT%KliVaM$=7V&hyVnckUXTkx^S1?{k+@FQFtB>w^PoDNH4@fNhr3~6BZ z8YA2*1aj|XZLoW7VD9~W581t2=RnghuKE~s{sL${3Zxde2Bui$v89JwUEuOzFIWlh z8npUN8k9gF<%2wk2`e9#fRaNeYda_@Xh59$@H{jr1VEgM+<$c?RA0dESAb-6H!#JT z57LDmzFH9X>VlQ<%AmA&j3eOKP_p6SI7O|YW{VUB)q2jOU_d#{2fO+e`x*Lr^FcmX>k*1v&{ zY3OCW4$_70-d!DF_ud67;XQ-Wo;c2G0cu2m{0>?_;RND9!rK7E1c`UDE(U4QWZeX6 zTKv@jJAK(XXi`x{ayoK&mx5+4LGH)Z9)hi>ZvlsQ7?@&h2kAn0|F3qi`)$EWcy(Hk z!}~bvjF$IIpfwuc@tQ>~pvEV7{(b^Xypxp~q(zfesO3G=3tNc$&0y|Ny^RQZWcQ1L zRuX{Rk1PC}L1ClF%3cR{|F>EY#hMP%h3BLn@9kFvU6_qzm2s zRc+w#j|D5?^+9XjfhI+u?YsTR=j*sY+IOJ(_r(b{u%i=Uj{a~H;b>@j|GNfS9)iLG zTYU~q@82P%25A1uqnGtRNEf<$Pql*GdlsT{4_f)6(T#M!oe^jw)ajlQEgoO8Y$SBk@FvS`U(uMARE{OYk!Af{* zP{yl{v%ctg&jh+t4xC;-LDzdI9A|w16YpdV25He`O#&_T^;HE2eH+aEr8f{kkL>>1 z)ll~n2!GW5V$VUk(B1FV0uFzy`^Ap4zUV><|4)eW{Q*q8lQkF;{z;(l?^OZ2Ukv8{ zt=F-;zZB#WP=3Xg-l6B!g4P>&^zycW69;QONEf>MyPCo7&jl;tjR83Z)S3miP>!>n z=z7lt+M@;zf6$a9xPU*-dH^Qg$!ZMJqR9#x6@76QbSh0R@3Pa-^z-!^cK6=}^;|*j z$F*M%G;R!9Zw+aPK-(|pLAuc0f2s-WeqV@68~FKBp!FBWSXYA%m4dVf)`OT}=ksf_ znt+-wovh-Zri%o`(T*@jJ0Lk4nqN~vHsf3kqRS zf8hY6y|oOio>v~+-dc&&-U7J~(%w=AIT+GDWCA%lSqYp{?wo>#boW(oNJHKG7GyKX zz2FrMSo$~6@dVI%BhY!f;A)liJxCY2d$StB;fu9@ew;O<{XNryHbzj9c#O3OREa{$ zmjsx2C+lTMefkJgpRQE|ySfbK>Z@14t_EjKFadRcD`=zuDY>33Km~X0UtPo8L3N@PN2?<4I`JD7cIWWT<<)nS&s+3i4WA9gxti3wjS??9N4{#F!w58x_2tbW{`Vvt!D{= z)Q6z{het1O8Q9sZ+d;a}-TSK+>|W4*ZP0!>l>W_e)*bCg^$DmW4o(2aSvSDMJ6V-M zS~OXWKwTYMh|{N?fF_01i-@2`&TmUWE&;h8v<@6wczZ(J&kku7eS^4vKS&q4`>i1E zzYA8vdj{kfcz!$1YSDq@ekV{54N_hhz{ERQ7lX8DvVwc_cWp9*Rj zf!q(C*27ZXLDS1}NUvZTm}2b*=|XpZRSh`&Yr#r*b3la`lKXG8A+=vYMH)2xFTlh* zS)D;zG+Bc{<=tKxu=}?ihlc;t^Vr?ryNf{i0V>Bq`>`RRDh8%l^Fg}M-M_0E?Eb$H z_rC!-2JZf2tkIxFr=VRw#q zed&<&A`W&aFB_O*H3#WJcP|&jy>B7zy@TT3T;Ur5 zN#CgBYx_aE(A}>EaX&`;6yp9Bt?!u(q@nKL1ZoXJ*0V2wiFdLJgPOFOtl&|>TnTW{ zyTRN)^)z<(F9n4ps652gpAUk#e>x;o+rSj-agZ)__h*%Z!#@|Sgf|8hm{`(B3M4tZ zg97=4IM|UNk3a+Y!zqL#q3OdE6jC7ffzG+WR^Lp8xGx;iYI6fqtkXfd(A{^c4D3E# zuo7MwP+)=G2MOPf*7r;^tf2XC5+ZyXVB(#upFvGRO;&KLnit~qHki{*k(>^xFT0O~ zdi1W?@ejQI!GVc^fnT%W1;1v+4Hte*hZ7#%tiP7S7DF(AX0t&Hz&3&yy{rKln?YN$ z7kKpYmV%i+DjA@=-N9_v9ia2H&VW{(_^3E|^s-ukg4FQtfa`+et{WiBFlsk= z9Cw`oYCVD$OU&RG^yL7}Q$~PPg4RWVwu2u4N%L#?3V=3ogVs`f;MZ>qJDWaAklj zsb~eAo(h^>a{w=!0NpTe0Cu!y>IHty*at4)6&RYe2A}u^OC658#(>S&Oikd|j4j~T z^cCRO>;S%TbpWZntps01^*C_tr$gffTz?EOa`GRNnG>=u;y~${6KX5^{4HqS98`Zp+E38=ne8B5=;`@aF*rS=tY1aU-$sK5oj}F% zan^Vc6I9%R*6Tlkw68()A1^#a!1=H65H$Z49LLCip&*+ZBVw4Z4?o$DEuRB@UL0xMOi2EKMgod91lKY_RpHR=6W?ur! z@}N_5Q4X4Bxe8iV>Y`F$e6q6_G|2(lPcUgCs2l(tGW`_H1g}eFeF$ZPR-@`p1}ixL zDhD7;&>_?RcYq87A2OW-5d|GGz4F)=#!lZA&||K_2T4O3z^$O1;n4}sV;;S(A3$eH zBOf~r+S9-RUT+0CXByNN0-ZgL_pE8qL^y`~nUN{DPhW`~n^Z{DO`O z`~nUR{DPha`~n^U{DO`S`~nUM{DPhV`~n@|LP*dtfnUI(fM3wDfM1{iR1kqo(*TV; zf!AH6DYEVWPkNx7H$D3(Xwg|CNO^NBC_-64<7*&w=n2oT0G#kj8ldM*dqB^XRz3)x zfCu$^(mGi~8(?Ql^J}ukfz0VeI$U}(xH#FOQo+Q);L&S3uN1Q83lzd>{PHfKv$lf; zKubj&KC07wAzcboW|8+#3s4!s~p0qVeXmD zfpQ76gGVoK1Sn9Q<)N1_OUr^TVZPG*o{7<;lXVZszuQ>ZWI>lO?+0b75 zVW}E5AyLHxGPRcn929DhpvZW+bw45~!0F2Yynn6vjleP256m9NUB7@@OUGUR{Qv*| zKfi$M2W-NEtX^QN!Lp$CB8nzKRtJPE*hoqRzMkd+T13)YJ)tI5iOkOk{Swf9#OXw(#!e?K5(!FrKR7G!;f zki}x}9fT}cFRHzl5VByssQx{HkOk`n*~>4;dbH_16D-IeF$lV6;4rAXI_~-fqzFkC z6y->Ef})#WkaZQ*WRNV9oyS~1F!BqsEu!UQN~>Bw0+oO-QondIec4 zkYq9S<{`(yjUL6XJP8-*zgGUAx)2Nr%o)&QvNan~OpQE2ELbN#>p4NrbSRtKmW zBvDl5{FpVs{B;G@T%hs|SNRKC#{oJY335xqGcd)f57LERzU@i}*B58ON_h8xDld4U zbBt9Rbcq6}7(ULb4`RaVi!G4*6sChJISvkRA@p$vv^+N0jVOfR`zOE?GsycVK7mY7 zWc>=Zmo)|3P?J2wX_vrCcn>y0*A*RSHEKdy)nJ3Dg|%Sfovd>~F3V#FyKFhcWfm`| z?LxQ=Ts*?|Q>+D94+>9Q<4@52=g%Qdxdx_Kw}W({hi6tAI6U`)mGG`X3D4uK5>4-! zKy7I7{HPMl<@}ngi$THB$=cQk8lPl>s(P`O4eS9khzC4gUfqf20j&Lt<uW^(=bl0=Z*>be|2VZ3XI6fchS=`)ojQg13(Wn)Cs+{L%Ut;En_-_t}8b zDE>YMsCx;r39XNTxX%VOz76VVQ13n)(1|v%{>6>ipy@!A{>AUpSo#;sKe(RO zXQQ2o=yKq=&t?P2Bo~z&*#45x27Uq84$$rr2gvRc5XVI&0KB;*1+K{p-dF%#F{5c2mGC;wftF{-Shs?%o`saMJ3&lvDVx^GssXwl zbtMzH40yB!T)bMmytoyq41m@Lrmvvwaa`*=q34fHpZ}f-)c*uitmYtH=*eVNBG{3+ zU?sdU^Fb{m*m%-$))VvJGl80e;PUIzd}#lNUz0U>K6paeY(A*`+5}bg;w>ZC?PUPj&-G2;Bv8ID`p}YT80@(d)!Af}N zEJk%d$CCF<33voXi%>AKTkis6x{h_a+?g#ZN zK!qy$cph{KWH=qoBKigAVA>{NfpPy6l*(37rOhi;vwM= zR>C_6E&XsTK)R1dXaU0glOgG+44i&G&4;LZvGzYZC}XO@+<$cwcK4?~g}NU!Zi>zQ z!I1fZa>%X9X<&-A9i$80{j1`@?)L>N;kAL^zkL5c1H*CF6*J#6fzFBmr~geeA?^pA z_G>&768(y#0YU z|AJJ#(1p0)4d(vPjo8C~>2s+2LFblX3xAL}X#8a!IQ^@EDc1QQUFh!Dg1Da-tc3T^ zT-5ZRF%Ob5z~Nss4-)>M0qxIo!Qp>xE-3tipsHTv{so8swT;m5pSl6N`+Y$v0o4A( zwH^a{e*JgIt-H^_6stc-7rOhiV!+{l7OaGK56b<#$5}OIBe~xQRGEUt_4qYeH$yJy zoi+>Pej%u;7i<53-Jb??|JC)_-TxI--GJN=awoR%hpvCR4sq2nFva>Gqzm2stD?c~ zUkg^kI|t4E9J7(upM#tUuB!MoStmo>54ySdIP0fb5LGYU{sz1M+XiU(i{fzqT98XX z?$-bhV1iqWDCIx&Jh1H$S1kimtm{F#(B1zk3haKY_hlbveF1eDIQ@W}33Goj#QkC5 z@V^9A^+Ffo{x+EVL)T#s|IkO!^pC6l1r1Jv)+bH}r~foC#TpONh37$)($6HQsu#Jxz~L_jbN|$}*xm2?5bAzVYZFiU5uXNj zKO2~0^#|!fcYjtSIQ-v2?w`GbcK@vRH2Cv?S;4Zq3-3zkzSzd71bg8ccJ$wy$9(+ckiwUuzRuIrvz$}LB=1E?|YJfxGxdr zJ_k(qO$FHmO3%2)AEE2}QQfy3qzm1BQY5>t;s-eV1Yz!5uo@%$LP0eL$bFzL54QLQ zm4j)Dtn8rvKrin%NPcq%=|Xp3RX8~O?t+!@oB_gOn%~{ZR2x$EL zD##_E@Wz#XLG4`7d9@H%Z39!R$3eQ#!#fIe8h^7bsIGvFpLd4g89(=F!7_dhayc^x zbo@Mv4Lp863)BzoWCho++gL-{z~kp2pKfP00=tG+5yXQJWr5-pl9e?fQON@`)%Pnn zJk%iJk@2#01!j1Fj*j>W>S=(&12pG}Ej~fLV9@+Gq}9R(rdY$@V(A2Wg@DuF+qvM9 z^bWjz16hCKF%MF6g6k(xGX|6ZLFcQ$#5-9xgS2R}9-8}}=|wN-RGMDiZEK+Mxpg^q z_sfEM8X))MTJH#2#|diRLxK+4KHvxGLXXd`V6gi!+6NH#gW3nWptd$>ehd`nQ1>&; ze$NCJ?_>qlwEUW^O`z~U`xzYmZZP+MU54HLOF=zVko!SHJ=nq@+P_6@A1nvyLU;eE zAh7!}+6NH#gW3mRcY@pxYab{cXMHdW?*3pEB}JpZJ_)M z>GiRJDc1QQUFhN86##bsTS)ld0R<+wkb#81$ISOkJGi0a3qjESAt?XC#5-9xgS2R} z9s-5`*$-g%x53>1bukY2KZCY+aFxf<^{3Y%t*&EWigiCo7rOgT`GeiR7OaGK4!nH^ zaX-hj_e>Ar`F9#T{V>49J6VfCS~OXkKutAXi2KE0?l;BZ{#;N`4;22m${*0U52$|# z2~{;P#TpONh3CPk@PcvR(#h(PVuz9hCk- zN7VH4E?WsrKc$PXhd;c%ge&}^>z~5G35VAWOtF?@OFv$I;PBT4E8&%ak1v4Se~h(z zCcM4W4`PCgPkv2S5yXBcS&xF_k#!HYqCy_xo<(3Kyc1`@-NOnB8c>aXoRt&Agt?~z z6g-u0!NGHA1vpMEUM^gK2p)uczzcPe-E(OMc>MM%*fLfdZ0_mz0f)~fuoB*d2=|DB zGdg&ejUPKjOfonatKd6jXWDSR8bvH1@%Kr&Vpw03G2bwNe39k&O@dK{!Kp}UW zwF6WFFhk2*P!R)m>T%Wvn0P1aXHXHR$;t#0x%(3Ab~cFHJzlaRyB(C^p#A%;AE55X z)jtKT;RDTYL$cyCFvWTwqzgTh-0}ds|14Mu?;cR)i{yR{=twQNy=?@Fd(e2?aaIMG zcqi**kQPl=P$~367UKSC%fM;V@e4qoVZ^mmXhboWa^ z+>bFH4GDkHcr@tFEU^1QNe&wR3ueA&0*iOD3PZwQ36yqXUx3434d(vV*=X*E&L^YZ zKNemIn@?C+~`V4R-16p6{(aX9H>;dqJ*P!umM}E!X7aqN=%fZ4fDjCMN z9r-n@LG#6Hz(TGK9=)uQeW0mh$VBs6u&|2?Xrg%~lx+Z7e(urf>d@=VjC3OzsO9C+ z%eon=N&!482ded4`8AzSfOrL<${IAwnQ`1jr2@3H19Ti<1xP9ZG&c-hv!1{&==uUQ z84X$`!wX0k$6Px=sSvboy@Ow%b_Gbk2Y6k%K#Gb(XAJ1rycp2h zRo5M$*=x|^^&R|zzCS?fEI{*C{B*s6?3F7xz3-h4o#stbJ_t(EX`QUAKtqa_vXV29 z&Q^upLsnwz(aZYY4YgH&%k1JGfG{F1;2pn2GHzrMjAipY(fynMWrH* zzb4oJ}&^gk?Tyb{$4tUyFWARGH z7uGYt)5f3-;$eK|#T0Guv@yn!t&sJ2@bl#VmO^tD=%h3McpKyzul(=K7Si!yc_HJ+kub~ZWVCzofkCT{i5$N zxHw~9w36|~u4$kMfSe~UrUedt(6a5=!!KTdZ?XlI&SyaFKXCmBs_8)e5pc5<%X~Am zKQbMhZg|_k6zg-4F7)!b$_bp`a=}V?V?eG0*DsLv{Ao~rfYjvRtN|*X75Oz;Lm-|p z2W6oXkHEfIxDZ;Ye3*(Tl%e%uE68S$dqLxF*v3D8LF)5%h%3s#6s!MdEcN**N3eTi z!Af|2(A>LwI=rR7AH;;Y*9GEUb&z`{AntX9xz_>Jy`b^K+Mm$+8`tF2LZ9jy5v4k+?GdU-ET17D5&22>)bKLkh6f(76R%6REN1s*|I>r3?_ zXs$*+e|*^wP-M8G)R)sBVxSu$n5VyIg4LJPuWw=mMKV%-IR~N=R9|YgBkIeoU|~po zc@WCRQD3fs%-QUQs)E#)py)x=m!K*SR6=8^FF{o)YJCY-jHA8;l~lykm!Oe0)cO+C zUZrn+xeIjay`?PkG+edfO?%Yz2C5LDwc@;7%+zKD8W#!u2(1+-d<3Pool_yB)$^u; zYQ>t5pjvSeXc%QXtLRi{J?+sQ>yU=J*W>4u_e`KlQ_K^I%4O$XHuki*ZB>r1~W@0nh3-XpfYTzwT>U#^(DlJN!iL{M?v z3#%_vRKO)RMtun_|BilxmM6H@cR>3C?BGPs`wbjitnWd((94rkHsJE_E?5cg8Bi>M zvOM&@D2r+DndCraDQNuB2{Ha<02A+IT@2Eq$+`&?&%AfRC4<>qaLM5D(sTm6WI(BJ zT0t%WmEXALub}4zK8LvK8kl132kAn0KNrOPd%;S0*MJ;@; z+rSj7K1dh3`@O8e;XfCwgtrIe7$o=qn2L0M6BEMyA7J90tjQoPnyf`2_xIigyFU!( z{;hr3-5(07SwQXwl}y;&4;_DB4(X3g15>QwAYJJ0@3I2BzZR^7HwVFG* zR1L%3dz{r``g_FsD<@DT4(iEH|s zbw4X8rQ!?kI8d3O$hsVoYNvrI?CCqp0vz78U?sdcpu~#g{u@(~-2VtvEkNB5O4Vtd ztZq|5?mq-o^;k112h{xOQ4MjwJ7hhC8JJ>y z57LDm{;SNv?w6ect(QOz0#L;Sa;HbLZPgS|1F@48v|fT=la*)6d!`aMP(R!PQcD^@ zc10;bT4fF(w|KlLOM};w5Qlm6@@@hheXa`{%j#xToARFNHJ?W>>(p0YnLIjKLF+Y+ zGk{j0dGzvjP6jPJ1_?19XXTgzS^xNA@^x^?yqO6OnTVIWyTBpi(fkG!9$#VYWl#eL z~sO07=XOK$^%+{w?hms15>Q#AYJI; z(Pat_k60Yxv1=kEJV5ss^J}vDz`|p)8J_S6OTi3}PoSfjd0#-=Q57#h;ZX<;577O| z-K;4uK;aPub}R2;kn*~#;P5D)0ZkOkIKb>CwxY z57LDm9#tmb@Zg20{DX4-|8drgDesxUeKSydq6l;Y04N_FXH9^Kcd}jvY0+eT1j-M4 zuYf(k2JwK$%ct#V9)Olts{f$w$JL&Ip6@IUaTObwVzme9LU;czW3c<*LhdiP19A+! zygJ6}4bJZ1`ph51gw+pMCWDLH?I1^UKpeerIylrlUK$`d8k+uE8MlJ(>(GGB-=pV8 zXnz~^zJ+p-E_C;Dfll*pwhaQg23$7rYqCC@3@wFpP4J|$4~dwmtOw+Q<=_z?Rt8up zH2oR46#4)vco-NxdU?}8p|YJdb24-W3Q}R-oBW;$asXIbC#x^WpnsRZ(f52BI3yxo zs}UM_4!as+(-1e|b??NI32KxFl=Q6m76H{+4LKN?Pmfj z;r%!X!~PeO-ZQ=Uc@Z24O)&cvvDyzl_zu~AQ2I|(WPJ)Yob}9qP;VJ+Yc@Z`{zG6T zycVN!Dc@{#D0)VJ$iWyG40O)*LlLlFCqLhQeSt*GeN2m2r7QjcEViJ10xfb9Qy9_;@^ zF#8p;+7GUnk^PUF{{H;M7XJ|Y38cSDi2ajb_AhM0=6}#xGbsLN0*!Dfva*6(sH|VG z+25}R_WvVr5b<8b^#2L4|IdN_p9HgC5v%>60TmScL2cGFMOIaa{Vmw+=ZDx2a;Zlz z??+7gUx4hdgxGHcvwvYDQT|T?t-w`eO$E1GS)csD68`CXTk6}Lt==#}8i2awQz|wyM zHvfY=D#+>2X(D+3-xb`PV4Z@^{(c>>|CPW>cm*e7+7D`!{X7Hq|00e|9gP_53#=pX8*!^Z2re6{~m#E#86~?Isvo-jdck& z`}?)Q{yzj(!n<(-hW}T98eu7F4_;w@1<2U!ZpXjI$1&ED=#7-4*WP7oIpHYHq;>k2-?0% z1r>iF_koKEEd5zGNc(U*xM9V+3{0_>gLI+0FACzmUa%70nklgLZlLi3g!@{ifZJ2) zpaHcVr@#TY5$3)JwFviN9dF(qjb*%f77L^XF94S^&Pw{4=n7W z;((Z-ZH5YgdQ<&iHfZRYbqa(D+T6Pk%mi=Ma0Q(*hBiMN11=?4Cqq?1#+yN@4nE%O zfpQ2CY+GzL2K4rfPT7r9 zK>gZ%pgsY=Cad$5_e`C#YeA_5GF1w{{t`At3z{~CU+&g~I$yd~7j66(`Fx)OkVP&; z@3*zA0}lZkft-SL|0U=S%4WzAF#P^Yk6zwvP?L-81hGTFEB1qjfK4Z^WPHIP(*{;rRe1abUaKQoalJPz!a-INEdp3Jf#LMFaCnP$NL5)KOSR^ zo(k%|g8Mu1ASSH8^8}JVkAw23#Bp%`yf^_`emGPi@+Y45HKcx3g*feuEF^cLw6FCc zPGbTq;r%!T+S@qJ3aXny9R~0!j~v*j(Q($OsnBx}I$6(xTvm4s?6P)<%Pd|lt3D@rqj+U&smOGJ1610F9DpfJO_9PlA{hpbjN} z_<^)eUd7vAnLK(~gA}(irt#OaN`bhL64LhHt*=brF&2;nNL`vD>z7*~sE3e$u0t)gCNt2sVgS2to;is9x5X72vMeSCE!o)@h8OW6oIR zA#w={TR}(YbVB5$AUtV^oC%2PWR(R`y{zBBaYB@t#{>!RI=>$W{R- zuYWhcGJ%f_2X#>m(v%N*bjpJCf_neQSaZR8yU(X}vR=LUl?im7?oE(CWqogbWqPsW z2sjoE`&Tl0bc0rwG#_z@e|f7M6qg>&Z!}zuPkQw73f=k2xdE&a8sE)tG(38F?uNs&O*Ov`d3|fK&3M3HCFUTqZRs~)e@&il$yfQ11+dIctyH~=?*M1NaR=$d?1h;>_uK?Zua}b>V7xqBQ z*9Rq_ln+hMy{wToix@mQSr6U(%5)eso&su5KDC6pAH1v=QW}M*Ak9xf@5e-S|9g-w zboZ}P!0moSdrbx6UiOus`wt=Rb%eRs0L8t$th+WbzC6L5%LwuT=ziMX#US^8x&d~7 zFY8ayB_RGQD4*A}XC>pyH^mS?L*s|F80tUpuniXfLHFyGZvw|p8kl1JUbGE!5a*OU z*nhrYCA>D9P~&IyCeV_9aQ(L)#Dv9<$tH08h;Mq&^g`kQIDQ^>L*vH*>Q=D-n%{up z<7^?+y`Xc5u%##HexvpcVE2}RDc1cUUFh*41#xdISP8Gs22}U%-T+Te`$0^YdtEkw z-K)OgJ=2Sf{b2Vt!rVKd2oknP?){q!buX^;1Dzi1oG4uzM9@?tM^*;oj1GsC(tW?LcrN93{QSL;5G~ zYr*a{15>Q?LAuc0yGs`AURkgbUY@n6;aj~Ho*wE!OqhFF)`G+L`5I9Ahq(7(7c@N> zV7m7!C}u(ZDFW%Cd^6a+X<&-=IY<|}d$}O)^#v>8wb_j7-qoAo?p+UJ!rW`J8SGy1 z&F`6BMC=8JZz9aS4FwqC`!ow0zPQ?(pm0x9WL>@#?A~c$iuF857rJ|+WWeED3s%CL zvlP|6x0k}*dmqGvxi@7g*uCyc-!r{f0XpiYmzNRd-V6B{?!B80buX^;3teBZeFfOP z%fJ-tbC51{_pXu#ySEptgtuk|s(W9rfV=lShzWCV$qKN0!$IZukKN$#UDydt4+@y> zt<8hF7qkuxTloO(|GTdPyVnd%v6h2$p}Y5&6xhA8U?sdf>rmZWy$y8i^?UPqXF3-U0+mp2pYUR>obX!$>AykZI1y=q{Jl^vuD-MwBA_ws_3@cuzL zpXL~AHuy*yaQT}LV#3_}1#&#i^~LX*Ud-494&R3z(C|Hwi|O7RsC&h5ln0y>6IDBovN_cfvp@#45Rq*hg4`RaHtFj6lzU-^sGrf4R6YSnbn0o~< z-P;NZDNy+UTELAhJ!C@4v+2vg;oAnLSoec;p@;7)39x%}!Af{zmZ7@$^fI`6&x4pS z_l7J3yVrc#d!`o_5cev=+?$Yt5x%9MoDOm?uKWh-If23#l8eH?6l*w07rJ|`AnvsV zE8*2a%WtzmnGDqIIL2yf&**)93!x(DVt}t8Tj*oGcYqzh^Q&(8=1j8gwD-jMeX% zUQFHw4&^;<&`95%33fEJy;uqgDUf?{l~A>msFrdZ=ay3pM_OB5Wwv0x>< zJ}B)OP{2YQ8Uks*n1k9cKemFMRtR&N0>o*c<`yjebJL*Z6DXfx%kR+hf}TT8@wx`4 zSkpne(B1b-1nj=OU?se3(8^P3P$3F(=5bbe5EB;vOCaTGJE%PMfVfu>=H7w~a8M$< zH#Gz5UR>+1q31JShor(|V2U*yqzm1>UJ&=L1uNm5gO*;oS3=|eI4eJh33KlhNO~;? zrPmo-z~Q^G6&m#i(lOk-HVNup@H88i{sQQnFVOu0;DZWy#lRHne2^}5_s$Xqhwop= zc?EAkhYujF4~PaI!33_a;z3N9d!Im#V>%8xq~OJ7uzLex?iIjv?^Te^p!5n#m)Oz+ z)V<-5Q^nlC6zg%2E_C<45(2wd7p#O=2Ic&*W31iaBkREK?FTVo?iGO?KlXhdsQibx z_hSn*d=t_z!Z$S;8os#FFZ8^w_66YbpbSj0#)EXByVnZh-dL~_UY`Z1<-u<75ouue z?guep?sZuJE*R7oyk~mRu?ZZ$6JhS%kc#2ny9rSD;wle7^=_IX>vqV|gv-Db>v51S zboX`%g2T5Ltc15_4yt=!&w;1k_aG+By(OU25j$DKK?fS%*a&v7Am*+6Wns zz?FWX=RK$&0*9{{m}31dvmLX)drJW9-oFRID&HJLcJFc4h(k#0eUlD>9N&CG;W%pm zOuUozFi49g>!pM5nO?|3oPMksnlxNf5J8PxUa-R4kE{Ox9?ex`Wd}Q)_Z!%8tp3>C zF9mV`U9b|~Ga$#n^B<^SgOtBl4uaFec90`0Hh{yo5a!4Q$p}Y6>xZu(n?U&uSAPt8 zpDe2Tu!e6HKRA4`y6+gP^&xnF*B-=#rH3OB_bvyy_r!Xzdj(-iv|^bAa~P6z2iPrs-5!0tT@R>HdnB|ML@YJ-yiIKSzGm@xNlfw*@% z$h{H}_ik*0CISak_d?oR;DAM*U;YF#L6P+<*j`qhsXH)}sy@VNpp@p(%X{!3w7qql z)#wm(oFBA`%m(Bx&^YpORxOx#C+l30%j(vFLoyxWGK-hX5)mN@PM)Cp7vetfKp$@R zt-%&_{k-6y!|p!#sfcLq1B*l5cW*7&ec~|pv0-x`sJ*2+4I1CL>I0BC=zdIaX!2eI zQ>^?TUFh+BiwErJyMtU&Gq($+9)hL={_U*hhu$+m?ss(t zu^{)mDjj;y^rCqUIA~*Fj$R!Pb~Mzztka?H1&tG8bFTrUe`O8{B{eX`$_~9uu~afPGx{N6`VjFf<2nw z6nJ#AKDL3*X}hQ-r19so2D5`VFWSu9!RWXH)Z0GhqT;~d0lL`gGk?8{O2CVUyzC4h zm6{NhPGFUwV*-x3s3?F{Du7iQyx7jm&hX;V?gB=S?h~NPuON#NUl=f|GkA1|s91F0 z@M!)eP^9P4?W3aL@&AxV_d$=wU!Y@Si$p!TJ%4yKA5!KkbLbov2sE!YO8Sg(V0p~vqkPH_C@f|c;bpvCX$1E4ArTt1!$ zF=6o=0*PO9Q2hQ_369^wdT9Pphy^D_u#=(bu@q!8sQv*j!@*LXgLa02`X>-qlz}PM ze2^}5_x|DlyEhiBgx3eny}J*<)8l>+6XsqQh|xffS| zUk{Rh$|0^u15>R3=VB@3y&&%O1uNmTL38hFkRw6G(s9=HASTScCJ^_EgWNk~1vq>+ z)}(p{Zj-oL6Nl-Y%i=mePf)pyt^9$`--|;^6*e%%8V}Od37fWs z%+J2yf;jRm#F2NIq}AGN&vy&s-F|AUw?_qOZ@ zmzU}LLF2#6!0z2x3ytp!kr?g`1=)-*eL~xF;gC>s15>QwAYJJ0UBwD^uP#^#uMArF zc7viH62AQ)Cd|DeknsHua_^6&VD|>X+^c};URR}^koFv|{15BzL0kcKuQ^B;x_f`I z5OOaA!o3XG-0J~x@5dTw_!dN9gzs5JsC#ks_n_`|hq%`aOtJ0<=|Xp}7sS1?U?sdf zXyIE8%JdNT)`OTZ_p(63_cB$?Wg0cD-OPA0@XR-l_{GJf+`1a|7ihCypvTJq(zfe3DiKn zyBO?rHJH;`k(`cPKU@Wc96t9$>jzMI=+Vo|1`bTt^B`U5?!UzZcK=&Q{=0*c|BkbI z96)kEsNe$!_;FSTn0P1aW{?(5)a%>TSL*@4`2Ur+*JUy=D?@dSHP!NRCMoGCh+}nj@_Id%|FHXo7Gtv7`hMc z0xys`_=2_Jp}cP|OVi~?j+_B39=)z2p3MhYe5_BDo&#MhDgauN(8+pz&sQdpfoW-J z{PHafAOJUSId1bfFwFyL?PTr7W1bgo^LQ}L1Fg8|WVOd*-dh%&{uRJ9547B*llAj% z-2R<_+dL6W^FZC+PS)jk%rnMqo&=_Opk{F=YcwA7t})~EuMDPnpk+Osto(S)tHf=d z0;YMO#hsn3hj-x)KN;NSsbHE1S~}FpT8_uO{Y*IhtAS}AXmx2Pt2Q3FOzZ18AS#g_ZfN36R*>WfAWIX1rV8rQP6HN0!*}Rk09ctcjR}oMI@yk0f!1J#+ zZu2ZWdR-+@%L7P$`@I9=-{Y<#;5Amr=DlOU={_4w^C0dGzw$-2Rp6#erG93}-xgd3knxWqPq0%J~hFSqA02 z0&!+SIbc0KP|gXEOg)sd9mFYua+ZNOsZh>T5GMl4X#sJ(p`2n6#}3L#0&xtXoInsq z1(c{?3GWffvO20OEjaJp=(>|Juu1dh;+NsQS)fU|?|E32GdH z8vP1By{z3g4>KBH^62HY0vS;&G6%H3j;$12pIW^9>W5YzLCrHoF^>UsNEE1^^yy`_ zzj>GuQVaF+Zr}Em>4g@=$ipR2BNw3<2{O-drvn261I&3Iy{yk~9A@5 zqnG#0wy#W%y@7{b+!hAAumxsZFp6;s*n;nB&;ie?`#$Ra`3Z+qV}fpP(M z`~Knap9gZ80;uJJ^FbC+G^bhy%R0v%Y$c=#&MJgv zr4-06L00Cy@0rrDhi5wndi{G^V-%OMyHmE#9O`jQP_60!f0}YjV zbh19$g&Ll(c7en5@-Cd=DMP@%4mA5-@PYl81xiMptdr2}n+3728Ml4&QJU14{sT3k zK*bC!zc)ba15HhObh0|3+2;kZ<CTN(AgXf#yF6h<%{8s7EL3r=6(b`D-UQJRk4G z8J(+qV&=$&Km13^e~O;0A|hGQ@vLX!d16>63F7oXIWizlJ(Tl)>wBgb zMNrNm5GNJNnF``WKsgy8jyIHJ4dU2AIeZ|FA(ZnFi(=lF1&4{9Hyn-A*L z!p*Nalm4C*bC9 zfSA8?B@Xk~@}S2rs{28`Ks5J*HXy^z&w!X;h|7Ej0_NWU6|}vs$nFP?E5XfIfS9j| z%lymS_}vdas}a?F&@v{t`8ObYH6O0P5k6@I%!jtWk=+kk9t<~s0>u28xXk~F(ceW4 ze+5W;2HAX2-wbZP2gLk9T;}%>Fy8{xe9$TzxcLka^Eq*uFHgYy08H~itGeOl?^q5_ z{|A@j2>(q4`mfOTI&%1cMsDEd7eLIf#AUuK0rML$-49w$3pZZ_V!k0R^KTI7pU%KE zAGGWNZvKO1;P8353`h866EJ@Rrum?46maurK+Io=%lv-?`k&DDJ#zSiw#mWG4}h2- ziOc+n1k8Vc>3-1iCAj$<5c36bnXf{?{2!R+gO(e?%|Ead9R4Sl;t2ok1p2Q6koF~V z_<)Y_gPUIgF~1R)`CbIfhxP}M%?B+sf}3vuG2arG`F9EQPaQDb51NLBoBv`7ID9@X z!4WTwEut{{-9}6 zxcLGQ^CfYauSvlC1(@y!jYYuCKd~4b{udYH2>(3<`mZ}M%?B;3gPY#~F~1X+`ThjV zzkq2zXsifsz6Hd5M_lGVBG5m5foVQy+5UGY`b6gmNlDoE#`81jLDla`Zu* zASj0m#Bqgkp3eWu^uhwlIRN5lLpifS962bb48#$Hasojd7AQvt#Q9zaaWy-L^9ss& zH18|Zi@Q+HUJ&O3lrsawISl0#gE-ru96u0eC6uEH;>>|^SU{Y9DCa&XsG6W0aJZF1 zIa5J08Bk6Eh!YLvc!M~8P>vdi;|S$2f;c8n&Yd}5nO>+vIom-TDJW+Wh{Frzu(P^SKrh2Ff7LGbrcZ?5|8OZh|=I{e1;j;{zT$K-0*eBY1s4XNK$o_4uK@7od|w zK%zdKt}j6895h(e=?Xf&;sHqb6X-}0klZJJLEZz9k)xaV)SQ8+d5WaQqcijYia9qR zYCa;V!LaKIM9p6$HQ)nJb`&r)v~)BmFn~=29hSntz`z1>-6M#O-$*(zOnnDY!wwo^ zg!&RnZW~<06UjokW~i4hlTqGkQ#}d z@0nooIuQ8>9y=L08U(l)5*R?C@38~qzyt zi8{dq29PZ*5I4!<(8mF@1*DIGqoI*uLV_bmAC~Y$#83kR2h1;EeW0iZ-xejv`vnpY zyh!$8#1#X?O_KQ3VDT^99FY5<@%I5OzEI**11Uajz-&QYm!0pKKpxr2z`)P|ia3uQ zP;Y||^8wib66F_UwL)^9M<*y21bjb$>8LFONbiqxIHwHW2kY3 zsENa8P9Q{07Ctqx5H)4^)MP@`G~rWI3Q^OCqz1$9jSw}nP}I1>lOi-}fI_JqsstP? z{DQ30A%Tw)Nuc=>nEY~xdT{nw4PnF7f=WS9!MFt?49;9Ap~)}EdIC)j77-J`aWCNe zfnSjI3Jx`MkkmXtQUmfm%$yZSYTh8J0l5RF2IM}NcYfeda{$R47SJpiQtE)2a|TI` z01h=bkkrT^sR5;Lm^n|7)My~70l66zMPFd@J|IU3vYJ5DfP)<*4{{&OKOPV{a9Ihm z4=fHVff!goMuMyb6^$@9$OuKq#Ge&ZH%uC=8>AkjMi-*S4WAlIh?*cIH6WkD9Uy>W zqBTTy2$E`$qfpeiL)0W7sR5aYq9z!kCI?9khB@&NH5K^OWJA=n;8Rl$Q8NLX8c-;; zLnXit1m!0P9~@br_yeh#ybDo@EeEp&dDlbKLGqA*D~JYRaDIYFVb4!!a&550b32pa}RK+S%IYH4GuM1kktIZq2>UR8kXJfnLt4SOJy)OpFvV1fTji%Y_S@kLUTh(k>zlA2r`YEqHZRN_!mh@_?! zNew9Lf&!62fq{X81=R8ag%oJL2snKC1zFpXR6{bcAa660Y11L{DDg8HNq#v*9uhg= zqyIv|Y>+*(A|9v*fPKO*$SRGZ+83SO@YEZ%h)aC391&5P7lC8!# z%+W?tV~<0PIg%Q0G&Laix+BR)L*!BNRydM;HbfpAhWQXSxaZVxlBXd7+}#3&87L+3 z3$o@x6o4ZdBn;UML(T!@-BeCAX_)J#HBgIvTgpmv=Y z7#Mgs96BDeiEkw;Ud}=x&Y8K&BGZms{9X>S+A!>FZse${0fq{Vu(v<_b zd^uDJI5E0XBX?)|F6MP}K@j4dR1U@(Z%=1;?Zy@6kPw?v=+51||mv z1|}8(kIqnVoFiMw06IhUg$HQ7Sc^e{QG;KQbq$i?aHUKPJPeQ?Im9s>f(#6d3=QC1 z*$wg45^VY$85luh5s*_@!Knz;Z4UtJYli5XgQO25cKRV|R^U@J8=__lHZ>sEf_@RIQYk6zx3YPT6ZI(@)*S1$##!RM^s0x^487oPyB^ieSYErfUQ==Eg)-H_$` zq0>brzyov+1HV9wNjcn*G3aJa&>869GoGP` zu&1avfR2dg*YJJ7ujzV#U(;2AU&Hl68o$U{eoa>cehn8D(9y^)D&TY6EkN@Q{F$;>AR~MoUL=B!+3$}1(CzvIJ{H;6py|+~LrBreiKdpLg!52tMze2^^;IE24`*7gEB`JLlJcSPZ%<8sZ*a zW6*X+zHIQh=N~+JT^T&O_o#sCOpoq4Di=U*wmwn9`eH{C_`LH_mz9h!B;>&7orBYm z@tGHe8`&5<8jpa|SS&KID#&48(rWNx&Y@9ke3ed3xdy( z{=hHD8-56M=Pqvrh!W(T38FN4cY!ED-rFEbllKpZ66BQy1&1cD9f%U-jR#ShybT~q zkaywX_t@9}JOa;;`1HCy@HqGaG=1dT%W?p+cjWRT&_Y5_P65~wvg4pq-lLb*B;__} zn*t~vz@>{vCu`*4_e?uZFf%Zub+U#Y1}!uM-RBIl8?-e8bo#Ta0I0+Pg)_)=-2xts zzd&n$iu1ZpL2Q4?=Fxlrv~A!7|F%;N5A6|-@D=go6!5SdQ3+N*YK&%vGbvg?2i2x{l3$n%@1uePc4TGA^ zugO~sa-bmZ6cDA!yA?zU@?HZ`n!MjZlprt29)3aJ2cR7)*w*(kfY%>EVu0BA7fA!h zKWHf%IQ~K5;?c=^^vHXr9S^0!Y2e@yXc{;Gat0&~fZ`t{4vK$}bFi*Q(<8$@J*i;# zfaa}{-4hFP&r67VA|dV(WQ~A@Uibl!dqCoN-7^Ke{)n{jVZrX6ub`B=8In>z!t%%m zP?AN24@exZdwzk}6Orbg8c2Rc51(F;d$vH_(+P2pAZrJ-MB;~p4@exZdlJZS&zEGZ z@udoK&lQM!6d~@>WK}>7ACNd+_Z$PSS0XKZaU1>&BahrsDskaY*BMg;X` zA>jiO$Lk&)GTied32XR-g4}Z%lAZ%0?$HFF$p%{H4Xy(Pc|qcM-7^WiUWv5uiNWrk zw+G)d?RX4v&&z|*@Oc4hsvyD#B#zfTpt}*e50d7dD~VXcrxoO$*AVwKLfoUt+5kFe z0g=Bz;&|N?2VM_FntOb(yGIt}p3e~XNJ88r$SQ#vJ|J=Lgbzp@uY0t}aE}Fc_kd3O*|8OpzdRxC5d@z-0jm9=qvaSFf34#b8kT_oVfYvvXTK-Ik#Tq`YAoo0l zxW^IV9!*vU&?aF-`T>dKbx$97Jrrr-!-L&DclW+$+VK|Ro|}82;d5gzq#+8;Um$V3 z?)gGS|DYuXYxtCc-18OUolcVHd`>mBIAS;}yhB%H+$XR*RrzawFKKf+nh;jFuG z)@3;BB%HM$&e{rRt%kD}!dcVdtX?>)8P2K%v0yzK(0Ov8uCj|t0BB4Cv=-7wC4gTL zG*AILR?e}T(Zd$p`O1Zy^{3!*@FklHXy^S2aIcGh+X+yg&jZv0bWsWMjpzbtURH<1tp*#;;7EUKn`zhV@0mSEe1skizpx!&lI*>Zc7~nLusqw+&xGw<&oX z1|3YO@ZwxVF9Xb_5E{P!3FK&30no8r;Qm(#xNO1ffB8VmKyarFR9S%f`0@Ke(F*M< zRe^L0@>)X`@@w)&fJGqvAVlKgZ|)_dJo*Dk-};bRLbA3-B|s3xDUJkP9~^fTfb^3Dd9Q*Bh)&lJNb7k? zFN~f<@G+HOOv3)=sdK1bHWd>_QYqt3qJ~$^tlR8l2SwXElLXi17>1 zs$K!mR%B?802Gp-&bdo(03*`)AaeST!PegO?7jrf`>vpY7f?w6%KosymwRF0*acYw zPj390tm4(6o9jU5aQv1kO9%$*<3~`SpYf~jO(LllnBu>CRpRl!O z@y1sjcK67G+yk0FNb6*khPX$NRSGqHK;i`46G5_j;;_4Cd&O6#9iXM>X`QT_E5Pxk z$-1cmC44~Q1l+R^Tm6AIeC`EfjW2(YdqAh%rFF7;L);_C>Q#Y~en8>`+@nIWd*ZOW z=Xv>8rX8T6*|bj9$K}xQc~p)PJ|J-d?&-o-pWzRmAgtk24{{G^w{Th~Yc<3@f~-~L zDB%MVC*U5?{!xquE?)P$UUGT*|bhpVTgM)S%px;2P6)15264p&LqzAv(UEn z$3R4NcDC#*(+w?{9S z>C-DZeH-W)C-DAy_~ZnCbI?WxhVE0Ki3v~>*|(SF6#C>uFAEa`gD2;N3h?yS!O}yZ zMl9>y?eCcwPk^@eur8Cm&6swa^&&_Fbf@9I?VvL)dO;g^j1L@Vy$uq-!2ps0pPSIj z+A0g0Gi3#-15Jm*&TA-x2*b~7cm_IUp_eruBK!b$FvE9ItNf~+drKncZa+j}N%NMx99d(XrOiUK3BjK{Y3Ogs=7XPArwSSD=SdnR6p zOdw3g4=j_i?L8A8L?#|469bkh0%dfFOfF0&3oO&H?LCtKM5Y=hQvsIg+xDJG5F*nF zlW7CX%-QyyNeChXDnY=mo&uIxwe3BVFhpi4OwS^)%#LmEnM5Emn_)5=z%s|Sy=M|V zz`$U9AniEoez2TJC+nGQ;1UC})t7ai)NRJ&tVg!JXA%b`sZQ3d+n|{lq>f*ZwHJ~P zSAex2Zv|d!;jc$;E9h)XM0(EO_MS-rWO*;Ef)qGCCxb2X z=wuCmIVOD@xWEyR0w={pm@p_jJ$hL=A;O@z0H z_e>J7^!yzx=h4Z^0tw=?65v<`sR2iyC`9-eM3^5I#A*=X{SaXVn6NoScn3t-5GD*N zD?EBxH$sG+V8W3Q)vF-F!7yP^zW3;5oedENl^I}{fO5Y_FY6SDa4Af655$mOh%hMs zgH_Lk2)99mL8Sm#cpXHz9wH3NjbLF=uI3kH{jdd;M%cE#XOe`393wb%_yt-2fn`Lt zzGsqx$ne8tc)($*1mYe8SAnu1Ca9d00?QbHxX-{c+8`!KMguHk2jYGM%UFV#AQ>~T zjL+8hOdJr?++i{D7LTO3r>&D{E)iLV3PLIR0{LvbNQfsr^k z3C-RLEde({gtZ~UYhc2MA;KyU;k__nP+IrsWtD{ppMwcMg{T&T2;YYZe}f3KLxe$T z9_$i!NHqTt1G|I~mR2Mn!Y?7hLNH-Xi100lurf>-RQGxGvYv(ro4|ywBhrh>Q$Ok0e+|f9rdua)^u; zSO(OvcG~)$sUDJSK)J!Am$gO|97n3K7`1`KXf8w;lpnw`>I)H0g9w9i1z0!^A{-78 zj({1G4-pQ42xr2CL1ny0FRLp=xC$mb5u(}(BHRrV29?(yy{yI%VNh8Qwh~lod-SsE zK!n%AR3CvDq6!fPmD^y|S0Tc35Mfa14HkX|5f&G{&B!mvDzF9INY{o%hXy#%?Y6vU z>VX8HB}~Q)EaS7~J<}S9j5|!m1uO$P`|MgbI7f%VWP-pl8C%{n-Gj&^!(5+!1}7I#Y6l18 zTZr&Gi12fmYEXF%IxiU_`~xNoDz!a&Ssy@zIbm_90Evy85MfZc4K~{lB76xV3`(zH zVNe+yKkG z1CbD!moS-UATicIo8L2?hsb<~$$SCJaBX?dbR8nY3QGx0;JB06@}B8FL`E1U14_@w zS=F|@XL=5iQH06Jf%TYddC&A7BBKwJ(E-aiZF$f19U@~3ld%HJ1Z;WF^dBPQ4U_Qz z%fxMY&y)bEEhE7)9-XXdTfnVz3GhK7tOY`#Dhs5};TX8e@`oh|kUEcE)_5UsssiN) za5R)dQdI;*7?dl(!W|IdK!|V?%#fK7VK0dAWSHP5BD@tQd6dRxse||yMZ<|2_JGjmRk6(zt|6{=q>bAGa!20tZy{x=~ zpeWwG`8|{RQE(K4!ojDv*MxVlB>-xt-3-G%q z0pcD9M(Fs0M=xuy0LVSTo8L3dI0SZ&%VtoD^ieSYcOxAjfd!g{VD$pI#zn;dbX+vQ zAgeamEhzILrUdNo0Nd}PVgl+79`opBl?U7Ychh^O1rXccZGzZt0=E6tCU9#7Z2Ol@ z@0pIfsF*-)zq$z&F)j=!_OFS_sejAwm#$fw>H@#<4gxGHfwciG8zZH`GE)e@|p!Ta`v%ha1 ze*c3m-1F#lQE`CTzn>4}|F0Y0Gqv9X`~TTSNccN|?SHiKJrg4%BrU$#2o8S-==j#z zjab5;k%0Xg0-*fhqT&Lx-ydxMT#)^c0KEaN z`vbuCHzC>I1F=5Y4H0&M2}eVOLm4HLcu5tfDspMeQKh6sy5 zgztjFSCCb2J*f5Mvi?0&O9QyIY`-29I{bpHHei{c_3xRU+yTq@!eqR_G6^6(khXU; zOeO*>lehjo(=$j5B@-r-29~K=|DGukQsp>aAqm%X8dT`Qs&jn5zAT{6y&~u3J3yAQ;_0WX$10wtoBK!#^%n1qkTM%Jp zScFJHgfBycMPS0(5aBZrVO5y04Mg}TMA!@_>{&%^@JV+xZo0?T-;f6v4Nk#UB}IDlos*1u;G zfye~HWcN+t6-3w?BK!m<{2L-{0ulZS6Xt=W6I!r~ji9r+|!)W(COwshTl zCLKud6~JV2!7|P3-ZPm%Wa?lt)nJ*4>)tcjKxBGgGM!+V`Rm>@xjz7ATl@IfNuIYbzgAHXpx4-tL<5eDT7u&@C{_$EYH3l?>b5aCM@VQZK$sEh~o z;~~O6FyUl~>LU>0SeP)Vy!Pm2-3t*0mGxjNL8Z1wFY7jla6L@*G>9SVA;O??8?1Uc zM0f>67*u+Lg?B)N7qWv#gC4B~C!)V=p{32QwV-lHVBLErUPu6Pg98v$K7fN(Zryt( zQHYErOhybWqqFWklPp9=9VVj!ma$s*o=FuVV+xZo0?T-;d(Wf`k#UB}IDlos*1cyk zg~$ZLWcURrD2a=)=-ErD7}J( zRUxYVAi|*Z3Klkl2)jdsLFpAN><$rjfCz)qD_9uRuJGt(wS)+R(km#}Ok4Y&DHakw z6Jcqj51dAptbNav3Xz!)lbHjS*|hdOQ!YeiElg$=Smwam_e`Y_ncXm%9blPrYu_`~ zLS#1$?$;Fh|;?EOnML*S(uCzSjJ%8dnPl8j5b)tqm$JF z5~GZ);M4+2=iuP=gb4p)0SkjtJ6JdhBK#R590E%g*%0A35aCpqa1BKGDMYvoCfo}V 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
    >^9qynq)l@Q~Fz{V@|yk}B?1dbqBH^g|5 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

    X58y0yaQb))arGS( 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

    ukIa~sO}4GPh7 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�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ɑh0nm=>0~Zi&!c^tDHbX zYo4IB2;hs#H$Ex`p4RU`WpG7_tWPfss0YsA(R~%1A^W|Mj_hGR22Q9Tqd^(= zILl9PUg$mziURN+CIzsOpz|`3Q|&MCtvv8GQQZ&^dUUS=Ula)`O)pi07Dz!t3bYxf z8``q#I|VLQL80vkIe!^+Uk>EDJkS_8xEAbY{VoEH21xDf3%WRv5p@3zs0IeDL_Sc; z;n6Ae@)a~fKpWLSAqe&tAJYNpe1Oahyu+|fu{h#E_^o#TJgk2d1(XGW@0B`^daE6{RyTOjcl_6X z7f{jC9in1@cB`EjWWJ+Q0_l8CkX@kr?0Rj$j_~Lf5eFBzW@VrZ1nF(8e{tdy=;}mJ zwS4x)oDHB{hgmI8$pYzs6@#}KLqgb_3bhcm$MO9Ao1kJGnrm;TiD#I~WdDW%`h6%4!5+EE!C+yLE z5tP+UeY6jHbf1245w#P` zn@4xhkJkdK|NsBz_vmGD@HqH@*+ct+hxRRx9jhTXIcs@*f9-Mb7iht}$H5o&9?XY8 zp#wG+>b)~((k6g2i`@(!%?Bl#A25S1!F=8PgQDqnBqnG!A zHE0IykVo??2_NedB_UqPERCN35BPKn`E&+xcyu}mcsBnKsk!6XeZbTDVu=aJrC|A> z7e1XqA3*EYxjefM>;xYg%IVR4qWK}C$HgBWonAjcW_ns*EWLobIvKJa*P4mH1w2UA zdZ0wnr`u7$quY_gv-!av&rSvq6Ey72>Cv1Z!0f~6AmG!@=xTi1$5N^!$fw&&05o#r z+5GU2XD1_wiLBN`z@wYVr#Fzpqm$96*8{Y)oWrvdyzUETT!4T_b0WxGPXW(PPEgB2 z614P8#}jlLC+Ji#MxS0M4v;%qL02Wf+~CoiB*5&!=_TONDR|hYQwp{^^~@Pa5Muv>0$k~lncCKPyw{67F@8@s06&&44$;*23LYU z-3MMAZUJo~KHF{aVkSby10=Jug@FOItI?Um`e(6Bg9Ss0254N$nxh=NhBW}Z%oJ=m z|2Bp)>6QZ}FTnB^>-Xl`(ia%2Bc;om<3TY9j*rAZ8!;P&vAeT@dUa-w~g}9`J&_hgBWT{uXuJcZD0hAsX;A*Fk4T8t@Qw{CGBKFtPpYt z@2(W^1)aAjXneBueun0iVtgWUrT zKXkV-fvg8bGH9P*HKcw5-_hIs3)FA7@aT(P`|_d|1Py*ZF~m_3_g6AU7F+y8Y0ryI#Cn zf;?zLx_kZ*cF*YpB)BIE#XX?zvIOYLlTb&{NVkPgx1>+^CD5K#?aLnBKYhDjf^Jmu z+?k#R0iN2YJ-ZKjet+e;10s;d=F|Pi^WYyA&<@&zFYJAoA9!{j^!WbLkId z&2+)j`T~E;R#5w~+g|`=g7#@pL{xb67BTvOHdJEj=sw`leahqFOVGx3>kDP99^L0& zb9peI@~}SV!S8eql$a7cdRaO_tM@Z}dTow^+S8!>&5s`f9UbgxeFCKC&}$A4TTuI= zNZq5?L*2vrga^OdsTV)G;~2q{Y0@A!^+u?BG(Ude(dqo-wFs!l=k@45@!|?dP4|u0 zOrVXeE-D4yy(~*SdUX!_cAxd=hFnJrYUy{M2eq^mUN9iI`9K zdC%@^FT%ms6o+&8^tx(*ZW8Z4|H1_<#1Be(NgmxGO~+q6`1}9APdB^A4p?A&fWk`q z1V+$!^omUKIQWPeo-#bUJ;1k!fzAN!b@<`Y{6oIn)dzIs?ui%c_Wk(p(aW<9bQw-} ziAse>ugGc7ULJXm&TtM;Vod-K3FoL}fJR;oJUaaaJV5(Kp*KCf&|U;uVe|Cn56Gyn zPxl?q&R_x0PH&E2aEgiW?7rdAeaNT#qlfh={+0x0(A_K97kqj%1$?Yu@wa#}Gcb5| zW=nW>7QgW9tbX9znS29u8Z`9$Sx3-aae zcTlKY@aSgl_5f`VkN4=daOsWwZ+ywI`_#dgtd7Q~4!&e@R6gy}>&4i85V<72P@)Se z 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

    4qxC?E0snRfq2?dhdXzcX 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

    L%_rO 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

    BRuED1_m;9!qY!4vHA9<8@Q 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
    8in$=U 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%0Ap5yO!yUsw=eD2pXnX@IJ@~h|mV0#H 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 z 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⋙M46o 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⩔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

    UEcpX@w%~=RKB)cx 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
  • I6-8f!m!PkS-WVob!cO=ZpWZ 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
    <} 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�k`#arQHVJ13L5@nIPR(f>Q}solLQqe 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∨myPsA}dwi!{&f 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