diff options
author | Pat Gavlin <pgavlin@gmail.com> | 2016-08-19 10:44:46 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-19 10:44:46 -0700 |
commit | 738f93e7baf5aef7639cdd4567e9cb1746aed619 (patch) | |
tree | 425681f48e72df83235e2a77a6c84cb93bed3927 /src/jit/gtstructs.h | |
parent | 00c85b302a078d5d13cfe9ff8cb453cd8296d6aa (diff) | |
download | coreclr-738f93e7baf5aef7639cdd4567e9cb1746aed619.tar.gz coreclr-738f93e7baf5aef7639cdd4567e9cb1746aed619.tar.bz2 coreclr-738f93e7baf5aef7639cdd4567e9cb1746aed619.zip |
Implement the proposed design for RyuJIT's LIR. (#6689)
These changes implement the design for RyuJIT's LIR described in https://github.com/dotnet/coreclr/blob/master/Documentation/design-docs/removing-embedded-statements.md.
The following passes required changes:
Rationalize, which has been almost completely rewritten
Long decomposition
Target-independent lowering
Target-dependent lowering
LSRA
Liveness
Flowgraph optimization
Codegen
For the most part, these changes are confined to the backend. Common code that needed to be updated included liveness, flowgraph optimization, and a few miscellaneous utilities.
The utilities used to analyze and manipulate LIR live (almost) entirely in src/jit/lir.{cpp,h}. The core concepts that are unique to LIR are LIR::Use and LIR::Range. The latter is a tuple that captures an SDSU def (i.e. an LIR node) and its corresponding use->def edge and user. The former serves to abstract a self-contained sequence of LIR nodes that make up e.g. the contents of a basic block.
Testing indicates that neither JIT throughput nor code quality are significantly impacted by these changes.
Diffstat (limited to 'src/jit/gtstructs.h')
-rw-r--r-- | src/jit/gtstructs.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/jit/gtstructs.h b/src/jit/gtstructs.h index ae7311ace5..43483804b6 100644 --- a/src/jit/gtstructs.h +++ b/src/jit/gtstructs.h @@ -80,7 +80,7 @@ GTSTRUCT_1(ArrElem , GT_ARR_ELEM) GTSTRUCT_1(ArrOffs , GT_ARR_OFFSET) GTSTRUCT_1(ArrIndex , GT_ARR_INDEX) GTSTRUCT_1(RetExpr , GT_RET_EXPR) -GTSTRUCT_1(Stmt , GT_STMT) +GTSTRUCT_2(Stmt , GT_STMT, GT_IL_OFFSET) GTSTRUCT_1(Obj , GT_OBJ) GTSTRUCT_2(CopyOrReload, GT_COPY, GT_RELOAD) GTSTRUCT_2(ClsVar , GT_CLS_VAR, GT_CLS_VAR_ADDR) |