1 /* 2 **************************************************************************** 3 * 4 * "DHRYSTONE" Benchmark Program 5 * ----------------------------- 6 * 7 * Version: C, Version 2.1 8 * 9 * File: dhry_2.c (part 3 of 3) 10 * 11 * Date: May 17, 1988 12 * 13 * Author: Reinhold P. Weicker 14 * 15 **************************************************************************** 16 */ 17 18 #include "dhry.h" 19 20 #ifndef REG 21 #define REG 22 /* REG becomes defined as empty */ 23 /* i.e. no register variables */ 24 #endif 25 26 extern int Int_Glob; 27 extern char Ch_1_Glob; 28 29 30 Proc_6 (Enum_Val_Par, Enum_Ref_Par) 31 /*********************************/ 32 /* executed once */ 33 /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */ 34 35 Enumeration Enum_Val_Par; 36 Enumeration *Enum_Ref_Par; 37 { 38 *Enum_Ref_Par = Enum_Val_Par; 39 if (! Func_3 (Enum_Val_Par)) 40 /* then, not executed */ 41 *Enum_Ref_Par = Ident_4; 42 switch (Enum_Val_Par) 43 { 44 case Ident_1: 45 *Enum_Ref_Par = Ident_1; 46 break; 47 case Ident_2: 48 if (Int_Glob > 100) 49 /* then */ 50 *Enum_Ref_Par = Ident_1; 51 else *Enum_Ref_Par = Ident_4; 52 break; 53 case Ident_3: /* executed */ 54 *Enum_Ref_Par = Ident_2; 55 break; 56 case Ident_4: break; 57 case Ident_5: 58 *Enum_Ref_Par = Ident_3; 59 break; 60 } /* switch */ 61 return 0; } /* Proc_6 */ 62 63 64 Proc_7 (Int_1_Par_Val, Int_2_Par_Val, Int_Par_Ref) 65 /**********************************************/ 66 /* executed three times */ 67 /* first call: Int_1_Par_Val == 2, Int_2_Par_Val == 3, */ 68 /* Int_Par_Ref becomes 7 */ 69 /* second call: Int_1_Par_Val == 10, Int_2_Par_Val == 5, */ 70 /* Int_Par_Ref becomes 17 */ 71 /* third call: Int_1_Par_Val == 6, Int_2_Par_Val == 10, */ 72 /* Int_Par_Ref becomes 18 */ 73 One_Fifty Int_1_Par_Val; 74 One_Fifty Int_2_Par_Val; 75 One_Fifty *Int_Par_Ref; 76 { 77 One_Fifty Int_Loc; 78 79 Int_Loc = Int_1_Par_Val + 2; 80 *Int_Par_Ref = Int_2_Par_Val + Int_Loc; 81 return 0; } /* Proc_7 */ 82 83 84 Proc_8 (Arr_1_Par_Ref, Arr_2_Par_Ref, Int_1_Par_Val, Int_2_Par_Val) 85 /*********************************************************************/ 86 /* executed once */ 87 /* Int_Par_Val_1 == 3 */ 88 /* Int_Par_Val_2 == 7 */ 89 Arr_1_Dim Arr_1_Par_Ref; 90 Arr_2_Dim Arr_2_Par_Ref; 91 int Int_1_Par_Val; 92 int Int_2_Par_Val; 93 { 94 REG One_Fifty Int_Index; 95 REG One_Fifty Int_Loc; 96 97 Int_Loc = Int_1_Par_Val + 5; 98 Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val; 99 Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc]; 100 Arr_1_Par_Ref [Int_Loc+30] = Int_Loc; 101 for (Int_Index = Int_Loc; Int_Index <= Int_Loc+1; ++Int_Index) 102 Arr_2_Par_Ref [Int_Loc] [Int_Index] = Int_Loc; 103 Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1; 104 Arr_2_Par_Ref [Int_Loc+20] [Int_Loc] = Arr_1_Par_Ref [Int_Loc]; 105 Int_Glob = 5; 106 return 0; } /* Proc_8 */ 107 108 109 Enumeration Func_1 (Ch_1_Par_Val, Ch_2_Par_Val) 110 /*************************************************/ 111 /* executed three times */ 112 /* first call: Ch_1_Par_Val == 'H', Ch_2_Par_Val == 'R' */ 113 /* second call: Ch_1_Par_Val == 'A', Ch_2_Par_Val == 'C' */ 114 /* third call: Ch_1_Par_Val == 'B', Ch_2_Par_Val == 'C' */ 115 116 Capital_Letter Ch_1_Par_Val; 117 Capital_Letter Ch_2_Par_Val; 118 { 119 Capital_Letter Ch_1_Loc; 120 Capital_Letter Ch_2_Loc; 121 122 Ch_1_Loc = Ch_1_Par_Val; 123 Ch_2_Loc = Ch_1_Loc; 124 if (Ch_2_Loc != Ch_2_Par_Val) 125 /* then, executed */ 126 return (Ident_1); 127 else /* not executed */ 128 { 129 Ch_1_Glob = Ch_1_Loc; 130 return (Ident_2); 131 } 132 } /* Func_1 */ 133 134 135 Boolean Func_2 (Str_1_Par_Ref, Str_2_Par_Ref) 136 /*************************************************/ 137 /* executed once */ 138 /* Str_1_Par_Ref == "DHRYSTONE PROGRAM, 1'ST STRING" */ 139 /* Str_2_Par_Ref == "DHRYSTONE PROGRAM, 2'ND STRING" */ 140 141 Str_30 Str_1_Par_Ref; 142 Str_30 Str_2_Par_Ref; 143 { 144 REG One_Thirty Int_Loc; 145 Capital_Letter Ch_Loc; 146 147 Int_Loc = 2; 148 while (Int_Loc <= 2) /* loop body executed once */ 149 if (Func_1 (Str_1_Par_Ref[Int_Loc], 150 Str_2_Par_Ref[Int_Loc+1]) == Ident_1) 151 /* then, executed */ 152 { 153 Ch_Loc = 'A'; 154 Int_Loc += 1; 155 } /* if, while */ 156 if (Ch_Loc >= 'W' && Ch_Loc < 'Z') 157 /* then, not executed */ 158 Int_Loc = 7; 159 if (Ch_Loc == 'R') 160 /* then, not executed */ 161 return (true); 162 else /* executed */ 163 { 164 if (strcmp (Str_1_Par_Ref, Str_2_Par_Ref) > 0) 165 /* then, not executed */ 166 { 167 Int_Loc += 7; 168 Int_Glob = Int_Loc; 169 return (true); 170 } 171 else /* executed */ 172 return (false); 173 } /* if Ch_Loc */ 174 } /* Func_2 */ 175 176 177 Boolean Func_3 (Enum_Par_Val) 178 /***************************/ 179 /* executed once */ 180 /* Enum_Par_Val == Ident_3 */ 181 Enumeration Enum_Par_Val; 182 { 183 Enumeration Enum_Loc; 184 185 Enum_Loc = Enum_Par_Val; 186 if (Enum_Loc == Ident_3) 187 /* then, executed */ 188 return (true); 189 else /* not executed */ 190 return (false); 191 } /* Func_3 */ 192 193