summaryrefslogtreecommitdiff
path: root/src/ast_utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast_utils.h')
-rw-r--r--src/ast_utils.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/ast_utils.h b/src/ast_utils.h
index f7a486332..5deaa6a2c 100644
--- a/src/ast_utils.h
+++ b/src/ast_utils.h
@@ -832,6 +832,13 @@ struct AutoDrop : public WalkerPass<ExpressionStackWalker<AutoDrop, Visitor<Auto
curr->finalize(); // we may have changed our type
}
+ void visitIf(If* curr) {
+ // if without else does not return a value, so the body must be dropped if it is concrete
+ if (!curr->ifFalse && isConcreteWasmType(curr->ifTrue->type)) {
+ curr->ifTrue = Builder(*getModule()).makeDrop(curr->ifTrue);
+ }
+ }
+
void visitFunction(Function* curr) {
if (curr->result == none && isConcreteWasmType(curr->body->type)) {
curr->body = Builder(*getModule()).makeDrop(curr->body);