PUBLIC COMMENTS
This issue was found during work on signflip problem.
PhaseCCP::saturate(), used by PhiNode::Value(), calls TypeInt::widen() which may call TypeInt::make() which normalizes small ints. On other hand TypeInt::xmeet() does not call TypeInt::make() and does not normalizes small ints. It may trigger next assert during CCP:
Current function is ccp_type_widens
1314 assert(t->meet(t0) == t, "Not monotonic");
Solution:
Call TypeInt::make() from TypeInt::xmeet() and normalize small ints in TypeInt::xdual() so the type meet will be symmetric.
Passed CTW, JPRT, passed original test with signflip changes.
|