phi/mergemem transformations (original) (raw)

Tom Rodriguez Thomas.Rodriguez at Sun.COM
Thu Oct 15 17:09:04 PDT 2009


I've got the following pattern:

164 MergeMem === 1 160 165 [[ 110 105 96 ]]
{ N165:rawptr:BotPTR } Memory: @BotPTR *+bot, idx=Bot; 94 Region === 94 53 88 30 [[ 111 97 110 96 95 94 ]] 96 Phi === 94 48 164 7 [[ 54 ]] #memory Memory: @BotPTR *+bot,
idx=Bot; 110 Phi === 94 48 164 26 [[ 54 ]] #memory Memory:
@rawptr:BotPTR, idx=Raw;

and PhiNode::Ideal seems happy to distribute the slice of the MergeMem
to the raw Phi but not to the BotPTR phi. I noticed this piece of
code in PhiNode::Ideal:

 // This restriction is temporarily necessary to ensure termination:
 if (!saw_self && adr_type() == TypePtr::BOTTOM)  merge_width = 0;

which seems like the main disabler. The code is from 2000 and there's
no real information about what problem it was really trying to solve.

D 1.170.2.3 00/07/11 13:44:38 nips 440 430 00267/00045/01966 MRs: COMMENTS: Merged changes between child workspace "/net/jano/export/disk05/ hotspot/users/nips/c2_merge" and parent workspace "/net/jano/export/disk05/hotspot/ws/main/baseline".

Any memories from the wayback machine or theories?

tom



More information about the hotspot-compiler-dev mailing list