--- a/hotspot/src/share/vm/opto/lcm.cpp Thu Jun 14 14:59:52 2012 -0700
+++ b/hotspot/src/share/vm/opto/lcm.cpp Fri Jun 15 01:25:19 2012 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -139,6 +139,7 @@
int iop = mach->ideal_Opcode();
switch( iop ) {
case Op_LoadB:
+ case Op_LoadUB:
case Op_LoadUS:
case Op_LoadD:
case Op_LoadF:
@@ -445,6 +446,11 @@
if( e->is_MachNullCheck() && e->in(1) == n )
continue;
+ // Schedule IV increment last.
+ if (e->is_Mach() && e->as_Mach()->ideal_Opcode() == Op_CountedLoopEnd &&
+ e->in(1)->in(1) == n && n->is_iteratively_computed())
+ continue;
+
uint n_choice = 2;
// See if this instruction is consumed by a branch. If so, then (as the