@@ -230,7 +230,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
230
230
std::unique_ptr<LLVMDictInterface> dict_api_sc;
231
231
std::unique_ptr<LLVMArrUtils::Descriptor> arr_descr;
232
232
233
- uint64_t ptr_loads;
233
+ int64_t ptr_loads;
234
234
bool lookup_enum_value_for_nonints;
235
235
bool is_assignment_target;
236
236
@@ -1378,7 +1378,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1378
1378
llvm::Type* const_list_type = list_api->get_list_type (llvm_el_type, type_code, type_size);
1379
1379
llvm::Value* const_list = builder->CreateAlloca (const_list_type, nullptr , " const_list" );
1380
1380
list_api->list_init (type_code, const_list, *module , x.n_args , x.n_args );
1381
- uint64_t ptr_loads_copy = ptr_loads;
1381
+ int64_t ptr_loads_copy = ptr_loads;
1382
1382
ptr_loads = 1 ;
1383
1383
for ( size_t i = 0 ; i < x.n_args ; i++ ) {
1384
1384
this ->visit_expr (*x.m_args [i]);
@@ -1407,9 +1407,9 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1407
1407
std::string key_type_code = ASRUtils::get_type_code (x_dict->m_key_type );
1408
1408
std::string value_type_code = ASRUtils::get_type_code (x_dict->m_value_type );
1409
1409
llvm_utils->dict_api ->dict_init (key_type_code, value_type_code, const_dict, module .get (), x.n_keys );
1410
- uint64_t ptr_loads_key = LLVM::is_llvm_struct (x_dict->m_key_type ) ? 0 : 2 ;
1411
- uint64_t ptr_loads_value = LLVM::is_llvm_struct (x_dict->m_value_type ) ? 0 : 2 ;
1412
- uint64_t ptr_loads_copy = ptr_loads;
1410
+ int64_t ptr_loads_key = LLVM::is_llvm_struct (x_dict->m_key_type ) ? 0 : 2 ;
1411
+ int64_t ptr_loads_value = LLVM::is_llvm_struct (x_dict->m_value_type ) ? 0 : 2 ;
1412
+ int64_t ptr_loads_copy = ptr_loads;
1413
1413
for ( size_t i = 0 ; i < x.n_keys ; i++ ) {
1414
1414
ptr_loads = ptr_loads_key;
1415
1415
visit_expr (*x.m_keys [i]);
@@ -1442,7 +1442,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1442
1442
llvm::Type* const_tuple_type = tuple_api->get_tuple_type (type_code, llvm_el_types);
1443
1443
llvm::Value* const_tuple = builder->CreateAlloca (const_tuple_type, nullptr , " const_tuple" );
1444
1444
std::vector<llvm::Value*> init_values;
1445
- uint64_t ptr_loads_copy = ptr_loads;
1445
+ int64_t ptr_loads_copy = ptr_loads;
1446
1446
ptr_loads = 2 ;
1447
1447
for ( size_t i = 0 ; i < x.n_elements ; i++ ) {
1448
1448
this ->visit_expr (*x.m_elements [i]);
@@ -1476,7 +1476,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1476
1476
1477
1477
void visit_ListAppend (const ASR::ListAppend_t& x) {
1478
1478
ASR::List_t* asr_list = ASR::down_cast<ASR::List_t>(ASRUtils::expr_type (x.m_a ));
1479
- uint64_t ptr_loads_copy = ptr_loads;
1479
+ int64_t ptr_loads_copy = ptr_loads;
1480
1480
ptr_loads = 0 ;
1481
1481
this ->visit_expr (*x.m_a );
1482
1482
llvm::Value* plist = tmp;
@@ -1490,7 +1490,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1490
1490
}
1491
1491
1492
1492
void visit_UnionRef (const ASR::UnionRef_t& x) {
1493
- uint64_t ptr_loads_copy = ptr_loads;
1493
+ int64_t ptr_loads_copy = ptr_loads;
1494
1494
ptr_loads = 0 ;
1495
1495
this ->visit_expr (*x.m_v );
1496
1496
ptr_loads = ptr_loads_copy;
@@ -1515,7 +1515,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1515
1515
void visit_ListItem (const ASR::ListItem_t& x) {
1516
1516
ASR::ttype_t * el_type = ASRUtils::get_contained_type (
1517
1517
ASRUtils::expr_type (x.m_a ));
1518
- uint64_t ptr_loads_copy = ptr_loads;
1518
+ int64_t ptr_loads_copy = ptr_loads;
1519
1519
ptr_loads = 0 ;
1520
1520
this ->visit_expr (*x.m_a );
1521
1521
llvm::Value* plist = tmp;
@@ -1532,7 +1532,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1532
1532
void visit_DictItem (const ASR::DictItem_t& x) {
1533
1533
ASR::Dict_t* dict_type = ASR::down_cast<ASR::Dict_t>(
1534
1534
ASRUtils::expr_type (x.m_a ));
1535
- uint64_t ptr_loads_copy = ptr_loads;
1535
+ int64_t ptr_loads_copy = ptr_loads;
1536
1536
ptr_loads = 0 ;
1537
1537
this ->visit_expr (*x.m_a );
1538
1538
llvm::Value* pdict = tmp;
@@ -1550,7 +1550,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1550
1550
void visit_DictPop (const ASR::DictPop_t& x) {
1551
1551
ASR::Dict_t* dict_type = ASR::down_cast<ASR::Dict_t>(
1552
1552
ASRUtils::expr_type (x.m_a ));
1553
- uint64_t ptr_loads_copy = ptr_loads;
1553
+ int64_t ptr_loads_copy = ptr_loads;
1554
1554
ptr_loads = 0 ;
1555
1555
this ->visit_expr (*x.m_a );
1556
1556
llvm::Value* pdict = tmp;
@@ -1569,7 +1569,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1569
1569
if (x.m_value ) {
1570
1570
this ->visit_expr (*x.m_value );
1571
1571
} else {
1572
- uint64_t ptr_loads_copy = ptr_loads;
1572
+ int64_t ptr_loads_copy = ptr_loads;
1573
1573
ptr_loads = 0 ;
1574
1574
this ->visit_expr (*x.m_arg );
1575
1575
ptr_loads = ptr_loads_copy;
@@ -1584,7 +1584,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1584
1584
return ;
1585
1585
}
1586
1586
1587
- uint64_t ptr_loads_copy = ptr_loads;
1587
+ int64_t ptr_loads_copy = ptr_loads;
1588
1588
ptr_loads = 0 ;
1589
1589
this ->visit_expr (*x.m_arg );
1590
1590
ptr_loads = ptr_loads_copy;
@@ -1597,7 +1597,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1597
1597
void visit_ListInsert (const ASR::ListInsert_t& x) {
1598
1598
ASR::List_t* asr_list = ASR::down_cast<ASR::List_t>(
1599
1599
ASRUtils::expr_type (x.m_a ));
1600
- uint64_t ptr_loads_copy = ptr_loads;
1600
+ int64_t ptr_loads_copy = ptr_loads;
1601
1601
ptr_loads = 0 ;
1602
1602
this ->visit_expr (*x.m_a );
1603
1603
llvm::Value* plist = tmp;
@@ -1617,7 +1617,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1617
1617
void visit_DictInsert (const ASR::DictInsert_t& x) {
1618
1618
ASR::Dict_t* dict_type = ASR::down_cast<ASR::Dict_t>(
1619
1619
ASRUtils::expr_type (x.m_a ));
1620
- uint64_t ptr_loads_copy = ptr_loads;
1620
+ int64_t ptr_loads_copy = ptr_loads;
1621
1621
ptr_loads = 0 ;
1622
1622
this ->visit_expr (*x.m_a );
1623
1623
llvm::Value* pdict = tmp;
@@ -1638,7 +1638,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1638
1638
1639
1639
void visit_ListRemove (const ASR::ListRemove_t& x) {
1640
1640
ASR::ttype_t * asr_el_type = ASRUtils::get_contained_type (ASRUtils::expr_type (x.m_a ));
1641
- uint64_t ptr_loads_copy = ptr_loads;
1641
+ int64_t ptr_loads_copy = ptr_loads;
1642
1642
ptr_loads = 0 ;
1643
1643
this ->visit_expr (*x.m_a );
1644
1644
llvm::Value* plist = tmp;
@@ -1651,7 +1651,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1651
1651
}
1652
1652
1653
1653
void visit_ListClear (const ASR::ListClear_t& x) {
1654
- uint64_t ptr_loads_copy = ptr_loads;
1654
+ int64_t ptr_loads_copy = ptr_loads;
1655
1655
ptr_loads = 0 ;
1656
1656
this ->visit_expr (*x.m_a );
1657
1657
llvm::Value* plist = tmp;
@@ -1666,7 +1666,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1666
1666
}
1667
1667
1668
1668
void visit_TupleItem (const ASR::TupleItem_t& x) {
1669
- uint64_t ptr_loads_copy = ptr_loads;
1669
+ int64_t ptr_loads_copy = ptr_loads;
1670
1670
ptr_loads = 0 ;
1671
1671
this ->visit_expr (*x.m_a );
1672
1672
ptr_loads = ptr_loads_copy;
@@ -1742,7 +1742,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1742
1742
std::vector<llvm::Value*> indices;
1743
1743
for ( size_t r = 0 ; r < x.n_args ; r++ ) {
1744
1744
ASR::array_index_t curr_idx = x.m_args [r];
1745
- uint64_t ptr_loads_copy = ptr_loads;
1745
+ int64_t ptr_loads_copy = ptr_loads;
1746
1746
ptr_loads = 2 ;
1747
1747
this ->visit_expr_wrapper (curr_idx.m_right , true );
1748
1748
ptr_loads = ptr_loads_copy;
@@ -1919,11 +1919,11 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
1919
1919
}
1920
1920
der_type_name = " " ;
1921
1921
ASR::ttype_t * x_m_v_type = ASRUtils::expr_type (x.m_v );
1922
- uint64_t ptr_loads_copy = ptr_loads;
1922
+ int64_t ptr_loads_copy = ptr_loads;
1923
1923
if ( ASR::is_a<ASR::UnionRef_t>(*x.m_v ) ) {
1924
1924
ptr_loads = 0 ;
1925
1925
} else {
1926
- ptr_loads = ptr_loads_copy - ASR::is_a<ASR::Pointer_t>(*x_m_v_type);
1926
+ ptr_loads = 2 - ASR::is_a<ASR::Pointer_t>(*x_m_v_type);
1927
1927
}
1928
1928
this ->visit_expr (*x.m_v );
1929
1929
ptr_loads = ptr_loads_copy;
@@ -3628,7 +3628,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
3628
3628
}
3629
3629
3630
3630
void visit_CLoc (const ASR::CLoc_t& x) {
3631
- uint64_t ptr_loads_copy = ptr_loads;
3631
+ int64_t ptr_loads_copy = ptr_loads;
3632
3632
ptr_loads = 0 ;
3633
3633
this ->visit_expr (*x.m_arg );
3634
3634
ptr_loads = ptr_loads_copy;
@@ -3677,7 +3677,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
3677
3677
}
3678
3678
3679
3679
void visit_GetPointer (const ASR::GetPointer_t& x) {
3680
- uint64_t ptr_loads_copy = ptr_loads;
3680
+ int64_t ptr_loads_copy = ptr_loads;
3681
3681
ptr_loads = 0 ;
3682
3682
this ->visit_expr (*x.m_arg );
3683
3683
ptr_loads = ptr_loads_copy;
@@ -3686,7 +3686,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
3686
3686
}
3687
3687
3688
3688
void visit_PointerToCPtr (const ASR::PointerToCPtr_t& x) {
3689
- uint64_t ptr_loads_copy = ptr_loads;
3689
+ int64_t ptr_loads_copy = ptr_loads;
3690
3690
ptr_loads = 0 ;
3691
3691
this ->visit_expr (*x.m_arg );
3692
3692
ptr_loads = ptr_loads_copy;
@@ -3708,7 +3708,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
3708
3708
reduce_loads = cptr_var->m_intent == ASRUtils::intent_in;
3709
3709
}
3710
3710
if ( ASRUtils::is_array (ASRUtils::expr_type (fptr)) ) {
3711
- uint64_t ptr_loads_copy = ptr_loads;
3711
+ int64_t ptr_loads_copy = ptr_loads;
3712
3712
ptr_loads = 1 - reduce_loads;
3713
3713
this ->visit_expr (*cptr);
3714
3714
llvm::Value* llvm_cptr = tmp;
@@ -3758,7 +3758,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
3758
3758
builder->CreateStore (builder->CreateAdd (builder->CreateSub (new_ub, new_lb), i32_one), desi_size);
3759
3759
}
3760
3760
} else {
3761
- uint64_t ptr_loads_copy = ptr_loads;
3761
+ int64_t ptr_loads_copy = ptr_loads;
3762
3762
ptr_loads = 1 - reduce_loads;
3763
3763
this ->visit_expr (*cptr);
3764
3764
llvm::Value* llvm_cptr = tmp;
@@ -3798,7 +3798,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
3798
3798
bool is_target_struct = ASR::is_a<ASR::Struct_t>(*asr_target_type);
3799
3799
bool is_value_struct = ASR::is_a<ASR::Struct_t>(*asr_value_type);
3800
3800
if ( is_target_list && is_value_list ) {
3801
- uint64_t ptr_loads_copy = ptr_loads;
3801
+ int64_t ptr_loads_copy = ptr_loads;
3802
3802
ptr_loads = 0 ;
3803
3803
this ->visit_expr (*x.m_target );
3804
3804
llvm::Value* target_list = tmp;
@@ -3813,7 +3813,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
3813
3813
name2memidx);
3814
3814
return ;
3815
3815
} else if ( is_target_tuple && is_value_tuple ) {
3816
- uint64_t ptr_loads_copy = ptr_loads;
3816
+ int64_t ptr_loads_copy = ptr_loads;
3817
3817
if ( ASR::is_a<ASR::TupleConstant_t>(*x.m_target ) &&
3818
3818
!ASR::is_a<ASR::TupleConstant_t>(*x.m_value ) ) {
3819
3819
ptr_loads = 0 ;
@@ -3868,7 +3868,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
3868
3868
}
3869
3869
return ;
3870
3870
} else if ( is_target_dict && is_value_dict ) {
3871
- uint64_t ptr_loads_copy = ptr_loads;
3871
+ int64_t ptr_loads_copy = ptr_loads;
3872
3872
ptr_loads = 0 ;
3873
3873
this ->visit_expr (*x.m_value );
3874
3874
llvm::Value* value_dict = tmp;
@@ -3881,7 +3881,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
3881
3881
value_dict_type, module .get (), name2memidx);
3882
3882
return ;
3883
3883
} else if ( is_target_struct && is_value_struct ) {
3884
- uint64_t ptr_loads_copy = ptr_loads;
3884
+ int64_t ptr_loads_copy = ptr_loads;
3885
3885
ptr_loads = 0 ;
3886
3886
this ->visit_expr (*x.m_value );
3887
3887
llvm::Value* value_struct = tmp;
@@ -3944,7 +3944,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
3944
3944
}
3945
3945
} else if ( ASR::is_a<ASR::ListItem_t>(*x.m_target ) ) {
3946
3946
ASR::ListItem_t* asr_target0 = ASR::down_cast<ASR::ListItem_t>(x.m_target );
3947
- uint64_t ptr_loads_copy = ptr_loads;
3947
+ int64_t ptr_loads_copy = ptr_loads;
3948
3948
ptr_loads = 0 ;
3949
3949
this ->visit_expr (*asr_target0->m_a );
3950
3950
ptr_loads = ptr_loads_copy;
@@ -4961,7 +4961,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
4961
4961
uint32_t x_h = get_hash ((ASR::asr_t *)x);
4962
4962
LFORTRAN_ASSERT (llvm_symtab.find (x_h) != llvm_symtab.end ());
4963
4963
llvm::Value* x_v = llvm_symtab[x_h];
4964
- uint64_t ptr_loads_copy = ptr_loads;
4964
+ int64_t ptr_loads_copy = ptr_loads;
4965
4965
tmp = x_v;
4966
4966
while ( ptr_loads_copy-- ) {
4967
4967
tmp = CreateLoad (tmp);
@@ -5507,7 +5507,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
5507
5507
end = builder->CreateGlobalStringPtr (" \n " );
5508
5508
}
5509
5509
for (size_t i=0 ; i<x.n_values ; i++) {
5510
- uint64_t ptr_loads_copy = ptr_loads;
5510
+ int64_t ptr_loads_copy = ptr_loads;
5511
5511
int reduce_loads = 0 ;
5512
5512
ptr_loads = 2 ;
5513
5513
if ( ASR::is_a<ASR::Var_t>(*x.m_values [i]) ) {
@@ -5882,7 +5882,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
5882
5882
}
5883
5883
} else {
5884
5884
ASR::ttype_t * arg_type = expr_type (x.m_args [i].m_value );
5885
- uint64_t ptr_loads_copy = ptr_loads;
5885
+ int64_t ptr_loads_copy = ptr_loads;
5886
5886
ptr_loads = !LLVM::is_llvm_struct (arg_type);
5887
5887
this ->visit_expr_wrapper (x.m_args [i].m_value );
5888
5888
if ( x_abi == ASR::abiType::BindC ) {
@@ -6348,7 +6348,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
6348
6348
}
6349
6349
int output_kind = ASRUtils::extract_kind_from_ttype_t (x.m_type );
6350
6350
int dim_kind = 4 ;
6351
- uint64_t ptr_loads_copy = ptr_loads;
6351
+ int64_t ptr_loads_copy = ptr_loads;
6352
6352
ptr_loads = 2 - // Sync: instead of 2 - , should this be ptr_loads_copy -
6353
6353
(ASRUtils::expr_type (x.m_v )->type ==
6354
6354
ASR::ttypeType::Pointer);
@@ -6380,7 +6380,7 @@ class ASRToLLVMVisitor : public ASR::BaseVisitor<ASRToLLVMVisitor>
6380
6380
tmp = llvm::ConstantInt::get (context, llvm::APInt (kind * 8 , bound_value));
6381
6381
return ;
6382
6382
}
6383
- uint64_t ptr_loads_copy = ptr_loads;
6383
+ int64_t ptr_loads_copy = ptr_loads;
6384
6384
ptr_loads = 2 - // Sync: instead of 2 - , should this be ptr_loads_copy -
6385
6385
(ASRUtils::expr_type (x.m_v )->type ==
6386
6386
ASR::ttypeType::Pointer);
0 commit comments