From 5c41ae07d556ee4adda239f036220d2031a41595 Mon Sep 17 00:00:00 2001 From: Iulian Dragos Date: Mon, 1 May 2006 10:16:26 +0000 Subject: Fixed bugs 570/571. --- src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala b/src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala index ff4a2d4a0a..c25dc4aa3b 100644 --- a/src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala +++ b/src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala @@ -136,7 +136,12 @@ trait Linearizers requires ICodes { m.exh foreach (b => rpo(b.startBlock)); rpo(m.code.startBlock); - blocks + // if the start block has predecessors, it won't be the first one + // in the linearization, so we need to enforce it here + if (m.code.startBlock.predecessors eq Nil) + blocks + else + m.code.startBlock :: (blocks.remove(.==(m.code.startBlock))) } def rpo(b: BasicBlock): Unit = -- cgit v1.2.3