RFR(S): 8214344: C2: assert(con.basic_type() != T_ILLEGAL) failed: elembt=byte; loadbt=void; unsigned=0

Vladimir Kozlov vladimir.kozlov at oracle.com
Wed Nov 28 18:22:51 UTC 2018


Looks good.

Just curious, will main body (one iteration) be executed or pre-loop is executed? In other words is vector instruction 
is executed during run?

Thanks,
Vladimir

On 11/28/18 4:27 AM, Roland Westrelin wrote:
> 
> http://cr.openjdk.java.net/~roland/8214344/webrev.00/
> 
> When inlined in test(), the loop from test_helper2(), is unrolled and
> vectorized but then the compiler finds the upper bound of the loop is
> known and small. That causes the main loop to be executed with a single
> iteration. That single iteration loads an element from a stable array
> at a constant index with a LoadVector node. Logic in LoadNode::Value()
> attempts to fold it and the assert fires. The fix marks vector memory
> accesses as mismatched so constant folding is not attempted.
> 
> Roland.
> 


More information about the hotspot-compiler-dev mailing list