-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Closed
Labels
Priority:2Work that is important, but not critical for the releaseWork that is important, but not critical for the releasearea-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIenhancementProduct code improvement that does NOT require public API changes/additionsProduct code improvement that does NOT require public API changes/additionsoptimizationtenet-performancePerformance related issuePerformance related issue
Milestone
Description
The current implementation lies about the type of struct field as the type of its underlying scalar field. Because of which, in some cases it could lead to an IR where either RHS or LHS of copyblk asg is a scalar type var. These cases has following limitations
- LHS is a scalar local var. This will be marked as DoNotEnregister by fgMorphCopyblk
- RHS is a scalar local var. AssertionProp will not perform const prop on RHS such an asg since copyblk could be incorrectly considered as initblk by morph logic.
These two limitations could be avoided by implementing recursive struct promotion.
category:cq
theme:structs
skill-level:expert
cost:large
impact:medium
pentp, ilexp and sandreenko
Metadata
Metadata
Assignees
Labels
Priority:2Work that is important, but not critical for the releaseWork that is important, but not critical for the releasearea-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIenhancementProduct code improvement that does NOT require public API changes/additionsProduct code improvement that does NOT require public API changes/additionsoptimizationtenet-performancePerformance related issuePerformance related issue