Skip to content

Commit 5c7b636

Browse files
Prerak SinghPrerak Singh
authored andcommitted
bug fix
1 parent bba424d commit 5c7b636

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

pydatastructs/graphs/_backend/cpp/llvm_adjacency_list.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)