CastPP nodes are generally removed after the CCP pass.
This is done by a convoluted process using the Ideal_DU_postCCP virtual functions in which CastPP nodes are made useless by tricking their types. Any MemNode outputs of these CastPP nodes that would then require a control edge are updated by walking up their input address nodes looking for an appropriate CastPP or CheckCastPP node. The MemNode inherits its control from the found cast node.
With DU edges available, it seems simpler to eliminate CastPP nodes and walking their output edges, updating the control inputs of the output nodes.
This is done by a convoluted process using the Ideal_DU_postCCP virtual functions in which CastPP nodes are made useless by tricking their types. Any MemNode outputs of these CastPP nodes that would then require a control edge are updated by walking up their input address nodes looking for an appropriate CastPP or CheckCastPP node. The MemNode inherits its control from the found cast node.
With DU edges available, it seems simpler to eliminate CastPP nodes and walking their output edges, updating the control inputs of the output nodes.
- relates to
-
JDK-4959717 JVM crash with error "Fatal: null exception in compiled code"
-
- Resolved
-