@@ -564,8 +564,8 @@ def _add_to_adjacency_list(self, src_node_ptr, tgt_node_ptr):
564564 self .builder .branch (no_copy_adj_block )
565565
566566 self .builder .position_at_end (no_copy_adj_block )
567- new_array_void = self .builder .bitcast (new_array , self .void_ptr )
568- self .builder .store (new_array_void , adj_list_ptr )
567+ new_array_as_void = self .builder .bitcast (new_array , self .void_ptr )
568+ self .builder .store (new_array_as_void , adj_list_ptr )
569569 self .builder .store (new_capacity , adj_cap_ptr )
570570 self .builder .branch (add_adj_block )
571571
@@ -647,13 +647,15 @@ def _create_is_adjacent(self):
647647 adj_list_ptr = self .builder .gep (node1_ptr , [ir .Constant (self .int_type , 0 ), ir .Constant (self .int_type , 3 )])
648648 adj_count_ptr = self .builder .gep (node1_ptr , [ir .Constant (self .int_type , 0 ), ir .Constant (self .int_type , 4 )])
649649
650- adj_list = self .builder .load (adj_list_ptr )
650+ adj_list_void = self .builder .load (adj_list_ptr )
651651 adj_count = self .builder .load (adj_count_ptr )
652652
653- adj_exists = self .builder .icmp_signed ('!=' , adj_list , ir .Constant (self .void_ptr , None ))
653+ adj_exists = self .builder .icmp_signed ('!=' , adj_list_void , ir .Constant (self .void_ptr , None ))
654+ count_positive = self .builder .icmp_signed ('>' , adj_count , ir .Constant (self .int_type , 0 ))
655+ should_search = self .builder .and_ (adj_exists , count_positive )
654656
655657 search_adj_block = self .is_adjacent .append_basic_block (name = "search_adjacency" )
656- self .builder .cbranch (adj_exists , search_adj_block , false_block )
658+ self .builder .cbranch (should_search , search_adj_block , false_block )
657659
658660 self .builder .position_at_end (search_adj_block )
659661 i = self .builder .alloca (self .int_type , name = "adj_search_i" )
@@ -672,7 +674,7 @@ def _create_is_adjacent(self):
672674 self .builder .cbranch (loop_condition , adj_check_block , false_block )
673675
674676 self .builder .position_at_end (adj_check_block )
675- adj_list_typed = self .builder .bitcast (adj_list , self .node_type .as_pointer ().as_pointer ())
677+ adj_list_typed = self .builder .bitcast (adj_list_void , self .node_type .as_pointer ().as_pointer ())
676678 adj_entry_ptr = self .builder .gep (adj_list_typed , [i_val ])
677679 adj_node = self .builder .load (adj_entry_ptr )
678680
0 commit comments