aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2020-09-11 13:46:52 +0100
committergingerBill <bill@gingerbill.org>2020-09-11 13:46:52 +0100
commit77829af9de0a06b579a3791233b42f5a66421457 (patch)
tree3834f00d2540a30c8ab793deb0a1a5385c1f90c0 /src/llvm_backend.cpp
parent97846d83904baa02edb863ba3507756bfb7b1318 (diff)
Fix `delete("")` on `-llvm-api`; Fix linalg stuff
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 706de7d6c..f9807aea9 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -4558,6 +4558,10 @@ lbValue lb_emit_clamp(lbProcedure *p, Type *t, lbValue x, lbValue min, lbValue m
LLVMValueRef lb_find_or_add_entity_string_ptr(lbModule *m, String const &str) {
+ if (str.len == 0) {
+ return LLVMConstNull(lb_type(m, t_u8_ptr));
+ }
+
StringHashKey key = string_hash_string(str);
LLVMValueRef *found = string_map_get(&m->const_strings, key);
if (found != nullptr) {
@@ -4587,6 +4591,9 @@ LLVMValueRef lb_find_or_add_entity_string_ptr(lbModule *m, String const &str) {
}
lbValue lb_find_or_add_entity_string(lbModule *m, String const &str) {
+ if (str.len == 0) {
+ return lb_zero(m, t_string);
+ }
LLVMValueRef ptr = lb_find_or_add_entity_string_ptr(m, str);
LLVMValueRef str_len = LLVMConstInt(lb_type(m, t_int), str.len, true);
LLVMValueRef values[2] = {ptr, str_len};
@@ -4598,6 +4605,10 @@ lbValue lb_find_or_add_entity_string(lbModule *m, String const &str) {
}
lbValue lb_find_or_add_entity_string_byte_slice(lbModule *m, String const &str) {
+ if (str.len == 0) {
+ return lb_zero(m, t_u8_slice);
+ }
+
LLVMValueRef indices[2] = {llvm_zero(m), llvm_zero(m)};
LLVMValueRef data = LLVMConstStringInContext(m->ctx,
cast(char const *)str.text,