phi/mergemem transformations
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