aboutsummaryrefslogtreecommitdiff
path: root/src/analyzer.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-12-05 20:32:26 -0800
committerAlon Zakai <alonzakai@gmail.com>2012-12-07 14:23:23 -0800
commit1d4641ded68b5183af571c2421dbea7a615a0bcf (patch)
tree208dfbd3ef683e9906e1cd6a124674529ceebd69 /src/analyzer.js
parentfd55b700e2d369ec07787acb7920d42ef803e208 (diff)
generalize handling of zeroinitializer and undef in legalizer code
Diffstat (limited to 'src/analyzer.js')
-rw-r--r--src/analyzer.js11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/analyzer.js b/src/analyzer.js
index bfb2dd7b..cd7f6fea 100644
--- a/src/analyzer.js
+++ b/src/analyzer.js
@@ -124,8 +124,9 @@ function analyzer(data, sidePass) {
if (isNumber(base)) return getLegalLiterals(base, bits);
var ret = new Array(Math.ceil(bits/32));
var i = 0;
+ if (base == 'zeroinitializer' || base == 'undef') base = 0;
while (bits > 0) {
- ret[i] = { ident: base + '$' + i, bits: Math.min(32, bits) };
+ ret[i] = { ident: base ? base + '$' + i : '0', bits: Math.min(32, bits) };
bits -= 32;
i++;
}
@@ -154,10 +155,10 @@ function analyzer(data, sidePass) {
return getLegalStructuralParts(value).map(function(part) {
return { ident: part.ident, bits: part.type.substr(1) };
});
- } else if (value.ident == 'zeroinitializer') {
- return getStructuralTypeParts(value.type).map(function(part) {
- return { ident: 0, bits: 32 };
- });
+ //} else if (value.ident == 'zeroinitializer' || value.ident == 'undef') {
+ // return getStructuralTypeParts(value.type).map(function(part) {
+ // return { ident: 0, bits: 32 };
+ // });
} else {
return getLegalVars(value.ident, bits);
}