8165565: Shorten branches causes incorrect code for SKX

Don't replace restoreMask CountedLoopEnd with short branches.

Reviewed-by: kvn
This commit is contained in:
Michael Berg 2016-09-07 12:23:25 -07:00
parent 89f7f6f4b3
commit 6384a5d55d

View file

@ -1245,6 +1245,7 @@ bool InstructForm::check_branch_variant(ArchDesc &AD, InstructForm *short_branch
this != short_branch && // Don't match myself this != short_branch && // Don't match myself
!is_short_branch() && // Don't match another short branch variant !is_short_branch() && // Don't match another short branch variant
reduce_result() != NULL && reduce_result() != NULL &&
strstr(_ident, "restoreMask") == NULL && // Don't match side effects
strcmp(reduce_result(), short_branch->reduce_result()) == 0 && strcmp(reduce_result(), short_branch->reduce_result()) == 0 &&
_matrule->equivalent(AD.globalNames(), short_branch->_matrule)) { _matrule->equivalent(AD.globalNames(), short_branch->_matrule)) {
// The instructions are equivalent. // The instructions are equivalent.