Skip to content

Commit 984ce18

Browse files
committed
LLVMCodeBuilder: Use custom comparison functions in string comparison
1 parent 6504cdd commit 984ce18

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/engine/internal/llvm/llvmcodebuilder.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3126,17 +3126,18 @@ llvm::Value *LLVMCodeBuilder::createStringComparison(LLVMRegister *arg1, LLVMReg
31263126

31273127
if (arg1->isConst() && arg2->isConst()) {
31283128
// If both operands are constant, perform the comparison at compile time
3129+
StringPtr *str1 = value_toStringPtr(&arg1->constValue().data());
3130+
StringPtr *str2 = value_toStringPtr(&arg2->constValue().data());
31293131
bool result;
31303132

31313133
if (caseSensitive)
3132-
result = arg1->constValue().toString() == arg2->constValue().toString();
3134+
result = string_compare_case_sensitive(str1, str2) == 0;
31333135
else {
3134-
// TODO: Use a custom comparison function
3135-
std::string str1 = arg1->constValue().toString();
3136-
std::string str2 = arg2->constValue().toString();
3137-
result = strcasecmp(str1.c_str(), str2.c_str()) == 0;
3136+
result = string_compare_case_insensitive(str1, str2) == 0;
31383137
}
31393138

3139+
string_pool_free(str1);
3140+
string_pool_free(str2);
31403141
return m_builder.getInt1(result);
31413142
} else {
31423143
// Optimize number and string constant comparison

0 commit comments

Comments
 (0)