Skip to content

Use evalute API to evaluate children of BNDCHKwithSpineCHKEvaluator under arraylets mode #9761

Open
@fjeremic

Description

@fjeremic

In #9614 we fixed an issue related to sign/zero extension problems when evaluating the children underneath a TR::BNDCHKwithSpineCHK. The problem has been band-aid fixed to avoid the issue, however the root cause is still there.

The problem with doing this sort of evaluation of loads/stores is that it is incomplete. The load and store evaluators are non-trivial and take care of things like load extensions optimization and the setting of various register flags. The evaluator fixed in #9614 does not do all of that, so it is incomplete.

In general we try to avoid "evaluating" load and store IL by generating load and store instructions because of this complexity. I believe that due to historical reasons this particular evaluator was not updated to do so.

How to fix this? We should simply be calling cg->evaluate(...) to evaluate load and store nodes, which not only will simplify the TR::BNDCHKwithSpineCHK evaluator but it will also be functionally correct.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions