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.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/ir/ExpressionAnalyzer.cpp b/src/ir/ExpressionAnalyzer.cpp
index 5368c25f6..64b1ce24b 100644
--- a/src/ir/ExpressionAnalyzer.cpp
+++ b/src/ir/ExpressionAnalyzer.cpp
@@ -510,8 +510,14 @@ uint32_t ExpressionAnalyzer::hash(Expression* curr) {
break;
}
case Expression::Id::ConstId: {
- HASH(Const, value.type);
- HASH64(Const, value.getBits());
+ auto* c = curr->cast<Const>();
+ hash(c->type);
+ auto bits = c->value.getBits();
+ if (getTypeSize(c->type) == 4) {
+ hash(uint32_t(bits));
+ } else {
+ hash64(bits);
+ }
break;
}
case Expression::Id::UnaryId: {