diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-12-05 18:06:27 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-12-07 14:23:23 -0800 |
commit | 94ca29f86bf44bd7b072113093625e079266ae93 (patch) | |
tree | d0fc93cb69a9b367c7faa02a95ed7b607e77b537 /src/analyzer.js | |
parent | 67f423ed8e38e76b11bac0347d4713e349d6b1b9 (diff) |
properly legalize storing an entire structure literal
Diffstat (limited to 'src/analyzer.js')
-rw-r--r-- | src/analyzer.js | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/analyzer.js b/src/analyzer.js index 83f4317a..cbede04e 100644 --- a/src/analyzer.js +++ b/src/analyzer.js @@ -151,7 +151,9 @@ function analyzer(data, sidePass) { if (isNumber(value.ident)) { return getLegalLiterals(value.ident, bits); } else if (value.intertype == 'structvalue') { - return getLegalStructuralParts(value); + 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 }; @@ -281,8 +283,7 @@ function analyzer(data, sidePass) { case 'store': { var toAdd = []; bits = getBits(item.valueType); - var elements; - elements = getLegalVars(item.value.ident, bits); + var elements = getLegalParams([item.value], bits)[0]; var j = 0; elements.forEach(function(element) { var tempVar = '$st$' + i + '$' + j; |