https://bugs.freedesktop.org/show_bug.cgi?id=54867
Bug #: 54867 Summary: bug in r300 compiler Classification: Unclassified Product: Mesa Version: git Platform: All OS/Version: Linux (All) Status: NEW Severity: normal Priority: medium Component: Drivers/Gallium/r300 AssignedTo: dri-devel@lists.freedesktop.org ReportedBy: son_of_the_osiris@interia.pl
Orginally posted on mailing list:
In playing with Coccinelle, I discovered a signed/unsigned bug in radeon_rename_regs.c:rc_rename_regs.
unsigned new_index; unsigned writemask; struct rc_variable * var = var_ptr->Item;
if (var->Inst->U.I.DstReg.File != RC_FILE_TEMPORARY) { continue; }
new_index = rc_find_free_temporary_list(c, used, used_length, RC_MASK_XYZW); if (new_index < 0) { rc_error(c, "Ran out of temporary registers\n"); return; }
unsigned new_index is compared with < 0.
I don't know the code, but I can't imagine that you'd need an unsigned to represent a register index value.
Matt Turner