[project @ 2000-08-22 14:16:06 by sewardj]
authorsewardj <unknown>
Tue, 22 Aug 2000 14:16:06 +0000 (14:16 +0000)
committersewardj <unknown>
Tue, 22 Aug 2000 14:16:06 +0000 (14:16 +0000)
Add regression check for recent NCG switch table reg-alloc bug fix.

ghc/tests/codeGen/should_run/cg048.hs [new file with mode: 0644]
ghc/tests/codeGen/should_run/cg048.stdout [new file with mode: 0644]

diff --git a/ghc/tests/codeGen/should_run/cg048.hs b/ghc/tests/codeGen/should_run/cg048.hs
new file mode 100644 (file)
index 0000000..30f0b3e
--- /dev/null
@@ -0,0 +1,24 @@
+
+-- The new register allocator in 4.08 had a bug wherein
+-- flow edges away from an insn which does a jump through
+-- a switch table were not being added to the flow graph,
+-- which causes computation of live ranges and thus register
+-- assignment to be wrong in the alternatives and default.
+-- This was fixed properly in the head branch (pre 4.09)
+-- and avoided in 4.08.1 by disabling jump table generation
+-- in the NCG -- it generates trees of ifs instead.
+
+module Main ( main ) where
+
+main = print (map f [1 .. 7])
+
+
+
+{-# NOINLINE f #-}
+f :: Int -> Bool
+f 7 = False
+f 1 = False
+f 4 = False
+f 6 = False
+f 5 = False
+f x = if x * 10 == 20 then True else False
diff --git a/ghc/tests/codeGen/should_run/cg048.stdout b/ghc/tests/codeGen/should_run/cg048.stdout
new file mode 100644 (file)
index 0000000..ff59649
--- /dev/null
@@ -0,0 +1 @@
+[False,True,False,False,False,False,False]