msc51opt.dif
资源名称:unzip540.zip [点击查看]
上传用户:andy_li
上传日期:2007-01-06
资源大小:1019k
文件大小:3k
源码类别:
压缩解压
开发平台:
MultiPlatform
- Date: Mon, 28 Aug 1995 23:53:23 CET +0100
- From: "Christian Spieler, Institut fuer Kernphysik, Schlossgartenstr. 9,
- D-64289 Darmstadt" <SPIELER@linac.ikp.physik.th-darmstadt.de>
- Subject: More MSC 5.1 related patches for UnZip 5.20f2
- D) I want to suggest two small patches to allow the use of
- full optimization (including loop optimization) when compiling UnZip
- with MSC (5.1, and probably newer). There are only two small pieces
- of code (containing to deeply nested loops) that break MSC 5.1's loop
- optimization. I have guarded these loops with "#pragma loop_opt (off)"
- to allow loop optimization for the rest of the code. Here are the patches:
- ===================== cut here ========================
- diff -c ./inflate.c ./modif/inflate.c
- *** ./inflate.c Thu Oct 05 14:57:38 1995
- --- ./modif/inflate.c Thu Oct 05 14:58:24 1995
- ***************
- *** 1162,1173 ****
- --- 1162,1179 ----
- { /* too few codes for k-w bit table */
- f -= a + 1; /* deduct codes from patterns left */
- xp = c + k;
- + #if defined (MSC)
- + #pragma loop_opt (off)
- + #endif /* MS C compilers */
- while (++j < z) /* try smaller tables up to z bits */
- {
- if ((f <<= 1) <= *++xp)
- break; /* enough codes to use up j bits */
- f -= *xp; /* else deduct codes from patterns */
- }
- + #if defined (MSC)
- + #pragma loop_opt ()
- + #endif /* MS C compilers */
- }
- if ((unsigned)w + j > el && (unsigned)w < el)
- j = el - w; /* make EOB code end at table */
- diff -c ./zipinfo.c ./modif/zipinfo.c
- *** ./zipinfo.c Thu Oct 05 14:51:58 1995
- --- ./modif/zipinfo.c Thu Oct 05 14:52:42 1995
- ***************
- *** 1134,1145 ****
- --- 1134,1151 ----
- workspace[10] = 'E';
- p = attribs;
- + #if defined (MSC) && (!defined (_MSC_VER) || _MSC_VER < 600)
- + #pragma loop_opt (off)
- + #endif /* MS C, Version < 6.00 */
- for (k = j = 0; j < 3; ++j) { /* groups of permissions */
- for (i = 0; i < 4; ++i, ++k) /* perms within a group */
- if (workspace[k])
- *p++ = workspace[k];
- *p++ = ','; /* group separator */
- }
- + #if defined (MSC) && (!defined (_MSC_VER) || _MSC_VER < 600)
- + #pragma loop_opt ()
- + #endif /* MS C, Version < 6.00 */
- *--p = ' '; /* overwrite last comma */
- if ((p - attribs) < 12)
- sprintf(&attribs[12], "%d.%d", hostver/10, hostver%10);