RFR(XS) JDK-8013830: [parfait] Uninitialised pointer 'Reachblock' may be used as argument
niclas.adlertz at oracle.com
Mon Oct 7 10:14:23 PDT 2013
At row 1330 in reg_split.cpp we check if we can split by re-materializing 'def'. We only enter split_Rematerialize() at row 1341 if the 'def' node doesn't have any live range inputs (contains_no_live_range_input(def)).
This means that the condition at split_Rematerialize() at row 377 will never be true when entering from row 1341. Because of this we can pass in NULL at the call on row 1341 instead of the uninitialized pointer 'Reachblock'.
On 2013-10-07 18:18, Roland Westrelin wrote:
> Hi Niclas,
>> The uninitialized pointer 'Reachblock' can be replaced with NULL at the call since the node we are re-materializing will not have any live range input (because of contains_no_live_range_input(def)).
>> WEBREV: http://cr.openjdk.java.net/~adlertz/JDK-8013830/webrev00/
>> JBS: https://bugs.openjdk.java.net/browse/JDK-8013830
> Can you give more details? Which test in PhaseChaitin::split_Rematerialize() fails/succeeds so that we don't reach
> 378 assert(Reachblock != NULL, "Reachblock must be non-NULL");
> 379 Node *rdef = Reachblock[lrg2reach[lidx]];
> when contains_no_live_range_input(def)is true?
More information about the hotspot-compiler-dev