提交 a84cdab8 编写于 作者: K kvn

7132936: guarantee(t != NULL) failed: must be con

Summary: Use !higher_equal() check to skip top and values which fit.
Reviewed-by: never
上级 9693a34f
...@@ -1764,7 +1764,8 @@ Node *LoadBNode::Ideal(PhaseGVN *phase, bool can_reshape) { ...@@ -1764,7 +1764,8 @@ Node *LoadBNode::Ideal(PhaseGVN *phase, bool can_reshape) {
const Type* LoadBNode::Value(PhaseTransform *phase) const { const Type* LoadBNode::Value(PhaseTransform *phase) const {
Node* mem = in(MemNode::Memory); Node* mem = in(MemNode::Memory);
Node* value = can_see_stored_value(mem,phase); Node* value = can_see_stored_value(mem,phase);
if (value != NULL && value->is_Con()) { if (value != NULL && value->is_Con() &&
!value->bottom_type()->higher_equal(_type)) {
// If the input to the store does not fit with the load's result type, // If the input to the store does not fit with the load's result type,
// it must be truncated. We can't delay until Ideal call since // it must be truncated. We can't delay until Ideal call since
// a singleton Value is needed for split_thru_phi optimization. // a singleton Value is needed for split_thru_phi optimization.
...@@ -1793,7 +1794,8 @@ Node* LoadUBNode::Ideal(PhaseGVN* phase, bool can_reshape) { ...@@ -1793,7 +1794,8 @@ Node* LoadUBNode::Ideal(PhaseGVN* phase, bool can_reshape) {
const Type* LoadUBNode::Value(PhaseTransform *phase) const { const Type* LoadUBNode::Value(PhaseTransform *phase) const {
Node* mem = in(MemNode::Memory); Node* mem = in(MemNode::Memory);
Node* value = can_see_stored_value(mem,phase); Node* value = can_see_stored_value(mem,phase);
if (value != NULL && value->is_Con()) { if (value != NULL && value->is_Con() &&
!value->bottom_type()->higher_equal(_type)) {
// If the input to the store does not fit with the load's result type, // If the input to the store does not fit with the load's result type,
// it must be truncated. We can't delay until Ideal call since // it must be truncated. We can't delay until Ideal call since
// a singleton Value is needed for split_thru_phi optimization. // a singleton Value is needed for split_thru_phi optimization.
...@@ -1822,7 +1824,8 @@ Node *LoadUSNode::Ideal(PhaseGVN *phase, bool can_reshape) { ...@@ -1822,7 +1824,8 @@ Node *LoadUSNode::Ideal(PhaseGVN *phase, bool can_reshape) {
const Type* LoadUSNode::Value(PhaseTransform *phase) const { const Type* LoadUSNode::Value(PhaseTransform *phase) const {
Node* mem = in(MemNode::Memory); Node* mem = in(MemNode::Memory);
Node* value = can_see_stored_value(mem,phase); Node* value = can_see_stored_value(mem,phase);
if (value != NULL && value->is_Con()) { if (value != NULL && value->is_Con() &&
!value->bottom_type()->higher_equal(_type)) {
// If the input to the store does not fit with the load's result type, // If the input to the store does not fit with the load's result type,
// it must be truncated. We can't delay until Ideal call since // it must be truncated. We can't delay until Ideal call since
// a singleton Value is needed for split_thru_phi optimization. // a singleton Value is needed for split_thru_phi optimization.
...@@ -1853,7 +1856,8 @@ Node *LoadSNode::Ideal(PhaseGVN *phase, bool can_reshape) { ...@@ -1853,7 +1856,8 @@ Node *LoadSNode::Ideal(PhaseGVN *phase, bool can_reshape) {
const Type* LoadSNode::Value(PhaseTransform *phase) const { const Type* LoadSNode::Value(PhaseTransform *phase) const {
Node* mem = in(MemNode::Memory); Node* mem = in(MemNode::Memory);
Node* value = can_see_stored_value(mem,phase); Node* value = can_see_stored_value(mem,phase);
if (value != NULL && value->is_Con()) { if (value != NULL && value->is_Con() &&
!value->bottom_type()->higher_equal(_type)) {
// If the input to the store does not fit with the load's result type, // If the input to the store does not fit with the load's result type,
// it must be truncated. We can't delay until Ideal call since // it must be truncated. We can't delay until Ideal call since
// a singleton Value is needed for split_thru_phi optimization. // a singleton Value is needed for split_thru_phi optimization.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册