File: Test096.ML

package info (click to toggle)
polyml 5.6-8
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 31,892 kB
  • ctags: 34,453
  • sloc: cpp: 44,983; ansic: 24,520; asm: 14,850; sh: 11,730; makefile: 551; exp: 484; python: 253; awk: 91; sed: 9
file content (18 lines) | stat: -rw-r--r-- 620 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(* Inlined loops with more loop variables than registers to hold all of them, at least on X86/32.
   This was originally just a coverage test but it turned out to be broken in 5.3 and earlier.
   Since this will go into an infinite loop there's an explicit check here. *)

if PolyML.Compiler.compilerVersionNumber <= 530 then raise Fail "Will loop" else ();

PolyML.Compiler.maxInlineSize := 100;
fun f x =
let
    fun f (i, j, k, l, m, n, p, q) =
    if i = 10 then q
    else f(i+1, j+1, k+1, l+1, m+1, n+1, p+1, q+1)
in
    f(x, x+1, x+2, x+3, x+4, x+5, x+6, x+7)
end;

if f 1 = 17 then () else raise Fail "failed";