Mesa (main): lima: fix warning of garbage value access
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Feb 11 22:03:20 UTC 2022
Module: Mesa
Branch: main
Commit: 60888c95bdf3154e6e99c3ea51b9e4a2af189cb6
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=60888c95bdf3154e6e99c3ea51b9e4a2af189cb6
Author: Erico Nunes <nunes.erico at gmail.com>
Date: Fri Feb 4 20:17:26 2022 +0100
lima: fix warning of garbage value access
scan-build complains that an access of reg[j+1] in this code might
return garbage.
Let's take the chance to clean this open coded sorting code up and
just use qsort.
Signed-off-by: Erico Nunes <nunes.erico at gmail.com>
Reviewed-by: Vasily Khoruzhick <anarsoul at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14894>
---
src/gallium/drivers/lima/ir/gp/reduce_scheduler.c | 17 ++++++++---------
src/gallium/drivers/lima/ir/pp/scheduler.c | 14 +++++---------
2 files changed, 13 insertions(+), 18 deletions(-)
diff --git a/src/gallium/drivers/lima/ir/gp/reduce_scheduler.c b/src/gallium/drivers/lima/ir/gp/reduce_scheduler.c
index 47cc6109e01..bcfe6fd89b0 100644
--- a/src/gallium/drivers/lima/ir/gp/reduce_scheduler.c
+++ b/src/gallium/drivers/lima/ir/gp/reduce_scheduler.c
@@ -31,6 +31,13 @@
* Author: Vivek Sarkar, Mauricio J. Serrano, Barbara B. Simons
*/
+static int cmp_float(const void *a, const void *b)
+{
+ const float *fa = (const float *) a;
+ const float *fb = (const float *) b;
+ return (*fa > *fb) - (*fa < *fb);
+}
+
static void schedule_calc_sched_info(gpir_node *node)
{
int n = 0;
@@ -68,15 +75,7 @@ static void schedule_calc_sched_info(gpir_node *node)
}
/* sort */
- for (i = 0; i < n - 1; i++) {
- for (int j = 0; j < n - i - 1; j++) {
- if (reg[j] > reg[j + 1]) {
- float tmp = reg[j + 1];
- reg[j + 1] = reg[j];
- reg[j] = tmp;
- }
- }
- }
+ qsort(reg, n, sizeof(reg[0]), cmp_float);
for (i = 0; i < n; i++) {
float pressure = reg[i] + n - (i + 1);
diff --git a/src/gallium/drivers/lima/ir/pp/scheduler.c b/src/gallium/drivers/lima/ir/pp/scheduler.c
index 5e7a17c9bb9..b81e2d61936 100644
--- a/src/gallium/drivers/lima/ir/pp/scheduler.c
+++ b/src/gallium/drivers/lima/ir/pp/scheduler.c
@@ -26,6 +26,10 @@
#include "ppir.h"
+static int cmp_int(const void *a, const void *b)
+{
+ return (*(int*)a - *(int*)b);
+}
static void ppir_schedule_calc_sched_info(ppir_instr *instr)
{
@@ -62,15 +66,7 @@ static void ppir_schedule_calc_sched_info(ppir_instr *instr)
}
/* sort */
- for (i = 0; i < n - 1; i++) {
- for (int j = 0; j < n - i - 1; j++) {
- if (reg[j] > reg[j + 1]) {
- int tmp = reg[j + 1];
- reg[j + 1] = reg[j];
- reg[j] = tmp;
- }
- }
- }
+ qsort(reg, n, sizeof(reg[0]), cmp_int);
for (i = 0; i < n; i++) {
int pressure = reg[i] + n - (i + 1);
More information about the mesa-commit
mailing list