intel/perf: don't generate logically dead code
authorMarcin Ślusarz <marcin.slusarz@intel.com>
Thu, 30 Jul 2020 13:33:09 +0000 (15:33 +0200)
committerMarge Bot <eric+marge@anholt.net>
Wed, 2 Sep 2020 15:08:01 +0000 (15:08 +0000)
When divisor is constant integer != 0 there's no point in checking
whether it's 0.

Complained about by Coverity.

Signed-off-by: Marcin Ślusarz <marcin.slusarz@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6126>

src/intel/perf/gen_perf.py

index a64cb86a5f6421be323d4607d00fca39d26e3d2b..0d0aae90b5f3b089434dd98d7b3741c4d9119a3d 100644 (file)
@@ -105,7 +105,11 @@ def emit_uadd(tmp_id, args):
 def emit_udiv(tmp_id, args):
     c("uint64_t tmp{0} = {1};".format(tmp_id, args[1]))
     c("uint64_t tmp{0} = {1};".format(tmp_id + 1, args[0]))
-    c("uint64_t tmp{0} = tmp{1} ? tmp{2} / tmp{1} : 0;".format(tmp_id + 2, tmp_id + 1, tmp_id))
+    if args[0].isdigit():
+        assert int(args[0]) > 0
+        c("uint64_t tmp{0} = tmp{2} / tmp{1};".format(tmp_id + 2, tmp_id + 1, tmp_id))
+    else:
+        c("uint64_t tmp{0} = tmp{1} ? tmp{2} / tmp{1} : 0;".format(tmp_id + 2, tmp_id + 1, tmp_id))
     return tmp_id + 3
 
 def emit_umul(tmp_id, args):