diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2006-05-01 10:16:26 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2006-05-01 10:16:26 +0000 |
commit | 5c41ae07d556ee4adda239f036220d2031a41595 (patch) | |
tree | 35900acb077cda46fbd881f5db7adb9361f998fc | |
parent | f4cefb4318d7a7ceb8db2c08af41495953832e2e (diff) | |
download | scala-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.scala | 7 |
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 = |