summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/sysinfo/contrib/dhry.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/noncore/settings/sysinfo/contrib/dhry.c b/noncore/settings/sysinfo/contrib/dhry.c
index d1dadbd..20b627c 100644
--- a/noncore/settings/sysinfo/contrib/dhry.c
+++ b/noncore/settings/sysinfo/contrib/dhry.c
@@ -116,769 +116,769 @@ double dtime()
116 116
117#ifndef HZ 117#ifndef HZ
118#define HZ 60 118#define HZ 60
119#endif 119#endif
120 120
121struct tms tms; 121struct tms tms;
122 122
123double dtime() 123double dtime()
124{ 124{
125 double q; 125 double q;
126 126
127 times(&tms); 127 times(&tms);
128 128
129 q = (double)(tms.tms_utime) / (double)HZ; 129 q = (double)(tms.tms_utime) / (double)HZ;
130 130
131 return q; 131 return q;
132} 132}
133#endif 133#endif
134 134
135/*********************************************************/ 135/*********************************************************/
136/* VMS dtime() for VMS systems. */ 136/* VMS dtime() for VMS systems. */
137/* Provided by: RAMO@uvphys.phys.UVic.CA */ 137/* Provided by: RAMO@uvphys.phys.UVic.CA */
138/* Some people have run into problems with this timer. */ 138/* Some people have run into problems with this timer. */
139/*********************************************************/ 139/*********************************************************/
140#ifdef VMS 140#ifdef VMS
141#include time 141#include time
142 142
143#ifndef HZ 143#ifndef HZ
144#define HZ 100 144#define HZ 100
145#endif 145#endif
146 146
147struct tbuffer_t 147struct tbuffer_t
148 { 148 {
149 int proc_user_time; 149 int proc_user_time;
150 int proc_system_time; 150 int proc_system_time;
151 int child_user_time; 151 int child_user_time;
152 int child_system_time; 152 int child_system_time;
153 }; 153 };
154 154
155struct tbuffer_t tms; 155struct tbuffer_t tms;
156 156
157double dtime() 157double dtime()
158{ 158{
159 double q; 159 double q;
160 160
161 times(&tms); 161 times(&tms);
162 162
163 q = (double)(tms.proc_user_time) / (double)HZ; 163 q = (double)(tms.proc_user_time) / (double)HZ;
164 164
165 return q; 165 return q;
166} 166}
167#endif 167#endif
168 168
169/******************************/ 169/******************************/
170/* BORLAND C dtime() for DOS */ 170/* BORLAND C dtime() for DOS */
171/******************************/ 171/******************************/
172#ifdef BORLAND_C 172#ifdef BORLAND_C
173#include <ctype.h> 173#include <ctype.h>
174#include <dos.h> 174#include <dos.h>
175#include <time.h> 175#include <time.h>
176 176
177#define HZ 100 177#define HZ 100
178struct time tnow; 178struct time tnow;
179 179
180double dtime() 180double dtime()
181{ 181{
182 double q; 182 double q;
183 183
184 gettime(&tnow); 184 gettime(&tnow);
185 185
186 q = 60.0 * (double)(tnow.ti_min); 186 q = 60.0 * (double)(tnow.ti_min);
187 q = q + (double)(tnow.ti_sec); 187 q = q + (double)(tnow.ti_sec);
188 q = q + (double)(tnow.ti_hund)/(double)HZ; 188 q = q + (double)(tnow.ti_hund)/(double)HZ;
189 189
190 return q; 190 return q;
191} 191}
192#endif 192#endif
193 193
194/**************************************/ 194/**************************************/
195/* Microsoft C (MSC) dtime() for DOS */ 195/* Microsoft C (MSC) dtime() for DOS */
196/**************************************/ 196/**************************************/
197#ifdef MSC 197#ifdef MSC
198#include <time.h> 198#include <time.h>
199#include <ctype.h> 199#include <ctype.h>
200 200
201#define HZ CLOCKS_PER_SEC 201#define HZ CLOCKS_PER_SEC
202clock_t tnow; 202clock_t tnow;
203 203
204double dtime() 204double dtime()
205{ 205{
206 double q; 206 double q;
207 207
208 tnow = clock(); 208 tnow = clock();
209 209
210 q = (double)tnow / (double)HZ; 210 q = (double)tnow / (double)HZ;
211 211
212 return q; 212 return q;
213} 213}
214#endif 214#endif
215 215
216/*************************************/ 216/*************************************/
217/* Macintosh (MAC) Think C dtime() */ 217/* Macintosh (MAC) Think C dtime() */
218/*************************************/ 218/*************************************/
219#ifdef MAC 219#ifdef MAC
220#include <time.h> 220#include <time.h>
221 221
222#define HZ 60 222#define HZ 60
223 223
224double dtime() 224double dtime()
225{ 225{
226 double q; 226 double q;
227 227
228 q = (double)clock() / (double)HZ; 228 q = (double)clock() / (double)HZ;
229 229
230 return q; 230 return q;
231} 231}
232#endif 232#endif
233 233
234/************************************************************/ 234/************************************************************/
235/* iPSC/860 (IPSC) dtime() for i860. */ 235/* iPSC/860 (IPSC) dtime() for i860. */
236/* Provided by: Dan Yergeau, yergeau@gloworm.Stanford.EDU */ 236/* Provided by: Dan Yergeau, yergeau@gloworm.Stanford.EDU */
237/************************************************************/ 237/************************************************************/
238#ifdef IPSC 238#ifdef IPSC
239extern double dclock(); 239extern double dclock();
240 240
241double dtime() 241double dtime()
242{ 242{
243 double q; 243 double q;
244 244
245 q = dclock(); 245 q = dclock();
246 246
247 return q; 247 return q;
248} 248}
249#endif 249#endif
250 250
251/**************************************************/ 251/**************************************************/
252/* FORTRAN dtime() for Cray type systems. */ 252/* FORTRAN dtime() for Cray type systems. */
253/* This is the preferred timer for Cray systems. */ 253/* This is the preferred timer for Cray systems. */
254/**************************************************/ 254/**************************************************/
255#ifdef FORTRAN_SEC 255#ifdef FORTRAN_SEC
256 256
257fortran double second(); 257fortran double second();
258 258
259double dtime() 259double dtime()
260{ 260{
261 double q; 261 double q;
262 262
263 second(&q); 263 second(&q);
264 264
265 return q; 265 return q;
266} 266}
267#endif 267#endif
268 268
269/***********************************************************/ 269/***********************************************************/
270/* UNICOS C dtime() for Cray UNICOS systems. Don't use */ 270/* UNICOS C dtime() for Cray UNICOS systems. Don't use */
271/* unless absolutely necessary as returned time includes */ 271/* unless absolutely necessary as returned time includes */
272/* 'user+system' time. Provided by: R. Mike Dority, */ 272/* 'user+system' time. Provided by: R. Mike Dority, */
273/* dority@craysea.cray.com */ 273/* dority@craysea.cray.com */
274/***********************************************************/ 274/***********************************************************/
275#ifdef CTimer 275#ifdef CTimer
276#include <time.h> 276#include <time.h>
277 277
278double dtime() 278double dtime()
279{ 279{
280 double q; 280 double q;
281 clock_t clock(void); 281 clock_t clock(void);
282 282
283 q = (double)clock() / (double)CLOCKS_PER_SEC; 283 q = (double)clock() / (double)CLOCKS_PER_SEC;
284 284
285 return q; 285 return q;
286} 286}
287#endif 287#endif
288 288
289/********************************************/ 289/********************************************/
290/* Another UNIX timer using gettimeofday(). */ 290/* Another UNIX timer using gettimeofday(). */
291/* However, getrusage() is preferred. */ 291/* However, getrusage() is preferred. */
292/********************************************/ 292/********************************************/
293#ifdef GTODay 293#ifdef GTODay
294#include <sys/time.h> 294#include <sys/time.h>
295 295
296struct timeval tnow; 296struct timeval tnow;
297 297
298double dtime() 298double dtime()
299{ 299{
300 double q; 300 double q;
301 301
302 gettimeofday(&tnow,NULL); 302 gettimeofday(&tnow,NULL);
303 q = (double)tnow.tv_sec + (double)tnow.tv_usec * 1.0e-6; 303 q = (double)tnow.tv_sec + (double)tnow.tv_usec * 1.0e-6;
304 304
305 return q; 305 return q;
306} 306}
307#endif 307#endif
308 308
309/*****************************************************/ 309/*****************************************************/
310/* Fujitsu UXP/M timer. */ 310/* Fujitsu UXP/M timer. */
311/* Provided by: Mathew Lim, ANUSF, M.Lim@anu.edu.au */ 311/* Provided by: Mathew Lim, ANUSF, M.Lim@anu.edu.au */
312/*****************************************************/ 312/*****************************************************/
313#ifdef UXPM 313#ifdef UXPM
314#include <sys/types.h> 314#include <sys/types.h>
315#include <sys/timesu.h> 315#include <sys/timesu.h>
316struct tmsu rusage; 316struct tmsu rusage;
317 317
318double dtime() 318double dtime()
319{ 319{
320 double q; 320 double q;
321 321
322 timesu(&rusage); 322 timesu(&rusage);
323 323
324 q = (double)(rusage.tms_utime) * 1.0e-06; 324 q = (double)(rusage.tms_utime) * 1.0e-06;
325 325
326 return q; 326 return q;
327} 327}
328#endif 328#endif
329 329
330/**********************************************/ 330/**********************************************/
331/* Macintosh (MAC_TMgr) Think C dtime() */ 331/* Macintosh (MAC_TMgr) Think C dtime() */
332/* requires Think C Language Extensions or */ 332/* requires Think C Language Extensions or */
333/* #include <MacHeaders> in the prefix */ 333/* #include <MacHeaders> in the prefix */
334/* provided by Francis H Schiffer 3rd (fhs) */ 334/* provided by Francis H Schiffer 3rd (fhs) */
335/* skipschiffer@genie.geis.com */ 335/* skipschiffer@genie.geis.com */
336/**********************************************/ 336/**********************************************/
337#ifdef MAC_TMgr 337#ifdef MAC_TMgr
338#include <Timer.h> 338#include <Timer.h>
339#include <stdlib.h> 339#include <stdlib.h>
340 340
341static TMTask mgrTimer; 341static TMTask mgrTimer;
342static Boolean mgrInited = false; 342static Boolean mgrInited = false;
343static double mgrClock; 343static double mgrClock;
344 344
345#define RMV_TIMER RmvTime( (QElemPtr)&mgrTimer ) 345#define RMV_TIMER RmvTime( (QElemPtr)&mgrTimer )
346#define MAX_TIME 1800000000L 346#define MAX_TIME 1800000000L
347/* MAX_TIME limits time between calls to */ 347/* MAX_TIME limits time between calls to */
348/* dtime( ) to no more than 30 minutes */ 348/* dtime( ) to no more than 30 minutes */
349/* this limitation could be removed by */ 349/* this limitation could be removed by */
350/* creating a completion routine to sum */ 350/* creating a completion routine to sum */
351/* 30 minute segments (fhs 1994 feb 9) */ 351/* 30 minute segments (fhs 1994 feb 9) */
352 352
353static void Remove_timer( ) 353static void Remove_timer( )
354{ 354{
355 RMV_TIMER; 355 RMV_TIMER;
356 mgrInited = false; 356 mgrInited = false;
357} 357}
358 358
359double dtime( ) 359double dtime( )
360{ 360{
361 if( mgrInited ) { 361 if( mgrInited ) {
362 RMV_TIMER; 362 RMV_TIMER;
363 mgrClock += (MAX_TIME + mgrTimer.tmCount)*1.0e-6; 363 mgrClock += (MAX_TIME + mgrTimer.tmCount)*1.0e-6;
364 } else { 364 } else {
365 if( _atexit( &Remove_timer ) == 0 ) mgrInited = true; 365 if( _atexit( &Remove_timer ) == 0 ) mgrInited = true;
366 mgrClock = 0.0; 366 mgrClock = 0.0;
367 } 367 }
368 368
369 if ( mgrInited ) 369 if ( mgrInited )
370 { 370 {
371 mgrTimer.tmAddr = NULL; 371 mgrTimer.tmAddr = NULL;
372 mgrTimer.tmCount = 0; 372 mgrTimer.tmCount = 0;
373 mgrTimer.tmWakeUp = 0; 373 mgrTimer.tmWakeUp = 0;
374 mgrTimer.tmReserved = 0; 374 mgrTimer.tmReserved = 0;
375 InsTime( (QElemPtr)&mgrTimer ); 375 InsTime( (QElemPtr)&mgrTimer );
376 PrimeTime( (QElemPtr)&mgrTimer, -MAX_TIME ); 376 PrimeTime( (QElemPtr)&mgrTimer, -MAX_TIME );
377 } 377 }
378 return( mgrClock ); 378 return( mgrClock );
379} 379}
380#endif 380#endif
381 381
382/***********************************************************/ 382/***********************************************************/
383/* Parsytec GCel timer. */ 383/* Parsytec GCel timer. */
384/* Provided by: Georg Wambach, gw@informatik.uni-koeln.de */ 384/* Provided by: Georg Wambach, gw@informatik.uni-koeln.de */
385/***********************************************************/ 385/***********************************************************/
386#ifdef PARIX 386#ifdef PARIX
387#include <sys/time.h> 387#include <sys/time.h>
388 388
389double dtime() 389double dtime()
390{ 390{
391 double q; 391 double q;
392 392
393 q = (double) (TimeNowHigh()) / (double) CLK_TCK_HIGH; 393 q = (double) (TimeNowHigh()) / (double) CLK_TCK_HIGH;
394 394
395 return q; 395 return q;
396} 396}
397#endif 397#endif
398 398
399/************************************************/ 399/************************************************/
400/* Sun Solaris POSIX dtime() routine */ 400/* Sun Solaris POSIX dtime() routine */
401/* Provided by: Case Larsen, CTLarsen.lbl.gov */ 401/* Provided by: Case Larsen, CTLarsen.lbl.gov */
402/************************************************/ 402/************************************************/
403#ifdef POSIX 403#ifdef POSIX
404#include <sys/time.h> 404#include <sys/time.h>
405#include <sys/resource.h> 405#include <sys/resource.h>
406#include <sys/rusage.h> 406#include <sys/rusage.h>
407 407
408#ifdef __hpux 408#ifdef __hpux
409#include <sys/syscall.h> 409#include <sys/syscall.h>
410#endif 410#endif
411 411
412struct rusage rusage; 412struct rusage rusage;
413 413
414double dtime() 414double dtime()
415{ 415{
416 double q; 416 double q;
417 417
418 getrusage(RUSAGE_SELF,&rusage); 418 getrusage(RUSAGE_SELF,&rusage);
419 419
420 q = (double)(rusage.ru_utime.tv_sec); 420 q = (double)(rusage.ru_utime.tv_sec);
421 q = q + (double)(rusage.ru_utime.tv_nsec) * 1.0e-09; 421 q = q + (double)(rusage.ru_utime.tv_nsec) * 1.0e-09;
422 422
423 return q; 423 return q;
424} 424}
425#endif 425#endif
426 426
427 427
428/****************************************************/ 428/****************************************************/
429/* Windows NT (32 bit) dtime() routine */ 429/* Windows NT (32 bit) dtime() routine */
430/* Provided by: Piers Haken, piersh@microsoft.com */ 430/* Provided by: Piers Haken, piersh@microsoft.com */
431/****************************************************/ 431/****************************************************/
432#ifdef WIN32 432#ifdef WIN32
433#include <windows.h> 433#include <windows.h>
434 434
435double dtime(void) 435double dtime(void)
436{ 436{
437 double q; 437 double q;
438 438
439 q = (double)GetTickCount() * 1.0e-03; 439 q = (double)GetTickCount() * 1.0e-03;
440 440
441 return q; 441 return q;
442} 442}
443#endif 443#endif
444 444
445/*****************************************************/ 445/*****************************************************/
446/* Time according to POSIX.1 - <J.Pelan@qub.ac.uk> */ 446/* Time according to POSIX.1 - <J.Pelan@qub.ac.uk> */
447/* Ref: "POSIX Programmer's Guide" O'Reilly & Assoc.*/ 447/* Ref: "POSIX Programmer's Guide" O'Reilly & Assoc.*/
448/*****************************************************/ 448/*****************************************************/
449#ifdef POSIX1 449#ifdef POSIX1
450#define _POSIX_SOURCE 1 450#define _POSIX_SOURCE 1
451#include <unistd.h> 451#include <unistd.h>
452#include <limits.h> 452#include <limits.h>
453#include <sys/times.h> 453#include <sys/times.h>
454 454
455struct tms tms; 455struct tms tms;
456 456
457double dtime() 457double dtime()
458{ 458{
459 double q; 459 double q;
460 times(&tms); 460 times(&tms);
461 q = (double)tms.tms_utime / (double)CLK_TCK; 461 q = (double)tms.tms_utime / (double)CLK_TCK;
462 return q; 462 return q;
463} 463}
464#endif 464#endif
465/* 465/*
466 ************************************************************************* 466 *************************************************************************
467 * 467 *
468 * "DHRYSTONE" Benchmark Program 468 * "DHRYSTONE" Benchmark Program
469 * ----------------------------- 469 * -----------------------------
470 * 470 *
471 * Version: C, Version 2.1 471 * Version: C, Version 2.1
472 * 472 *
473 * File: dhry_1.c (part 2 of 3) 473 * File: dhry_1.c (part 2 of 3)
474 * 474 *
475 * Date: May 25, 1988 475 * Date: May 25, 1988
476 * 476 *
477 * Author: Reinhold P. Weicker 477 * Author: Reinhold P. Weicker
478 * 478 *
479 ************************************************************************* 479 *************************************************************************
480 */ 480 */
481 481
482#include <stdio.h> 482#include <stdio.h>
483#include <stdlib.h> 483#include <stdlib.h>
484#include <string.h> 484#include <string.h>
485#include "dhry.h" 485#include "dhry.h"
486 486
487/* Global Variables: */ 487/* Global Variables: */
488 488
489Rec_Pointer Ptr_Glob, 489Rec_Pointer Ptr_Glob,
490 Next_Ptr_Glob; 490 Next_Ptr_Glob;
491int Int_Glob; 491int Int_Glob;
492Boolean Bool_Glob; 492Boolean Bool_Glob;
493char Ch_1_Glob, 493char Ch_1_Glob,
494 Ch_2_Glob; 494 Ch_2_Glob;
495int Arr_1_Glob [50]; 495int Arr_1_Glob [50];
496int Arr_2_Glob [50] [50]; 496int Arr_2_Glob [50] [50];
497 497
498char Reg_Define[] = "Register option selected."; 498char Reg_Define[] = "Register option selected.";
499 499
500extern char *malloc (); 500//extern char *malloc ();
501Enumeration Func_1 (); 501Enumeration Func_1 ();
502 /* 502 /*
503 forward declaration necessary since Enumeration may not simply be int 503 forward declaration necessary since Enumeration may not simply be int
504 */ 504 */
505 505
506#ifndef ROPT 506#ifndef ROPT
507#define REG 507#define REG
508 /* REG becomes defined as empty */ 508 /* REG becomes defined as empty */
509 /* i.e. no register variables */ 509 /* i.e. no register variables */
510#else 510#else
511#define REG register 511#define REG register
512#endif 512#endif
513 513
514 514
515/* variables for time measurement: */ 515/* variables for time measurement: */
516 516
517#define Too_Small_Time 2 517#define Too_Small_Time 2
518 /* Measurements should last at least 2 seconds */ 518 /* Measurements should last at least 2 seconds */
519 519
520double Begin_Time, 520double Begin_Time,
521 End_Time, 521 End_Time,
522 User_Time; 522 User_Time;
523 523
524double Microseconds, 524double Microseconds,
525 Dhrystones_Per_Second, 525 Dhrystones_Per_Second,
526 Vax_Mips; 526 Vax_Mips;
527 527
528/* end of variables for time measurement */ 528/* end of variables for time measurement */
529 529
530/**********************************************************************************************/ 530/**********************************************************************************************/
531 531
532 532
533Proc_1 (Ptr_Val_Par) 533Proc_1 (Ptr_Val_Par)
534/******************/ 534/******************/
535 535
536REG Rec_Pointer Ptr_Val_Par; 536REG Rec_Pointer Ptr_Val_Par;
537 /* executed once */ 537 /* executed once */
538{ 538{
539 REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp; 539 REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp;
540 /* == Ptr_Glob_Next */ 540 /* == Ptr_Glob_Next */
541 /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp, */ 541 /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp, */
542 /* corresponds to "rename" in Ada, "with" in Pascal */ 542 /* corresponds to "rename" in Ada, "with" in Pascal */
543 543
544 structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob); 544 structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob);
545 Ptr_Val_Par->variant.var_1.Int_Comp = 5; 545 Ptr_Val_Par->variant.var_1.Int_Comp = 5;
546 Next_Record->variant.var_1.Int_Comp 546 Next_Record->variant.var_1.Int_Comp
547 = Ptr_Val_Par->variant.var_1.Int_Comp; 547 = Ptr_Val_Par->variant.var_1.Int_Comp;
548 Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp; 548 Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp;
549 Proc_3 (&Next_Record->Ptr_Comp); 549 Proc_3 (&Next_Record->Ptr_Comp);
550 /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp 550 /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp
551 == Ptr_Glob->Ptr_Comp */ 551 == Ptr_Glob->Ptr_Comp */
552 if (Next_Record->Discr == Ident_1) 552 if (Next_Record->Discr == Ident_1)
553 /* then, executed */ 553 /* then, executed */
554 { 554 {
555 Next_Record->variant.var_1.Int_Comp = 6; 555 Next_Record->variant.var_1.Int_Comp = 6;
556 Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp, 556 Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp,
557 &Next_Record->variant.var_1.Enum_Comp); 557 &Next_Record->variant.var_1.Enum_Comp);
558 Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp; 558 Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp;
559 Proc_7 (Next_Record->variant.var_1.Int_Comp, 10, 559 Proc_7 (Next_Record->variant.var_1.Int_Comp, 10,
560 &Next_Record->variant.var_1.Int_Comp); 560 &Next_Record->variant.var_1.Int_Comp);
561 } 561 }
562 else /* not executed */ 562 else /* not executed */
563 structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp); 563 structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp);
564} /* Proc_1 */ 564} /* Proc_1 */
565 565
566 566
567Proc_2 (Int_Par_Ref) 567Proc_2 (Int_Par_Ref)
568/******************/ 568/******************/
569 /* executed once */ 569 /* executed once */
570 /* *Int_Par_Ref == 1, becomes 4 */ 570 /* *Int_Par_Ref == 1, becomes 4 */
571 571
572One_Fifty *Int_Par_Ref; 572One_Fifty *Int_Par_Ref;
573{ 573{
574 One_Fifty Int_Loc; 574 One_Fifty Int_Loc;
575 Enumeration Enum_Loc; 575 Enumeration Enum_Loc;
576 576
577 Int_Loc = *Int_Par_Ref + 10; 577 Int_Loc = *Int_Par_Ref + 10;
578 do /* executed once */ 578 do /* executed once */
579 if (Ch_1_Glob == 'A') 579 if (Ch_1_Glob == 'A')
580 /* then, executed */ 580 /* then, executed */
581 { 581 {
582 Int_Loc -= 1; 582 Int_Loc -= 1;
583 *Int_Par_Ref = Int_Loc - Int_Glob; 583 *Int_Par_Ref = Int_Loc - Int_Glob;
584 Enum_Loc = Ident_1; 584 Enum_Loc = Ident_1;
585 } /* if */ 585 } /* if */
586 while (Enum_Loc != Ident_1); /* true */ 586 while (Enum_Loc != Ident_1); /* true */
587} /* Proc_2 */ 587} /* Proc_2 */
588 588
589 589
590Proc_3 (Ptr_Ref_Par) 590Proc_3 (Ptr_Ref_Par)
591/******************/ 591/******************/
592 /* executed once */ 592 /* executed once */
593 /* Ptr_Ref_Par becomes Ptr_Glob */ 593 /* Ptr_Ref_Par becomes Ptr_Glob */
594 594
595Rec_Pointer *Ptr_Ref_Par; 595Rec_Pointer *Ptr_Ref_Par;
596 596
597{ 597{
598 if (Ptr_Glob != Null) 598 if (Ptr_Glob != Null)
599 /* then, executed */ 599 /* then, executed */
600 *Ptr_Ref_Par = Ptr_Glob->Ptr_Comp; 600 *Ptr_Ref_Par = Ptr_Glob->Ptr_Comp;
601 Proc_7 (10, Int_Glob, &Ptr_Glob->variant.var_1.Int_Comp); 601 Proc_7 (10, Int_Glob, &Ptr_Glob->variant.var_1.Int_Comp);
602} /* Proc_3 */ 602} /* Proc_3 */
603 603
604 604
605Proc_4 () /* without parameters */ 605Proc_4 () /* without parameters */
606/*******/ 606/*******/
607 /* executed once */ 607 /* executed once */
608{ 608{
609 Boolean Bool_Loc; 609 Boolean Bool_Loc;
610 610
611 Bool_Loc = Ch_1_Glob == 'A'; 611 Bool_Loc = Ch_1_Glob == 'A';
612 Bool_Glob = Bool_Loc | Bool_Glob; 612 Bool_Glob = Bool_Loc | Bool_Glob;
613 Ch_2_Glob = 'B'; 613 Ch_2_Glob = 'B';
614} /* Proc_4 */ 614} /* Proc_4 */
615 615
616 616
617Proc_5 () /* without parameters */ 617Proc_5 () /* without parameters */
618/*******/ 618/*******/
619 /* executed once */ 619 /* executed once */
620{ 620{
621 Ch_1_Glob = 'A'; 621 Ch_1_Glob = 'A';
622 Bool_Glob = false; 622 Bool_Glob = false;
623} /* Proc_5 */ 623} /* Proc_5 */
624 624
625 625
626 /* Procedure for the assignment of structures, */ 626 /* Procedure for the assignment of structures, */
627 /* if the C compiler doesn't support this feature */ 627 /* if the C compiler doesn't support this feature */
628#ifdef NOSTRUCTASSIGN 628#ifdef NOSTRUCTASSIGN
629memcpy (d, s, l) 629memcpy (d, s, l)
630register char *d; 630register char *d;
631register char *s; 631register char *s;
632register int l; 632register int l;
633{ 633{
634 while (l--) *d++ = *s++; 634 while (l--) *d++ = *s++;
635} 635}
636#endif 636#endif
637 637
638 638
639Proc_6 (Enum_Val_Par, Enum_Ref_Par) 639Proc_6 (Enum_Val_Par, Enum_Ref_Par)
640/*********************************/ 640/*********************************/
641 /* executed once */ 641 /* executed once */
642 /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */ 642 /* Enum_Val_Par == Ident_3, Enum_Ref_Par becomes Ident_2 */
643 643
644Enumeration Enum_Val_Par; 644Enumeration Enum_Val_Par;
645Enumeration *Enum_Ref_Par; 645Enumeration *Enum_Ref_Par;
646{ 646{
647 *Enum_Ref_Par = Enum_Val_Par; 647 *Enum_Ref_Par = Enum_Val_Par;
648 if (! Func_3 (Enum_Val_Par)) 648 if (! Func_3 (Enum_Val_Par))
649 /* then, not executed */ 649 /* then, not executed */
650 *Enum_Ref_Par = Ident_4; 650 *Enum_Ref_Par = Ident_4;
651 switch (Enum_Val_Par) 651 switch (Enum_Val_Par)
652 { 652 {
653 case Ident_1: 653 case Ident_1:
654 *Enum_Ref_Par = Ident_1; 654 *Enum_Ref_Par = Ident_1;
655 break; 655 break;
656 case Ident_2: 656 case Ident_2:
657 if (Int_Glob > 100) 657 if (Int_Glob > 100)
658 /* then */ 658 /* then */
659 *Enum_Ref_Par = Ident_1; 659 *Enum_Ref_Par = Ident_1;
660 else *Enum_Ref_Par = Ident_4; 660 else *Enum_Ref_Par = Ident_4;
661 break; 661 break;
662 case Ident_3: /* executed */ 662 case Ident_3: /* executed */
663 *Enum_Ref_Par = Ident_2; 663 *Enum_Ref_Par = Ident_2;
664 break; 664 break;
665 case Ident_4: break; 665 case Ident_4: break;
666 case Ident_5: 666 case Ident_5:
667 *Enum_Ref_Par = Ident_3; 667 *Enum_Ref_Par = Ident_3;
668 break; 668 break;
669 } /* switch */ 669 } /* switch */
670} /* Proc_6 */ 670} /* Proc_6 */
671 671
672 672
673Proc_7 (Int_1_Par_Val, Int_2_Par_Val, Int_Par_Ref) 673Proc_7 (Int_1_Par_Val, Int_2_Par_Val, Int_Par_Ref)
674/**********************************************/ 674/**********************************************/
675 /* executed three times */ 675 /* executed three times */
676 /* first call: Int_1_Par_Val == 2, Int_2_Par_Val == 3, */ 676 /* first call: Int_1_Par_Val == 2, Int_2_Par_Val == 3, */
677 /* Int_Par_Ref becomes 7 */ 677 /* Int_Par_Ref becomes 7 */
678 /* second call: Int_1_Par_Val == 10, Int_2_Par_Val == 5, */ 678 /* second call: Int_1_Par_Val == 10, Int_2_Par_Val == 5, */
679 /* Int_Par_Ref becomes 17 */ 679 /* Int_Par_Ref becomes 17 */
680 /* third call: Int_1_Par_Val == 6, Int_2_Par_Val == 10, */ 680 /* third call: Int_1_Par_Val == 6, Int_2_Par_Val == 10, */
681 /* Int_Par_Ref becomes 18 */ 681 /* Int_Par_Ref becomes 18 */
682One_Fifty Int_1_Par_Val; 682One_Fifty Int_1_Par_Val;
683One_Fifty Int_2_Par_Val; 683One_Fifty Int_2_Par_Val;
684One_Fifty *Int_Par_Ref; 684One_Fifty *Int_Par_Ref;
685{ 685{
686 One_Fifty Int_Loc; 686 One_Fifty Int_Loc;
687 687
688 Int_Loc = Int_1_Par_Val + 2; 688 Int_Loc = Int_1_Par_Val + 2;
689 *Int_Par_Ref = Int_2_Par_Val + Int_Loc; 689 *Int_Par_Ref = Int_2_Par_Val + Int_Loc;
690} /* Proc_7 */ 690} /* Proc_7 */
691 691
692 692
693Proc_8 (Arr_1_Par_Ref, Arr_2_Par_Ref, Int_1_Par_Val, Int_2_Par_Val) 693Proc_8 (Arr_1_Par_Ref, Arr_2_Par_Ref, Int_1_Par_Val, Int_2_Par_Val)
694/*********************************************************************/ 694/*********************************************************************/
695 /* executed once */ 695 /* executed once */
696 /* Int_Par_Val_1 == 3 */ 696 /* Int_Par_Val_1 == 3 */
697 /* Int_Par_Val_2 == 7 */ 697 /* Int_Par_Val_2 == 7 */
698Arr_1_Dim Arr_1_Par_Ref; 698Arr_1_Dim Arr_1_Par_Ref;
699Arr_2_Dim Arr_2_Par_Ref; 699Arr_2_Dim Arr_2_Par_Ref;
700int Int_1_Par_Val; 700int Int_1_Par_Val;
701int Int_2_Par_Val; 701int Int_2_Par_Val;
702{ 702{
703 REG One_Fifty Int_Index; 703 REG One_Fifty Int_Index;
704 REG One_Fifty Int_Loc; 704 REG One_Fifty Int_Loc;
705 705
706 Int_Loc = Int_1_Par_Val + 5; 706 Int_Loc = Int_1_Par_Val + 5;
707 Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val; 707 Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val;
708 Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc]; 708 Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc];
709 Arr_1_Par_Ref [Int_Loc+30] = Int_Loc; 709 Arr_1_Par_Ref [Int_Loc+30] = Int_Loc;
710 for (Int_Index = Int_Loc; Int_Index <= Int_Loc+1; ++Int_Index) 710 for (Int_Index = Int_Loc; Int_Index <= Int_Loc+1; ++Int_Index)
711 Arr_2_Par_Ref [Int_Loc] [Int_Index] = Int_Loc; 711 Arr_2_Par_Ref [Int_Loc] [Int_Index] = Int_Loc;
712 Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1; 712 Arr_2_Par_Ref [Int_Loc] [Int_Loc-1] += 1;
713 Arr_2_Par_Ref [Int_Loc+20] [Int_Loc] = Arr_1_Par_Ref [Int_Loc]; 713 Arr_2_Par_Ref [Int_Loc+20] [Int_Loc] = Arr_1_Par_Ref [Int_Loc];
714 Int_Glob = 5; 714 Int_Glob = 5;
715} /* Proc_8 */ 715} /* Proc_8 */
716 716
717 717
718Enumeration Func_1 (Ch_1_Par_Val, Ch_2_Par_Val) 718Enumeration Func_1 (Ch_1_Par_Val, Ch_2_Par_Val)
719/*************************************************/ 719/*************************************************/
720 /* executed three times */ 720 /* executed three times */
721 /* first call: Ch_1_Par_Val == 'H', Ch_2_Par_Val == 'R' */ 721 /* first call: Ch_1_Par_Val == 'H', Ch_2_Par_Val == 'R' */
722 /* second call: Ch_1_Par_Val == 'A', Ch_2_Par_Val == 'C' */ 722 /* second call: Ch_1_Par_Val == 'A', Ch_2_Par_Val == 'C' */
723 /* third call: Ch_1_Par_Val == 'B', Ch_2_Par_Val == 'C' */ 723 /* third call: Ch_1_Par_Val == 'B', Ch_2_Par_Val == 'C' */
724 724
725Capital_Letter Ch_1_Par_Val; 725Capital_Letter Ch_1_Par_Val;
726Capital_Letter Ch_2_Par_Val; 726Capital_Letter Ch_2_Par_Val;
727{ 727{
728 Capital_Letter Ch_1_Loc; 728 Capital_Letter Ch_1_Loc;
729 Capital_Letter Ch_2_Loc; 729 Capital_Letter Ch_2_Loc;
730 730
731 Ch_1_Loc = Ch_1_Par_Val; 731 Ch_1_Loc = Ch_1_Par_Val;
732 Ch_2_Loc = Ch_1_Loc; 732 Ch_2_Loc = Ch_1_Loc;
733 if (Ch_2_Loc != Ch_2_Par_Val) 733 if (Ch_2_Loc != Ch_2_Par_Val)
734 /* then, executed */ 734 /* then, executed */
735 return (Ident_1); 735 return (Ident_1);
736 else /* not executed */ 736 else /* not executed */
737 { 737 {
738 Ch_1_Glob = Ch_1_Loc; 738 Ch_1_Glob = Ch_1_Loc;
739 return (Ident_2); 739 return (Ident_2);
740 } 740 }
741} /* Func_1 */ 741} /* Func_1 */
742 742
743 743
744Boolean Func_2 (Str_1_Par_Ref, Str_2_Par_Ref) 744Boolean Func_2 (Str_1_Par_Ref, Str_2_Par_Ref)
745/*************************************************/ 745/*************************************************/
746 /* executed once */ 746 /* executed once */
747 /* Str_1_Par_Ref == "DHRYSTONE PROGRAM, 1'ST STRING" */ 747 /* Str_1_Par_Ref == "DHRYSTONE PROGRAM, 1'ST STRING" */
748 /* Str_2_Par_Ref == "DHRYSTONE PROGRAM, 2'ND STRING" */ 748 /* Str_2_Par_Ref == "DHRYSTONE PROGRAM, 2'ND STRING" */
749 749
750Str_30 Str_1_Par_Ref; 750Str_30 Str_1_Par_Ref;
751Str_30 Str_2_Par_Ref; 751Str_30 Str_2_Par_Ref;
752{ 752{
753 REG One_Thirty Int_Loc; 753 REG One_Thirty Int_Loc;
754 Capital_Letter Ch_Loc; 754 Capital_Letter Ch_Loc;
755 755
756 Int_Loc = 2; 756 Int_Loc = 2;
757 while (Int_Loc <= 2) /* loop body executed once */ 757 while (Int_Loc <= 2) /* loop body executed once */
758 if (Func_1 (Str_1_Par_Ref[Int_Loc], 758 if (Func_1 (Str_1_Par_Ref[Int_Loc],
759 Str_2_Par_Ref[Int_Loc+1]) == Ident_1) 759 Str_2_Par_Ref[Int_Loc+1]) == Ident_1)
760 /* then, executed */ 760 /* then, executed */
761 { 761 {
762 Ch_Loc = 'A'; 762 Ch_Loc = 'A';
763 Int_Loc += 1; 763 Int_Loc += 1;
764 } /* if, while */ 764 } /* if, while */
765 if (Ch_Loc >= 'W' && Ch_Loc < 'Z') 765 if (Ch_Loc >= 'W' && Ch_Loc < 'Z')
766 /* then, not executed */ 766 /* then, not executed */
767 Int_Loc = 7; 767 Int_Loc = 7;
768 if (Ch_Loc == 'R') 768 if (Ch_Loc == 'R')
769 /* then, not executed */ 769 /* then, not executed */
770 return (true); 770 return (true);
771 else /* executed */ 771 else /* executed */
772 { 772 {
773 if (strcmp (Str_1_Par_Ref, Str_2_Par_Ref) > 0) 773 if (strcmp (Str_1_Par_Ref, Str_2_Par_Ref) > 0)
774 /* then, not executed */ 774 /* then, not executed */
775 { 775 {
776 Int_Loc += 7; 776 Int_Loc += 7;
777 Int_Glob = Int_Loc; 777 Int_Glob = Int_Loc;
778 return (true); 778 return (true);
779 } 779 }
780 else /* executed */ 780 else /* executed */
781 return (false); 781 return (false);
782 } /* if Ch_Loc */ 782 } /* if Ch_Loc */
783} /* Func_2 */ 783} /* Func_2 */
784 784
785 785
786Boolean Func_3 (Enum_Par_Val) 786Boolean Func_3 (Enum_Par_Val)
787/***************************/ 787/***************************/
788 /* executed once */ 788 /* executed once */
789 /* Enum_Par_Val == Ident_3 */ 789 /* Enum_Par_Val == Ident_3 */
790Enumeration Enum_Par_Val; 790Enumeration Enum_Par_Val;
791{ 791{
792 Enumeration Enum_Loc; 792 Enumeration Enum_Loc;
793 793
794 Enum_Loc = Enum_Par_Val; 794 Enum_Loc = Enum_Par_Val;
795 if (Enum_Loc == Ident_3) 795 if (Enum_Loc == Ident_3)
796 /* then, executed */ 796 /* then, executed */
797 return (true); 797 return (true);
798 else /* not executed */ 798 else /* not executed */
799 return (false); 799 return (false);
800} /* Func_3 */ 800} /* Func_3 */
801 801
802/*********************************************************************************/ 802/*********************************************************************************/
803 803
804double dhry_main( int n ) 804double dhry_main( int n )
805/*****/ 805/*****/
806 806
807 /* main program, corresponds to procedures */ 807 /* main program, corresponds to procedures */
808 /* Main and Proc_0 in the Ada version */ 808 /* Main and Proc_0 in the Ada version */
809{ 809{
810 One_Fifty Int_1_Loc; 810 One_Fifty Int_1_Loc;
811 REG One_Fifty Int_2_Loc; 811 REG One_Fifty Int_2_Loc;
812 One_Fifty Int_3_Loc; 812 One_Fifty Int_3_Loc;
813 REG char Ch_Index; 813 REG char Ch_Index;
814 Enumeration Enum_Loc; 814 Enumeration Enum_Loc;
815 Str_30 Str_1_Loc; 815 Str_30 Str_1_Loc;
816 Str_30 Str_2_Loc; 816 Str_30 Str_2_Loc;
817 REG int Run_Index; 817 REG int Run_Index;
818 REG int Number_Of_Runs; 818 REG int Number_Of_Runs;
819 819
820 FILE *Ap; 820 FILE *Ap;
821 821
822 /* Initializations */ 822 /* Initializations */
823 823
824/* if ((Ap = fopen("dhry.res","a+")) == NULL) 824/* if ((Ap = fopen("dhry.res","a+")) == NULL)
825 { 825 {
826 printf("Can not open dhry.res\n\n"); 826 printf("Can not open dhry.res\n\n");
827 exit(1); 827 exit(1);
828 } 828 }
829*/ 829*/
830 Next_Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type)); 830 Next_Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
831 Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type)); 831 Ptr_Glob = (Rec_Pointer) malloc (sizeof (Rec_Type));
832 832
833 Ptr_Glob->Ptr_Comp = Next_Ptr_Glob; 833 Ptr_Glob->Ptr_Comp = Next_Ptr_Glob;
834 Ptr_Glob->Discr = Ident_1; 834 Ptr_Glob->Discr = Ident_1;
835 Ptr_Glob->variant.var_1.Enum_Comp = Ident_3; 835 Ptr_Glob->variant.var_1.Enum_Comp = Ident_3;
836 Ptr_Glob->variant.var_1.Int_Comp = 40; 836 Ptr_Glob->variant.var_1.Int_Comp = 40;
837 strcpy (Ptr_Glob->variant.var_1.Str_Comp, 837 strcpy (Ptr_Glob->variant.var_1.Str_Comp,
838 "DHRYSTONE PROGRAM, SOME STRING"); 838 "DHRYSTONE PROGRAM, SOME STRING");
839 strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING"); 839 strcpy (Str_1_Loc, "DHRYSTONE PROGRAM, 1'ST STRING");
840 840
841 Arr_2_Glob [8][7] = 10; 841 Arr_2_Glob [8][7] = 10;
842 /* Was missing in published program. Without this statement, */ 842 /* Was missing in published program. Without this statement, */
843 /* Arr_2_Glob [8][7] would have an undefined value. */ 843 /* Arr_2_Glob [8][7] would have an undefined value. */
844 /* Warning: With 16-Bit processors and Number_Of_Runs > 32000, */ 844 /* Warning: With 16-Bit processors and Number_Of_Runs > 32000, */
845 /* overflow may occur for this array element. */ 845 /* overflow may occur for this array element. */
846 846
847/* 847/*
848 if (Reg) 848 if (Reg)
849 { 849 {
850 printf ("Program compiled with 'register' attribute\n"); 850 printf ("Program compiled with 'register' attribute\n");
851 printf ("\n"); 851 printf ("\n");
852 } 852 }
853 else 853 else
854 { 854 {
855 printf ("Program compiled without 'register' attribute\n"); 855 printf ("Program compiled without 'register' attribute\n");
856 printf ("\n"); 856 printf ("\n");
857 } 857 }
858*/ 858*/
859 Number_Of_Runs = n; 859 Number_Of_Runs = n;
860 860
861 /***************/ 861 /***************/
862 /* Start timer */ 862 /* Start timer */
863 /***************/ 863 /***************/
864 864
865 Begin_Time = dtime(); 865 Begin_Time = dtime();
866 866
867 for (Run_Index = 1; Run_Index <= Number_Of_Runs; ++Run_Index) 867 for (Run_Index = 1; Run_Index <= Number_Of_Runs; ++Run_Index)
868 { 868 {
869 869
870 Proc_5(); 870 Proc_5();
871 Proc_4(); 871 Proc_4();
872 /* Ch_1_Glob == 'A', Ch_2_Glob == 'B', Bool_Glob == true */ 872 /* Ch_1_Glob == 'A', Ch_2_Glob == 'B', Bool_Glob == true */
873 Int_1_Loc = 2; 873 Int_1_Loc = 2;
874 Int_2_Loc = 3; 874 Int_2_Loc = 3;
875 strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 2'ND STRING"); 875 strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 2'ND STRING");
876 Enum_Loc = Ident_2; 876 Enum_Loc = Ident_2;
877 Bool_Glob = ! Func_2 (Str_1_Loc, Str_2_Loc); 877 Bool_Glob = ! Func_2 (Str_1_Loc, Str_2_Loc);
878 /* Bool_Glob == 1 */ 878 /* Bool_Glob == 1 */
879 while (Int_1_Loc < Int_2_Loc) /* loop body executed once */ 879 while (Int_1_Loc < Int_2_Loc) /* loop body executed once */
880 { 880 {
881 Int_3_Loc = 5 * Int_1_Loc - Int_2_Loc; 881 Int_3_Loc = 5 * Int_1_Loc - Int_2_Loc;
882 /* Int_3_Loc == 7 */ 882 /* Int_3_Loc == 7 */
883 Proc_7 (Int_1_Loc, Int_2_Loc, &Int_3_Loc); 883 Proc_7 (Int_1_Loc, Int_2_Loc, &Int_3_Loc);
884 /* Int_3_Loc == 7 */ 884 /* Int_3_Loc == 7 */