diff -r 52ce01d7d434 -r 380e69eaf892 src/share/classes/com/sun/tools/javac/jvm/Gen.java --- a/src/share/classes/com/sun/tools/javac/jvm/Gen.java Tue Aug 26 11:15:28 2014 -0700 +++ b/src/share/classes/com/sun/tools/javac/jvm/Gen.java Wed Jul 16 10:47:56 2014 -0400 @@ -1194,7 +1194,7 @@ boolean testFirst) { Env loopEnv = env.dup(loop, new GenContext()); int startpc = code.entryPoint(); - if (testFirst) { + if (testFirst) { //while or for loop CondItem c; if (cond != null) { code.statBegin(cond.pos); @@ -1240,6 +1240,9 @@ code.resolve(c.falseJumps); } code.resolve(loopEnv.info.exit); + if (loopEnv.info.exit != null) { + loopEnv.info.exit.state.defined.excludeFrom(code.nextreg); + } } private enum LoopLocalVarRangeEndingPoint {