From d317d3d8b3e182c735f9184db8324929d2f0a492 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 11 Sep 2020 16:18:24 +0100 Subject: Simplify "" string code --- src/llvm_backend.cpp | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'src/llvm_backend.cpp') 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}; -- cgit v1.2.3