diff options
author | Roland Reichwein <mail@reichwein.it> | 2020-11-22 22:14:23 +0100 |
---|---|---|
committer | Roland Reichwein <mail@reichwein.it> | 2020-11-22 22:14:23 +0100 |
commit | ff69e8cab318101843cd8b49a0cb04df9763e10f (patch) | |
tree | 58778d0ba28264880df8bdf6bfe45766939c3af9 /flowgraph | |
parent | ad3fd947005400c90f41baa4416a27d94b1bc157 (diff) |
Generalize Add / Mul, Integer promotion, tests
Diffstat (limited to 'flowgraph')
-rw-r--r-- | flowgraph/node.cpp | 7 | ||||
-rw-r--r-- | flowgraph/node.h | 3 |
2 files changed, 10 insertions, 0 deletions
diff --git a/flowgraph/node.cpp b/flowgraph/node.cpp index cb7677a..27310a9 100644 --- a/flowgraph/node.cpp +++ b/flowgraph/node.cpp @@ -16,6 +16,13 @@ FlowGraph::Data& Node::destination() return mOperands[0]; } +Data FlowGraph::MakeTemporary(std::shared_ptr<FlowGraph::LocalScope> scope, DataType type) +{ + Data data{type, std::make_shared<TemporaryStorage>()}; + scope->push_back(std::make_shared<Data>(data)); + return data; +} + // 4 byte for now Data FlowGraph::MakeConstantInt(int i) { diff --git a/flowgraph/node.h b/flowgraph/node.h index 34e937b..f653096 100644 --- a/flowgraph/node.h +++ b/flowgraph/node.h @@ -47,6 +47,8 @@ namespace FlowGraph { {} }; + Data MakeTemporary(std::shared_ptr<LocalScope> scope, DataType type); + Data MakeConstantInt(int i); Data MakeLocalInt(std::shared_ptr<FlowGraph::LocalScope> scope, const std::string& name); Data MakeLocalPointer(std::shared_ptr<FlowGraph::LocalScope> scope, const std::string& name); @@ -120,6 +122,7 @@ namespace FlowGraph { LogicalNot, BitwiseNot, Minus, + Resize, // Promote / narrow a value }; class UnaryOperation: public Node |