vmjit: remove expression-related workaround #1262
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Make the MIR tree produced for standalone expressions (e.g.,
initializer of a
const
) syntactically well-formed. Previously, thesetrees contained a trailing MIR expression, which required various
workarounds in other places (all of which are now removed).
Details
exprToMir
procedure tomirgen
; it produces a proper MIRbody for standalone expressions by assigning the expression to the
result variable
mnkScope
), which means passes cannow rely on the presence of an outermost scope block
exprToMir
invmjit
for producing the MIR body for standaloneexpressions
vmgen
(genExpr
)vmjit
cgirgen
andmirpasses
To replicate the previous behaviour, where no copy of the value was
introduced for lvalue expressions,
vmjit
wraps standalone lvalueexpressions in an
nkHiddenAddr
, prior to passing the AST toexprToMir
.