Skip to content

Commit

Permalink
[TEST] Fix division by 0 in llvm codegen test (#14232)
Browse files Browse the repository at this point in the history
In the test `test_llvm_div`, some cases can lead to a division by 0.
Consider the case when `start=-12, end=-12, dstart=-2 and dend=0`, the
range of values input to clipb() will be: [-12, ..., -1, 1] (with 1
being specially selected to prevent division by 0). For the input 1,
clipb evaluates to: min(/*dend=*/0, max(/*dstart=*/-12, /*i=*/1)) = 0,
thus leading to a division by 0.

LLVM11, which runs in CI, doesn't seem to throw any kind of error, while
using LLVM15 leads to a "floating point exception". Regardless, since
division by 0 is undefined behaviour and the compiler can do anything,
the solution here is to fix the test so division by 0 doesn't occur.

Change-Id: Ib82776e9e0aff443dacc101a579d382059bb9826
  • Loading branch information
lhutton1 authored Mar 9, 2023
1 parent 1453fe0 commit 6b4e3d0
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions tests/python/unittest/test_target_codegen_llvm.py
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,7 @@ def _show_info():
]:
for dstart, dend in [
(-11, -1),
(-11, 0),
(-11, 1),
(-4, -4),
(-2, -2),
(1, 11),
Expand All @@ -534,7 +534,7 @@ def _show_info():
(2, 2),
(-11, 11),
]:
if end < start or dend < dstart or (dend == 0 and dstart == 0):
if end < start or dend < dstart or (dend == 0 and dstart == 0) or dend == 0:
continue
check(start, end, dstart, dend, "int32", floor_div=False)
check(start, end, dstart, dend, "int32", floor_div=True)
Expand Down

0 comments on commit 6b4e3d0

Please sign in to comment.