Add support for assigning, storing, and loading aggregate values to
L3, and thus to all higher-level languages extending it. This is a
prerequisite for removing the assignment lowering from source2il.
Details
Assignments and stores of aggregate values are lowered into memory
copies (Copy) by pass3. pass3 is currently the best pass to
implement this lowering in, since it also does the lowering of other
aggregate-related operations.
Notes For Reviewers
removing the assignment lowering from source2il will remove some conditional
logic and complexity from the latter
Summary
Add support for assigning, storing, and loading aggregate values to
L3
, and thus to all higher-level languages extending it. This is a prerequisite for removing the assignment lowering fromsource2il
.Details
Assignments and stores of aggregate values are lowered into memory copies (
Copy
) bypass3
.pass3
is currently the best pass to implement this lowering in, since it also does the lowering of other aggregate-related operations.Notes For Reviewers
source2il
will remove some conditional logic and complexity from the latter