t_arrrecbig.mod 909 B

123456789101112131415161718192021222324252627282930313233343536
  1. MODULE TArrRecBig;
  2. (* Regression for the run-time path of the array-of-record inline
  3. length-word fix: a record array larger than the inline-expansion
  4. budget is emitted compactly and its element length words are set by a
  5. generated init loop (QbeGen.InitRecArray). Exit 42. *)
  6. VAR ExitCode : INTEGER;
  7. TYPE
  8. ProcEnt = RECORD
  9. name : ARRAY [0..63] OF CHAR;
  10. END;
  11. VAR
  12. procs : ARRAY [0..4999] OF ProcEnt;
  13. nProcs : CARDINAL;
  14. PROCEDURE CopyN (src : ARRAY OF CHAR; VAR dst : ARRAY OF CHAR);
  15. VAR i : CARDINAL;
  16. BEGIN
  17. i := 0;
  18. WHILE (i < 63) AND (src[i] # CHR(0)) DO dst[i] := src[i]; INC(i) END;
  19. dst[i] := CHR(0)
  20. END CopyN;
  21. PROCEDURE NoteProc (name : ARRAY OF CHAR);
  22. BEGIN
  23. CopyN(name, procs[nProcs].name);
  24. INC(nProcs)
  25. END NoteProc;
  26. BEGIN
  27. NoteProc("hello");
  28. IF (procs[0].name[0] = "h") AND (procs[0].name[4] = "o") THEN
  29. ExitCode := 42
  30. ELSE ExitCode := 1
  31. END
  32. END TArrRecBig.