summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ir/ExpressionAnalyzer.cpp4
-rw-r--r--test/passes/code-folding.txt17
-rw-r--r--test/passes/code-folding.wast16
3 files changed, 37 insertions, 0 deletions
diff --git a/src/ir/ExpressionAnalyzer.cpp b/src/ir/ExpressionAnalyzer.cpp
index 748b5a0af..5368c25f6 100644
--- a/src/ir/ExpressionAnalyzer.cpp
+++ b/src/ir/ExpressionAnalyzer.cpp
@@ -214,6 +214,7 @@ bool ExpressionAnalyzer::flexibleEqual(Expression* left, Expression* right, Expr
}
CHECK(Load, offset);
CHECK(Load, align);
+ CHECK(Load, isAtomic);
PUSH(Load, ptr);
break;
}
@@ -222,6 +223,7 @@ bool ExpressionAnalyzer::flexibleEqual(Expression* left, Expression* right, Expr
CHECK(Store, offset);
CHECK(Store, align);
CHECK(Store, valueType);
+ CHECK(Store, isAtomic);
PUSH(Store, ptr);
PUSH(Store, value);
break;
@@ -463,6 +465,7 @@ uint32_t ExpressionAnalyzer::hash(Expression* curr) {
}
HASH(Load, offset);
HASH(Load, align);
+ HASH(Load, isAtomic);
PUSH(Load, ptr);
break;
}
@@ -471,6 +474,7 @@ uint32_t ExpressionAnalyzer::hash(Expression* curr) {
HASH(Store, offset);
HASH(Store, align);
HASH(Store, valueType);
+ HASH(Store, isAtomic);
PUSH(Store, ptr);
PUSH(Store, value);
break;
diff --git a/test/passes/code-folding.txt b/test/passes/code-folding.txt
index 33b5da6a7..054e58104 100644
--- a/test/passes/code-folding.txt
+++ b/test/passes/code-folding.txt
@@ -123,3 +123,20 @@
)
)
)
+(module
+ (type $0 (func (result i32)))
+ (memory $0 (shared 1 1))
+ (export "func_2224" (func $0))
+ (func $0 (; 0 ;) (type $0) (result i32)
+ (local $var$0 i32)
+ (if (result i32)
+ (i32.const 0)
+ (i32.load offset=22
+ (get_local $var$0)
+ )
+ (i32.atomic.load offset=22
+ (get_local $var$0)
+ )
+ )
+ )
+)
diff --git a/test/passes/code-folding.wast b/test/passes/code-folding.wast
index 56eea3a59..1721c3e99 100644
--- a/test/passes/code-folding.wast
+++ b/test/passes/code-folding.wast
@@ -134,4 +134,20 @@
)
)
)
+(module
+ (memory $0 (shared 1 1))
+ (export "func_2224" (func $0))
+ (func $0 (result i32)
+ (local $var$0 i32)
+ (if (result i32)
+ (i32.const 0)
+ (i32.load offset=22
+ (get_local $var$0)
+ )
+ (i32.atomic.load offset=22
+ (get_local $var$0)
+ )
+ )
+ )
+)