@@ -3393,8 +3393,13 @@ namespace LCompilers {
3393
3393
module, key_asr_type, true );
3394
3394
}
3395
3395
llvm_utils->start_new_block (mergeBB);
3396
- llvm::Value *flag = LLVM::CreateLoad (*builder, flag_ptr);
3397
3396
llvm::Value *pos = LLVM::CreateLoad (*builder, pos_ptr);
3397
+ llvm::Value* pos_mask_value = LLVM::CreateLoad (*builder,
3398
+ llvm_utils->create_ptr_gep (key_mask, pos));
3399
+ llvm::Value *flag = builder->CreateOr (
3400
+ builder->CreateICmpEQ (pos_mask_value,
3401
+ llvm::ConstantInt::get (llvm::Type::getInt8Ty (context), llvm::APInt (8 , 0 ))),
3402
+ LLVM::CreateLoad (*builder, flag_ptr));
3398
3403
llvm::AllocaInst *is_key_matching_ptr = builder0.CreateAlloca (llvm::Type::getInt1Ty (context), nullptr );
3399
3404
3400
3405
llvm_utils->create_if_else (flag, [&](){
@@ -6783,14 +6788,20 @@ namespace LCompilers {
6783
6788
module, el_asr_type, true );
6784
6789
}
6785
6790
llvm_utils->start_new_block (mergeBB);
6786
- llvm::Value *flag = LLVM::CreateLoad (*builder, flag_ptr);
6791
+
6792
+ llvm::Value* pos = LLVM::CreateLoad (*builder, pos_ptr);
6793
+ llvm::Value* pos_mask_value = LLVM::CreateLoad (*builder,
6794
+ llvm_utils->create_ptr_gep (el_mask, pos));
6795
+ llvm::Value *flag = builder->CreateOr (
6796
+ builder->CreateICmpEQ (pos_mask_value,
6797
+ llvm::ConstantInt::get (llvm::Type::getInt8Ty (context), llvm::APInt (8 , 0 ))),
6798
+ LLVM::CreateLoad (*builder, flag_ptr));
6787
6799
llvm::AllocaInst *is_el_matching_ptr = builder0.CreateAlloca (llvm::Type::getInt1Ty (context), nullptr );
6788
6800
6789
6801
llvm_utils->create_if_else (flag, [&](){
6790
6802
LLVM::CreateStore (*builder, llvm::ConstantInt::get (llvm::Type::getInt1Ty (context), 0 ), is_el_matching_ptr);
6791
6803
}, [&](){
6792
6804
// Check if the actual element is present or not
6793
- llvm::Value* pos = LLVM::CreateLoad (*builder, pos_ptr);
6794
6805
llvm::Value* item = llvm_utils->list_api ->read_item (el_list, pos, false , module,
6795
6806
LLVM::is_llvm_struct (el_asr_type)) ;
6796
6807
llvm::Value *iseq =llvm_utils->is_equal_by_value (el,
0 commit comments