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