RFR(S): 8214344: C2: assert(con.basic_type() != T_ILLEGAL) failed: elembt=byte; loadbt=void; unsigned=0
vladimir.kozlov at oracle.com
Wed Nov 28 18:22:51 UTC 2018
Just curious, will main body (one iteration) be executed or pre-loop is executed? In other words is vector instruction
is executed during run?
On 11/28/18 4:27 AM, Roland Westrelin wrote:
> 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.
More information about the hotspot-compiler-dev