<div><br><div class="gmail_quote"><div>On Sun, Jan 22, 2017 at 1:49 PM Rhys Kidd <<a href="mailto:rhyskidd@gmail.com">rhyskidd@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_msg">On 20 January 2017 at 17:06, Christian Gmeiner <span class="gmail_msg"><<a href="mailto:christian.gmeiner@gmail.com" class="gmail_msg" target="_blank">christian.gmeiner@gmail.com</a>></span> wrote:<br class="gmail_msg"></div><div class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Rhys,<br class="gmail_msg">
<span class="m_-6653066400561778940gmail- gmail_msg"><br class="gmail_msg">
2017-01-19 7:02 GMT+01:00 Rhys Kidd <<a href="mailto:rhyskidd@gmail.com" class="gmail_msg" target="_blank">rhyskidd@gmail.com</a>>:<br class="gmail_msg">
> Use of unsigned loop control variable with '>= 0' would lead to infinite loop.<br class="gmail_msg">
><br class="gmail_msg">
> Reported by clang:<br class="gmail_msg">
><br class="gmail_msg">
> etnaviv_compiler.c:1024:39: warning: comparison of unsigned expression >= 0 is<br class="gmail_msg">
>       always true [-Wtautological-compare]<br class="gmail_msg">
>    for (unsigned sp = c->frame_sp; sp >= 0; sp--)<br class="gmail_msg">
>                                    ~~ ^  ~<br class="gmail_msg">
><br class="gmail_msg">
> Signed-off-by: Rhys Kidd <<a href="mailto:rhyskidd@gmail.com" class="gmail_msg" target="_blank">rhyskidd@gmail.com</a>><br class="gmail_msg">
> ---<br class="gmail_msg">
>  src/gallium/drivers/etnaviv/etnaviv_compiler.c | 2 +-<br class="gmail_msg">
>  1 file changed, 1 insertion(+), 1 deletion(-)<br class="gmail_msg">
><br class="gmail_msg">
> I compile tested etnaviv but have not functionally tested on real hardware.<br class="gmail_msg">
><br class="gmail_msg">
> diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler.c b/src/gallium/drivers/etnaviv/etnaviv_compiler.c<br class="gmail_msg">
> index 59e1452..f1c6787 100644<br class="gmail_msg">
> --- a/src/gallium/drivers/etnaviv/etnaviv_compiler.c<br class="gmail_msg">
> +++ b/src/gallium/drivers/etnaviv/etnaviv_compiler.c<br class="gmail_msg">
> @@ -1021,7 +1021,7 @@ label_mark_use(struct etna_compile *c, struct etna_compile_label *label)<br class="gmail_msg">
>  static struct etna_compile_frame *<br class="gmail_msg">
>  find_frame(struct etna_compile *c, enum etna_compile_frame_type type)<br class="gmail_msg">
>  {<br class="gmail_msg">
> -   for (unsigned sp = c->frame_sp; sp >= 0; sp--)<br class="gmail_msg">
> +   for (unsigned sp = c->frame_sp + 1; sp-- > 0 ; )<br class="gmail_msg">
<br class="gmail_msg">
</span>looks quite ugly - I have a better and simpler fix.<br class="gmail_msg">
<span class="m_-6653066400561778940gmail- gmail_msg"><br class="gmail_msg">
>        if (c->frame_stack[sp].type == type)<br class="gmail_msg">
>           return &c->frame_stack[sp];<br class="gmail_msg">
><br class="gmail_msg">
> --<br class="gmail_msg">
> 2.9.3<br class="gmail_msg">
><br class="gmail_msg">
<br class="gmail_msg">
</span>------------8<-------------------<br class="gmail_msg">
<br class="gmail_msg">
Subject: [PATCH] etnaviv: Avoid infinite loop in find_frame()<br class="gmail_msg">
<span class="m_-6653066400561778940gmail- gmail_msg"><br class="gmail_msg">
Use of unsigned loop control variable with '>= 0' would lead to infinite<br class="gmail_msg">
loop.<br class="gmail_msg">
<br class="gmail_msg">
Reported by clang:<br class="gmail_msg">
<br class="gmail_msg">
etnaviv_compiler.c:1024:39: warning: comparison of unsigned expression<br class="gmail_msg">
>= 0 is always true [-Wtautological-compare]<br class="gmail_msg">
   for (unsigned sp = c->frame_sp; sp >= 0; sp--)<br class="gmail_msg">
                                   ~~ ^  ~<br class="gmail_msg">
<br class="gmail_msg">
</span>v2: Simply use the same datatype as c->frame_sp is using.<br class="gmail_msg">
<br class="gmail_msg">
Reported-by: Rhys Kidd <<a href="mailto:rhyskidd@gmail.com" class="gmail_msg" target="_blank">rhyskidd@gmail.com</a>><br class="gmail_msg">
Signed-off-by: Christian Gmeiner <<a href="mailto:christian.gmeiner@gmail.com" class="gmail_msg" target="_blank">christian.gmeiner@gmail.com</a>><br class="gmail_msg">
<span class="m_-6653066400561778940gmail- gmail_msg">---<br class="gmail_msg">
 src/gallium/drivers/etnaviv/etnaviv_compiler.c | 2 +-<br class="gmail_msg">
 1 file changed, 1 insertion(+), 1 deletion(-)<br class="gmail_msg">
<br class="gmail_msg">
</span>diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler.c<br class="gmail_msg">
b/src/gallium/drivers/etnaviv/etnaviv_compiler.c<br class="gmail_msg">
index 59e1452..dc9af57 100644<br class="gmail_msg">
<span class="m_-6653066400561778940gmail- gmail_msg">--- a/src/gallium/drivers/etnaviv/etnaviv_compiler.c<br class="gmail_msg">
+++ b/src/gallium/drivers/etnaviv/etnaviv_compiler.c<br class="gmail_msg">
@@ -1021,7 +1021,7 @@ label_mark_use(struct etna_compile *c, struct<br class="gmail_msg">
etna_compile_label *label)<br class="gmail_msg">
 static struct etna_compile_frame *<br class="gmail_msg">
 find_frame(struct etna_compile *c, enum etna_compile_frame_type type)<br class="gmail_msg">
 {<br class="gmail_msg">
-   for (unsigned sp = c->frame_sp; sp >= 0; sp--)<br class="gmail_msg">
</span>+   for (int sp = c->frame_sp; sp >= 0; sp--)<br class="gmail_msg">
<span class="m_-6653066400561778940gmail- gmail_msg">       if (c->frame_stack[sp].type == type)<br class="gmail_msg">
          return &c->frame_stack[sp];<br class="gmail_msg">
<br class="gmail_msg">
--<br class="gmail_msg">
2.9.3<br class="gmail_msg">
</span>------------8<-------------------<br class="gmail_msg">
<br class="gmail_msg">
If you are okay with that I will push it in the next days.<br class="gmail_msg">
<br class="gmail_msg"></blockquote></div></div></div><div class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"><br class="gmail_msg">Reviewed-by: Rhys Kidd <<a href="mailto:rhyskidd@gmail.com" class="gmail_msg" target="_blank">rhyskidd@gmail.com</a>><br class="gmail_msg"></div></div></div></div></blockquote><div><br></div><div>Hello Christian,</div><div><br></div><div>I don't think this change made it to master as yet.</div><div><br></div><div>Regards,</div><div>Rhys</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg"> </div></div></div></div><div class="gmail_msg"><div class="gmail_extra gmail_msg"><div class="gmail_quote gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
greets<br class="gmail_msg">
--<br class="gmail_msg">
Christian Gmeiner, MSc<br class="gmail_msg">
<br class="gmail_msg">
<a href="https://www.youtube.com/user/AloryOFFICIAL" rel="noreferrer" class="gmail_msg" target="_blank">https://www.youtube.com/user/AloryOFFICIAL</a><br class="gmail_msg">
<a href="https://soundcloud.com/christian-gmeiner" rel="noreferrer" class="gmail_msg" target="_blank">https://soundcloud.com/christian-gmeiner</a><br class="gmail_msg">
</blockquote></div></div></div></blockquote></div></div>