aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2020-09-11 16:18:24 +0100
committergingerBill <bill@gingerbill.org>2020-09-11 16:18:24 +0100
commitd317d3d8b3e182c735f9184db8324929d2f0a492 (patch)
treeb2fdd6621ad7f023644f733ba22ec74e97787150 /src/llvm_backend.cpp
parent77829af9de0a06b579a3791233b42f5a66421457 (diff)
Simplify "" string code
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index f9807aea9..a9fa039f9 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -4558,10 +4558,6 @@ 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) {
@@ -4591,10 +4587,12 @@ 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 = nullptr;
+ if (str.len != 0) {
+ ptr = lb_find_or_add_entity_string_ptr(m, str);
+ } else {
+ ptr = LLVMConstNull(lb_type(m, t_u8_ptr));
}
- 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};
@@ -4605,10 +4603,6 @@ 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,
@@ -4628,7 +4622,12 @@ lbValue lb_find_or_add_entity_string_byte_slice(lbModule *m, String const &str)
LLVMSetInitializer(global_data, data);
LLVMSetLinkage(global_data, LLVMInternalLinkage);
- LLVMValueRef ptr = LLVMConstInBoundsGEP(global_data, indices, 2);
+ LLVMValueRef ptr = nullptr;
+ if (str.len != 0) {
+ ptr = LLVMConstInBoundsGEP(global_data, indices, 2);
+ } else {
+ ptr = LLVMConstNull(lb_type(m, t_u8_ptr));
+ }
LLVMValueRef len = LLVMConstInt(lb_type(m, t_int), str.len, true);
LLVMValueRef values[2] = {ptr, len};