diff -r cfd4aac53239 -r 8a8ff6b577ed src/share/vm/adlc/formssel.cpp --- a/src/share/vm/adlc/formssel.cpp Mon Jan 27 13:14:53 2014 +0100 +++ b/src/share/vm/adlc/formssel.cpp Wed Mar 12 11:24:26 2014 -0700 @@ -649,6 +649,7 @@ int USE_of_memory = 0; int DEF_of_memory = 0; const char* last_memory_DEF = NULL; // to test DEF/USE pairing in asserts + const char* last_memory_USE = NULL; Component *unique = NULL; Component *comp = NULL; ComponentList &components = (ComponentList &)_components; @@ -670,7 +671,16 @@ assert(0 == strcmp(last_memory_DEF, comp->_name), "every memory DEF is followed by a USE of the same name"); last_memory_DEF = NULL; } - USE_of_memory++; + // Handles same memory being used multiple times in the case of BMI1 instructions. + if (last_memory_USE != NULL) { + if (strcmp(comp->_name, last_memory_USE) != 0) { + USE_of_memory++; + } + } else { + USE_of_memory++; + } + last_memory_USE = comp->_name; + if (DEF_of_memory == 0) // defs take precedence unique = comp; } else {