Fix __ulongrem stdlib edge case (#531)

The implementation is off-by-one.

---------

Signed-off-by: xermicus <cyrill@parity.io>
This commit is contained in:
xermicus authored and GitHub committed 2026-05-28 17:25:23 +02:00
1 parent c67b95805c
commit ae8033130b
5 files changed
+107 -4

No files matched your search

+4 -4
View File
@@ -104,7 +104,7 @@ define private i256 @__ulongrem(i256 %0, i256 %1, i256 %2) #0 {
19:
%.056 = phi i256 [ %15, %13 ], [ %25, %.critedge ]
%.055 = phi i256 [ %16, %13 ], [ %26, %.critedge ]
%.not62 = icmp ult i256 %.056, 340282366920938463463374607431768211455
%.not62 = icmp ult i256 %.056, 340282366920938463463374607431768211456
br i1 %.not62, label %20, label %.critedge
20:
@@ -117,7 +117,7 @@ define private i256 @__ulongrem(i256 %0, i256 %1, i256 %2) #0 {
.critedge:
%25 = add i256 %.056, -1
%26 = add i256 %.055, %14
%.not65 = icmp ult i256 %26, 340282366920938463463374607431768211455
%.not65 = icmp ult i256 %26, 340282366920938463463374607431768211456
br i1 %.not65, label %19, label %27
27:
@@ -135,7 +135,7 @@ define private i256 @__ulongrem(i256 %0, i256 %1, i256 %2) #0 {
36:
%.2 = phi i256 [ %33, %27 ], [ %42, %.critedge1 ]
%.1 = phi i256 [ %34, %27 ], [ %43, %.critedge1 ]
%.not63 = icmp ult i256 %.2, 340282366920938463463374607431768211455
%.not63 = icmp ult i256 %.2, 340282366920938463463374607431768211456
br i1 %.not63, label %37, label %.critedge1
37:
@@ -148,7 +148,7 @@ define private i256 @__ulongrem(i256 %0, i256 %1, i256 %2) #0 {
.critedge1:
%42 = add i256 %.2, -1
%43 = add i256 %.1, %14
%.not64 = icmp ult i256 %43, 340282366920938463463374607431768211455
%.not64 = icmp ult i256 %43, 340282366920938463463374607431768211456
br i1 %.not64, label %36, label %44
44: