summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2006-05-01 10:16:26 +0000
committerIulian Dragos <jaguarul@gmail.com>2006-05-01 10:16:26 +0000
commit5c41ae07d556ee4adda239f036220d2031a41595 (patch)
tree35900acb077cda46fbd881f5db7adb9361f998fc
parentf4cefb4318d7a7ceb8db2c08af41495953832e2e (diff)
downloadscala-5c41ae07d556ee4adda239f036220d2031a41595.tar.gz
scala-5c41ae07d556ee4adda239f036220d2031a41595.tar.bz2
scala-5c41ae07d556ee4adda239f036220d2031a41595.zip
Fixed bugs 570/571.v2.1.4
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/Linearizers.scala7
1 files changed, 6 insertions, 1 deletions
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 =