Update plans
This commit is contained in:
parent
b267f09ea4
commit
776c12f6b5
2 changed files with 6 additions and 11 deletions
|
|
@ -4,7 +4,6 @@
|
|||
#include <pslang/ast/expression_visitor.hpp>
|
||||
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
|
||||
namespace pslang::ir
|
||||
{
|
||||
|
|
@ -268,7 +267,10 @@ namespace pslang::ir
|
|||
return last();
|
||||
}
|
||||
|
||||
// TODO: struct_definition
|
||||
node_ref apply(ast::struct_definition const & node)
|
||||
{
|
||||
return last();
|
||||
}
|
||||
|
||||
// Statement list
|
||||
|
||||
|
|
|
|||
11
plans.txt
11
plans.txt
|
|
@ -21,15 +21,8 @@ Aarch64 compiler backlog:
|
|||
* Struct function arguments & return values
|
||||
* Arrays
|
||||
|
||||
IR outline:
|
||||
* Doubly-linked list (std::list will do) of instruction nodes
|
||||
* Nodes reference other nodes for input data or branching target
|
||||
* No temporary variables, nodes themselves represent data flow
|
||||
* Assignment expressions turn into nodes that assign to previously-defined nodes
|
||||
* Jump targets (first `while` node, node after an `if`, etc) are generated as nop nodes, to prevent them from being removed by the optimizer
|
||||
* Structs & arrays can be split into several independent nodes per-field (before pointers are introduced)
|
||||
|
||||
IR optimizations:
|
||||
IR backlog:
|
||||
* Structs & arrays: structs indexed by field index, make sure the representation allows for SROA
|
||||
* Inlining: track function IR size (number of nodes will do), substitute its code instead of calling if it is small enough (pay attention to recursion)
|
||||
* Constant folding & propagation: if all node arguments are `const` nodes, replace the current node with the computed value
|
||||
* Arithmetic simplification: replace a+0 with a, etc
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue