libdrm_radeon: Fix loops so that compiler can optimize them.
authorPauli Nieminen <suokkos@gmail.com>
Tue, 18 Aug 2009 15:51:37 +0000 (18:51 +0300)
committerAlex Deucher <alexdeucher@gmail.com>
Tue, 18 Aug 2009 18:53:46 +0000 (14:53 -0400)
GCC did war about optimization not possible because possible forever loop.

Signed-off-by: Pauli Nieminen <suokkos@gmail.com>
libdrm/radeon/radeon_cs_gem.c

index 264b067..a0db53b 100644 (file)
@@ -354,21 +354,21 @@ static void cs_gem_print(struct radeon_cs *cs, FILE *file)
     unsigned opcode;
     unsigned reg;
     unsigned cnt;
-    int i, j;
+    unsigned int i, j;
 
     for (i = 0; i < cs->cdw;) {
-        cnt = CP_PACKET_GET_COUNT(cs->packets[i]);
+        cnt = CP_PACKET_GET_COUNT(cs->packets[i]) + 1;
         switch (CP_PACKET_GET_TYPE(cs->packets[i])) {
         case PACKET_TYPE0:
-            fprintf(file, "Pkt0 at %d (%d dwords):\n", i, cnt + 1);
+            fprintf(file, "Pkt0 at %d (%d dwords):\n", i, cnt);
             reg = CP_PACKET0_GET_REG(cs->packets[i]);
             if (CP_PACKET0_GET_ONE_REG_WR(cs->packets[i++])) {
-                for (j = 0; j <= cnt; j++) {
+                for (j = 0; j < cnt; j++) {
                     fprintf(file, "    0x%08X -> 0x%04X\n",
                             cs->packets[i++], reg);
                 }
             } else {
-                for (j = 0; j <= cnt; j++) {
+                for (j = 0; j < cnt; j++) {
                     fprintf(file, "    0x%08X -> 0x%04X\n",
                             cs->packets[i++], reg);
                     reg += 4;
@@ -410,7 +410,7 @@ static void cs_gem_print(struct radeon_cs *cs, FILE *file)
                 fprintf(file, "Unknow opcode 0x%02X at %d\n", opcode, i);
                 return;
             }
-            for (j = 0; j <= cnt; j++) {
+            for (j = 0; j < cnt; j++) {
                 fprintf(file, "        0x%08X\n", cs->packets[i++]);
             }
             break;