summaryrefslogtreecommitdiff
path: root/src/ir/ExpressionAnalyzer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ir/ExpressionAnalyzer.cpp')
-rw-r--r--src/ir/ExpressionAnalyzer.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/ir/ExpressionAnalyzer.cpp b/src/ir/ExpressionAnalyzer.cpp
index 0efc7b888..cd2946253 100644
--- a/src/ir/ExpressionAnalyzer.cpp
+++ b/src/ir/ExpressionAnalyzer.cpp
@@ -280,6 +280,29 @@ bool ExpressionAnalyzer::flexibleEqual(Expression* left, Expression* right, Expr
PUSH(SIMDShift, shift);
break;
}
+ case Expression::Id::MemoryInitId: {
+ CHECK(MemoryInit, segment);
+ PUSH(MemoryInit, dest);
+ PUSH(MemoryInit, offset);
+ PUSH(MemoryInit, size);
+ break;
+ }
+ case Expression::Id::DataDropId: {
+ CHECK(DataDrop, segment);
+ break;
+ }
+ case Expression::Id::MemoryCopyId: {
+ PUSH(MemoryCopy, dest);
+ PUSH(MemoryCopy, source);
+ PUSH(MemoryCopy, size);
+ break;
+ }
+ case Expression::Id::MemoryFillId: {
+ PUSH(MemoryFill, dest);
+ PUSH(MemoryFill, value);
+ PUSH(MemoryFill, size);
+ break;
+ }
case Expression::Id::ConstId: {
if (left->cast<Const>()->value != right->cast<Const>()->value) {
return false;
@@ -561,6 +584,29 @@ HashType ExpressionAnalyzer::hash(Expression* curr) {
PUSH(SIMDShift, shift);
break;
}
+ case Expression::Id::MemoryInitId: {
+ HASH(MemoryInit, segment);
+ PUSH(MemoryInit, dest);
+ PUSH(MemoryInit, offset);
+ PUSH(MemoryInit, size);
+ break;
+ }
+ case Expression::Id::DataDropId: {
+ HASH(DataDrop, segment);
+ break;
+ }
+ case Expression::Id::MemoryCopyId: {
+ PUSH(MemoryCopy, dest);
+ PUSH(MemoryCopy, source);
+ PUSH(MemoryCopy, size);
+ break;
+ }
+ case Expression::Id::MemoryFillId: {
+ PUSH(MemoryFill, dest);
+ PUSH(MemoryFill, value);
+ PUSH(MemoryFill, size);
+ break;
+ }
case Expression::Id::ConstId: {
auto* c = curr->cast<Const>();
hash(c->type);