aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
author0dminnimda <0dminnimda@gmail.com>2024-10-31 15:56:23 +0300
committerflysand7 <thebumboni@gmail.com>2024-12-01 11:54:56 +1100
commit456279feba3344edc2d038c1b1256e2c4ce83ed2 (patch)
treedadf1726ccd1bd5b18de3dc489bf9b12f3dca185 /src
parentd51692a3b4f8311a1d7ce7b9bfbb94fac1179dd5 (diff)
Add support for llvm version 19
Diffstat (limited to 'src')
-rw-r--r--src/llvm_backend.hpp6
-rw-r--r--src/llvm_backend_expr.cpp12
2 files changed, 15 insertions, 3 deletions
diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp
index 464efa325..e84ffd1cd 100644
--- a/src/llvm_backend.hpp
+++ b/src/llvm_backend.hpp
@@ -57,6 +57,10 @@
#define LB_USE_NEW_PASS_SYSTEM 0
#endif
+#if LLVM_VERSION_MAJOR >= 19
+#define LLVMDIBuilderInsertDeclareAtEnd(...) LLVMDIBuilderInsertDeclareRecordAtEnd(__VA_ARGS__)
+#endif
+
gb_internal bool lb_use_new_pass_system(void) {
return LB_USE_NEW_PASS_SYSTEM;
}
@@ -737,4 +741,4 @@ gb_global char const *llvm_linkage_strings[] = {
"linker private weak linkage"
};
-#define ODIN_METADATA_IS_PACKED str_lit("odin-is-packed") \ No newline at end of file
+#define ODIN_METADATA_IS_PACKED str_lit("odin-is-packed")
diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp
index 80c469ae6..1247eed76 100644
--- a/src/llvm_backend_expr.cpp
+++ b/src/llvm_backend_expr.cpp
@@ -4574,7 +4574,11 @@ gb_internal lbAddr lb_build_addr_compound_lit(lbProcedure *p, Ast *expr) {
auto const &f = fields[i];
LLVMValueRef mask = LLVMConstInt(lit, 1, false);
- mask = LLVMConstShl(mask, LLVMConstInt(lit, f.bit_size, false));
+ #if LLVM_VERSION_MAJOR >= 19
+ mask = LLVMBuildShl(p->builder, mask, LLVMConstInt(lit, f.bit_size, false), "");
+ #else
+ mask = LLVMConstShl(mask, LLVMConstInt(lit, f.bit_size, false));
+ #endif
mask = LLVMConstSub(mask, LLVMConstInt(lit, 1, false));
LLVMValueRef elem = values[i].value;
@@ -4622,7 +4626,11 @@ gb_internal lbAddr lb_build_addr_compound_lit(lbProcedure *p, Ast *expr) {
bits_to_set -= mask_width;
LLVMValueRef mask = LLVMConstInt(vt, 1, false);
- mask = LLVMConstShl(mask, LLVMConstInt(vt, mask_width, false));
+ #if LLVM_VERSION_MAJOR >= 19
+ mask = LLVMBuildShl(p->builder, mask, LLVMConstInt(vt, mask_width, false), "");
+ #else
+ mask = LLVMConstShl(mask, LLVMConstInt(vt, mask_width, false));
+ #endif
mask = LLVMConstSub(mask, LLVMConstInt(vt, 1, false));
LLVMValueRef to_set = LLVMBuildAnd(p->builder, val, mask, "");