Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

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