Request for review (L): 6797305: Add LoadUB and LoadUI opcode class

Tom Rodriguez Thomas.Rodriguez at Sun.COM
Fri Mar 6 12:19:54 PST 2009


I think the problem is in MatchNode::cisc_spill_match in  
formssel.cpp.  It appears to be selecting these new instructions as  
cisc spill variants without checking that the intermediate load  
operations match the size of the spill operation.  If you look in  
ad_x86_64.cpp it dumps a big list of the cisc spill variants and you  
can see that it's selecting the byte sized variant instead of the int  
sized one.

Didn't you reorder the instruct definitions?   I think the cisc spill  
matching selects the first one it sees and it's possible that now it's  
finding the LoadB variant.  Anyway, I think cisc_spill_match should be  
fixed to handle this correctly.

tom

On Mar 6, 2009, at 11:31 AM, Christian Thalinger wrote:

> On Fri, 2009-03-06 at 10:18 -0800, Vladimir Kozlov wrote:
>> Matcher definitely should not do this but it could be confused since
>> all LoadB mem, LoadUB mem, LoadI mem produce the same RegI register
>> and it takes first one defined in generated/adfiles/dfa_x86_64.cpp
>> in State::_sub_Op_ConvI2L(const Node *n) method.
>
> Maybe the problem this (in ad_x86_64.hpp):
>
> class loadB2LNode : public MachNode {
> ...
>  virtual int            ideal_Opcode() const { return Op_ConvI2L; }
>
> But I'm just guessing...
>
> -- Christian
>




More information about the hotspot-compiler-dev mailing list