msc51opt.dif
上传用户:andy_li
上传日期:2007-01-06
资源大小:1019k
文件大小:3k
源码类别:

压缩解压

开发平台:

MultiPlatform

  1. Date: Mon, 28 Aug 1995 23:53:23 CET +0100
  2. From: "Christian Spieler, Institut fuer Kernphysik, Schlossgartenstr. 9,
  3.       D-64289 Darmstadt" <SPIELER@linac.ikp.physik.th-darmstadt.de>
  4. Subject: More MSC 5.1 related patches for UnZip 5.20f2
  5. D) I want to suggest two small patches to allow the use of
  6.    full optimization (including loop optimization) when compiling UnZip
  7.    with MSC (5.1, and probably newer). There are only two small pieces
  8.    of code (containing to deeply nested loops) that break MSC 5.1's loop
  9.    optimization. I have guarded these loops with "#pragma loop_opt (off)"
  10.    to allow loop optimization for the rest of the code. Here are the patches:
  11. ===================== cut here ========================
  12. diff -c ./inflate.c ./modif/inflate.c
  13. *** ./inflate.c Thu Oct 05 14:57:38 1995
  14. --- ./modif/inflate.c Thu Oct 05 14:58:24 1995
  15. ***************
  16. *** 1162,1173 ****
  17. --- 1162,1179 ----
  18.           {                       /* too few codes for k-w bit table */
  19.             f -= a + 1;           /* deduct codes from patterns left */
  20.             xp = c + k;
  21. + #if defined (MSC)
  22. + #pragma loop_opt (off)
  23. + #endif /* MS C compilers */
  24.             while (++j < z)       /* try smaller tables up to z bits */
  25.             {
  26.               if ((f <<= 1) <= *++xp)
  27.                 break;            /* enough codes to use up j bits */
  28.               f -= *xp;           /* else deduct codes from patterns */
  29.             }
  30. + #if defined (MSC)
  31. + #pragma loop_opt ()
  32. + #endif /* MS C compilers */
  33.           }
  34.           if ((unsigned)w + j > el && (unsigned)w < el)
  35.             j = el - w;           /* make EOB code end at table */
  36. diff -c ./zipinfo.c ./modif/zipinfo.c
  37. *** ./zipinfo.c Thu Oct 05 14:51:58 1995
  38. --- ./modif/zipinfo.c Thu Oct 05 14:52:42 1995
  39. ***************
  40. *** 1134,1145 ****
  41. --- 1134,1151 ----
  42.                       workspace[10] = 'E';
  43.   
  44.                   p = attribs;
  45. + #if defined (MSC) && (!defined (_MSC_VER) || _MSC_VER < 600)
  46. + #pragma loop_opt (off)
  47. + #endif /* MS C, Version < 6.00 */
  48.                   for (k = j = 0;  j < 3;  ++j) {     /* groups of permissions */
  49.                       for (i = 0;  i < 4;  ++i, ++k)  /* perms within a group */
  50.                           if (workspace[k])
  51.                               *p++ = workspace[k];
  52.                       *p++ = ',';                     /* group separator */
  53.                   }
  54. + #if defined (MSC) && (!defined (_MSC_VER) || _MSC_VER < 600)
  55. + #pragma loop_opt ()
  56. + #endif /* MS C, Version < 6.00 */
  57.                   *--p = ' ';   /* overwrite last comma */
  58.                   if ((p - attribs) < 12)
  59.                       sprintf(&attribs[12], "%d.%d", hostver/10, hostver%10);