comparison src/share/vm/opto/superword.cpp @ 6896:410afdc6a07c

8001635: assert(in_bb(n)) failed: must be Summary: Added missed check that Load node is in processed loop block. Reviewed-by: twisti
author kvn
date Fri, 26 Oct 2012 11:48:04 -0700
parents b2c669fd8114
children ad736b4683b4
comparison
equal deleted inserted replaced
6895:006174cfe979 6896:410afdc6a07c
1807 // expand a value to signed Int so such right shifts can't be used 1807 // expand a value to signed Int so such right shifts can't be used
1808 // because vector elements do not have upper bits of Int. 1808 // because vector elements do not have upper bits of Int.
1809 const Type* vt = vtn; 1809 const Type* vt = vtn;
1810 if (VectorNode::is_shift(in)) { 1810 if (VectorNode::is_shift(in)) {
1811 Node* load = in->in(1); 1811 Node* load = in->in(1);
1812 if (load->is_Load() && (velt_type(load)->basic_type() == T_INT)) { 1812 if (load->is_Load() && in_bb(load) && (velt_type(load)->basic_type() == T_INT)) {
1813 vt = velt_type(load); 1813 vt = velt_type(load);
1814 } else if (in->Opcode() != Op_LShiftI) { 1814 } else if (in->Opcode() != Op_LShiftI) {
1815 // Widen type to Int to avoid creation of right shift vector 1815 // Widen type to Int to avoid creation of right shift vector
1816 // (align + data_size(s1) check in stmts_can_pack() will fail). 1816 // (align + data_size(s1) check in stmts_can_pack() will fail).
1817 // Note, left shifts work regardless type. 1817 // Note, left shifts work regardless type.