From bfca0b8873cbca69f0a0b5ca4f2cff27b012e0ff Mon Sep 17 00:00:00 2001 From: Luke Hutton Date: Tue, 7 Mar 2023 21:11:27 +0000 Subject: [PATCH] [TEST] Fix division by 0 in llvm codegen test 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 --- tests/python/unittest/test_target_codegen_llvm.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/python/unittest/test_target_codegen_llvm.py b/tests/python/unittest/test_target_codegen_llvm.py index d8a853ff5dbf..bef682435ebf 100644 --- a/tests/python/unittest/test_target_codegen_llvm.py +++ b/tests/python/unittest/test_target_codegen_llvm.py @@ -525,7 +525,7 @@ def _show_info(): ]: for dstart, dend in [ (-11, -1), - (-11, 0), + (-11, 1), (-4, -4), (-2, -2), (1, 11), @@ -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)