aboutsummaryrefslogtreecommitdiff
path: root/src/analyzer.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-04-12 16:55:36 -0700
committerAlon Zakai <alonzakai@gmail.com>2013-04-12 16:55:36 -0700
commitf0c69a1cfeb7ec8050f3f22a05087335b6f56f38 (patch)
tree6cc49faebbbad3d9f0d7428cba344806ed5f8f1c /src/analyzer.js
parent94aa7b917086053fbf4f6125daad8bb1bd889190 (diff)
handle inline struct definitions (assuming zeroinit) in illegal insertvalue, and add testcase based on gmp.js
Diffstat (limited to 'src/analyzer.js')
-rw-r--r--src/analyzer.js4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/analyzer.js b/src/analyzer.js
index c10f18cc..3921cab8 100644
--- a/src/analyzer.js
+++ b/src/analyzer.js
@@ -124,6 +124,10 @@ function analyzer(data, sidePass) {
bits = bits || 32; // things like pointers are all i32, but show up as 0 bits from getBits
if (allowLegal && bits <= 32) return [{ ident: base + ('i' + bits in Runtime.INT_TYPES ? '' : '$0'), bits: bits }];
if (isNumber(base)) return getLegalLiterals(base, bits);
+ if (base[0] == '{') {
+ warnOnce('seeing source of illegal data ' + base + ', likely an inline struct - assuming zeroinit');
+ return getLegalLiterals('0', bits);
+ }
var ret = new Array(Math.ceil(bits/32));
var i = 0;
if (base == 'zeroinitializer' || base == 'undef') base = 0;