Mercurial > hg > graal-compiler
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. |