summaryrefslogtreecommitdiffhomepage
path: root/flowgraph
diff options
context:
space:
mode:
authorRoland Reichwein <mail@reichwein.it>2020-11-22 22:14:23 +0100
committerRoland Reichwein <mail@reichwein.it>2020-11-22 22:14:23 +0100
commitff69e8cab318101843cd8b49a0cb04df9763e10f (patch)
tree58778d0ba28264880df8bdf6bfe45766939c3af9 /flowgraph
parentad3fd947005400c90f41baa4416a27d94b1bc157 (diff)
Generalize Add / Mul, Integer promotion, tests
Diffstat (limited to 'flowgraph')
-rw-r--r--flowgraph/node.cpp7
-rw-r--r--flowgraph/node.h3
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