Skip to content

Commit 50435f0

Browse files
vitalybukaAdvenamTacet
authored andcommitted
simplify a few loops and branches
1 parent 88f094c commit 50435f0

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

compiler-rt/lib/asan/asan_poisoning.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,8 @@ static void SlowCopyContainerAnnotations(uptr src_beg, uptr src_end,
601601
uptr granule_end = granule_beg + granularity;
602602
uptr unpoisoned_bytes = 0;
603603

604-
for (; dst_ptr != granule_end && dst_ptr != dst_end; ++dst_ptr, ++src_ptr)
604+
uptr end = Min(granule_end, dst_end);
605+
for (; dst_ptr != end; ++dst_ptr, ++src_ptr)
605606
if (!AddressIsPoisoned(src_ptr))
606607
unpoisoned_bytes = dst_ptr - granule_beg + 1;
607608
if (dst_ptr < dst_end || dst_ptr == dst_end_down ||
@@ -629,7 +630,8 @@ static void SlowReversedCopyContainerAnnotations(uptr src_beg, uptr src_end,
629630
uptr granule_beg = RoundDownTo(dst_ptr - 1, granularity);
630631
uptr unpoisoned_bytes = 0;
631632

632-
for (; dst_ptr != granule_beg && dst_ptr != dst_beg; --dst_ptr, --src_ptr)
633+
uptr end = Max(granule_beg, dst_beg);
634+
for (; dst_ptr != end; --dst_ptr, --src_ptr)
633635
if (unpoisoned_bytes == 0 && !AddressIsPoisoned(src_ptr - 1))
634636
unpoisoned_bytes = dst_ptr - granule_beg;
635637

@@ -716,6 +718,7 @@ void __sanitizer_copy_contiguous_container_annotations(const void *src_beg_p,
716718
//
717719
// The only remaining edge cases involve edge granules,
718720
// when the container starts or ends within a granule.
721+
uptr src_beg_up = RoundUpTo(src_beg, granularity);
719722
uptr src_end_up = RoundUpTo(src_end, granularity);
720723
bool copy_in_reversed_order = src_beg < dst_beg && dst_beg <= src_end_up;
721724
if (src_beg % granularity != dst_beg % granularity ||
@@ -739,11 +742,10 @@ void __sanitizer_copy_contiguous_container_annotations(const void *src_beg_p,
739742
CopyContainerFirstGranuleAnnotation(src_beg, dst_beg);
740743
}
741744

742-
if (dst_end_down > dst_beg_up) {
743-
uptr src_internal_beg = RoundUpTo(src_beg, granularity);
744-
__builtin_memmove((u8 *)MemToShadow(dst_beg_up),
745-
(u8 *)MemToShadow(src_internal_beg),
746-
(dst_end_down - dst_beg_up) / granularity);
745+
if (dst_beg_up < dst_end_down) {
746+
internal_memmove((u8 *)MemToShadow(dst_beg_up),
747+
(u8 *)MemToShadow(src_beg_up),
748+
(dst_end_down - dst_beg_up) / granularity);
747749
}
748750

749751
if (copy_in_reversed_order) {

0 commit comments

Comments
 (0)