Skip to content

Commit 80b509c

Browse files
authored
wasm2js: don't emit obviously unnecessary parens (#2080)
A minifier would probably remove them later anyhow, but they make reading the code annoying and hard.
1 parent 29e7e44 commit 80b509c

50 files changed

Lines changed: 5614 additions & 8720 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/emscripten-optimizer/simple_ast.h

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1332,6 +1332,10 @@ struct JSPrinter {
13321332
}
13331333
}
13341334

1335+
static bool isBlock(Ref node) {
1336+
return node->isArray() && !node->empty() && node[0] == BLOCK;
1337+
}
1338+
13351339
static bool ifHasElse(Ref node) {
13361340
assert(node->isArray() && node[0] == IF);
13371341
return node->size() >= 4 && !!node[3];
@@ -1344,25 +1348,35 @@ struct JSPrinter {
13441348
print(node[1]);
13451349
emit(')');
13461350
space();
1347-
emit('{');
1348-
indent++;
1349-
newline();
1350-
print(node[2]);
1351-
indent--;
1352-
newline();
1353-
emit('}');
1354-
if (ifHasElse(node)) {
1355-
space();
1356-
emit("else");
1357-
safeSpace();
1351+
bool emitsBracesAnyhow = isBlock(node[2]);
1352+
if (!emitsBracesAnyhow) {
13581353
emit('{');
13591354
indent++;
13601355
newline();
1361-
print(node[3]);
1356+
}
1357+
print(node[2]);
1358+
if (!emitsBracesAnyhow) {
13621359
indent--;
13631360
newline();
13641361
emit('}');
13651362
}
1363+
if (ifHasElse(node)) {
1364+
space();
1365+
emit("else");
1366+
safeSpace();
1367+
bool emitsBracesAnyhow = isBlock(node[3]);
1368+
if (!emitsBracesAnyhow) {
1369+
emit('{');
1370+
indent++;
1371+
newline();
1372+
}
1373+
print(node[3]);
1374+
if (!emitsBracesAnyhow) {
1375+
indent--;
1376+
newline();
1377+
emit('}');
1378+
}
1379+
}
13661380
}
13671381

13681382
void printDo(Ref node) {

test/wasm2js/address.2asm.js

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,20 +51,18 @@ function asmFunc(global, env, buffer) {
5151
var oldPages = __wasm_current_memory() | 0;
5252
var newPages = oldPages + pagesToAdd | 0;
5353
if ((oldPages < newPages) && (newPages < 65536)) {
54-
{
55-
var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536));
56-
var newHEAP8 = new global.Int8Array(newBuffer);
57-
newHEAP8.set(HEAP8);
58-
HEAP8 = newHEAP8;
59-
HEAP16 = new global.Int16Array(newBuffer);
60-
HEAP32 = new global.Int32Array(newBuffer);
61-
HEAPU8 = new global.Uint8Array(newBuffer);
62-
HEAPU16 = new global.Uint16Array(newBuffer);
63-
HEAPU32 = new global.Uint32Array(newBuffer);
64-
HEAPF32 = new global.Float32Array(newBuffer);
65-
HEAPF64 = new global.Float64Array(newBuffer);
66-
buffer = newBuffer;
67-
}
54+
var newBuffer = new ArrayBuffer(Math_imul(newPages, 65536));
55+
var newHEAP8 = new global.Int8Array(newBuffer);
56+
newHEAP8.set(HEAP8);
57+
HEAP8 = newHEAP8;
58+
HEAP16 = new global.Int16Array(newBuffer);
59+
HEAP32 = new global.Int32Array(newBuffer);
60+
HEAPU8 = new global.Uint8Array(newBuffer);
61+
HEAPU16 = new global.Uint16Array(newBuffer);
62+
HEAPU32 = new global.Uint32Array(newBuffer);
63+
HEAPF32 = new global.Float32Array(newBuffer);
64+
HEAPF64 = new global.Float64Array(newBuffer);
65+
buffer = newBuffer;
6866
}
6967
return oldPages;
7068
}

test/wasm2js/br.2asm.js

Lines changed: 20 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,8 @@ function asmFunc(global, env, buffer) {
222222
var $3_1 = 0, $5_1 = 0;
223223
block : {
224224
if ($0) {
225-
{
226-
$3_1 = 3;
227-
break block;
228-
}
225+
$3_1 = 3;
226+
break block;
229227
} else {
230228
$5_1 = $1_1
231229
}
@@ -242,10 +240,8 @@ function asmFunc(global, env, buffer) {
242240
if ($0) {
243241
$5_1 = $1_1
244242
} else {
245-
{
246-
$4_1 = 4;
247-
break block;
248-
}
243+
$4_1 = 4;
244+
break block;
249245
}
250246
$4_1 = $5_1;
251247
}
@@ -562,15 +558,11 @@ function asmFunc(global, env, buffer) {
562558
i64toi32_i32$3 = 32;
563559
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
564560
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) {
565-
{
566-
i64toi32_i32$0 = 0;
567-
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
568-
}
561+
i64toi32_i32$0 = 0;
562+
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
569563
} else {
570-
{
571-
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
572-
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
573-
}
564+
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
565+
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
574566
}
575567
setTempRet0($7_1 | 0);
576568
i64toi32_i32$0 = $0$hi;
@@ -588,15 +580,11 @@ function asmFunc(global, env, buffer) {
588580
i64toi32_i32$3 = 32;
589581
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
590582
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) {
591-
{
592-
i64toi32_i32$0 = 0;
593-
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
594-
}
583+
i64toi32_i32$0 = 0;
584+
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
595585
} else {
596-
{
597-
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
598-
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
599-
}
586+
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
587+
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
600588
}
601589
setTempRet0($7_1 | 0);
602590
i64toi32_i32$0 = $0$hi;
@@ -614,15 +602,11 @@ function asmFunc(global, env, buffer) {
614602
i64toi32_i32$3 = 32;
615603
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
616604
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) {
617-
{
618-
i64toi32_i32$0 = 0;
619-
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
620-
}
605+
i64toi32_i32$0 = 0;
606+
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
621607
} else {
622-
{
623-
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
624-
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
625-
}
608+
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
609+
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
626610
}
627611
setTempRet0($7_1 | 0);
628612
i64toi32_i32$0 = $0$hi;
@@ -640,15 +624,11 @@ function asmFunc(global, env, buffer) {
640624
i64toi32_i32$3 = 32;
641625
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
642626
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) {
643-
{
644-
i64toi32_i32$0 = 0;
645-
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
646-
}
627+
i64toi32_i32$0 = 0;
628+
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
647629
} else {
648-
{
649-
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
650-
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
651-
}
630+
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
631+
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
652632
}
653633
setTempRet0($7_1 | 0);
654634
i64toi32_i32$0 = $0$hi;

test/wasm2js/br_table.2asm.js

Lines changed: 30 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -12727,13 +12727,11 @@ function asmFunc(global, env, buffer) {
1272712727
var $4_1 = 0, $6_1 = 0;
1272812728
block : {
1272912729
if ($0) {
12730-
{
12731-
$4_1 = 3;
12732-
switch (0 | 0) {
12733-
default:
12734-
break block;
12735-
};
12736-
}
12730+
$4_1 = 3;
12731+
switch (0 | 0) {
12732+
default:
12733+
break block;
12734+
};
1273712735
} else {
1273812736
$6_1 = $1_1
1273912737
}
@@ -12751,17 +12749,15 @@ function asmFunc(global, env, buffer) {
1275112749
if ($0) {
1275212750
$7_1 = $1_1
1275312751
} else {
12754-
{
12755-
$4_1 = 4;
12756-
$5_1 = $4_1;
12757-
$6_1 = $4_1;
12758-
switch (0 | 0) {
12759-
case 0:
12760-
break block;
12761-
default:
12762-
break if_;
12763-
};
12764-
}
12752+
$4_1 = 4;
12753+
$5_1 = $4_1;
12754+
$6_1 = $4_1;
12755+
switch (0 | 0) {
12756+
case 0:
12757+
break block;
12758+
default:
12759+
break if_;
12760+
};
1276512761
}
1276612762
$6_1 = $7_1;
1276712763
}
@@ -13245,15 +13241,11 @@ function asmFunc(global, env, buffer) {
1324513241
i64toi32_i32$3 = 32;
1324613242
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
1324713243
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) {
13248-
{
13249-
i64toi32_i32$0 = 0;
13250-
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
13251-
}
13244+
i64toi32_i32$0 = 0;
13245+
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
1325213246
} else {
13253-
{
13254-
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
13255-
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
13256-
}
13247+
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
13248+
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
1325713249
}
1325813250
setTempRet0($7_1 | 0);
1325913251
i64toi32_i32$0 = $0$hi;
@@ -13271,15 +13263,11 @@ function asmFunc(global, env, buffer) {
1327113263
i64toi32_i32$3 = 32;
1327213264
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
1327313265
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) {
13274-
{
13275-
i64toi32_i32$0 = 0;
13276-
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
13277-
}
13266+
i64toi32_i32$0 = 0;
13267+
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
1327813268
} else {
13279-
{
13280-
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
13281-
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
13282-
}
13269+
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
13270+
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
1328313271
}
1328413272
setTempRet0($7_1 | 0);
1328513273
i64toi32_i32$0 = $0$hi;
@@ -13297,15 +13285,11 @@ function asmFunc(global, env, buffer) {
1329713285
i64toi32_i32$3 = 32;
1329813286
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
1329913287
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) {
13300-
{
13301-
i64toi32_i32$0 = 0;
13302-
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
13303-
}
13288+
i64toi32_i32$0 = 0;
13289+
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
1330413290
} else {
13305-
{
13306-
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
13307-
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
13308-
}
13291+
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
13292+
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
1330913293
}
1331013294
setTempRet0($7_1 | 0);
1331113295
i64toi32_i32$0 = $0$hi;
@@ -13323,15 +13307,11 @@ function asmFunc(global, env, buffer) {
1332313307
i64toi32_i32$3 = 32;
1332413308
i64toi32_i32$4 = i64toi32_i32$3 & 31 | 0;
1332513309
if (32 >>> 0 <= (i64toi32_i32$3 & 63 | 0) >>> 0) {
13326-
{
13327-
i64toi32_i32$0 = 0;
13328-
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
13329-
}
13310+
i64toi32_i32$0 = 0;
13311+
$7_1 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
1333013312
} else {
13331-
{
13332-
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
13333-
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
13334-
}
13313+
i64toi32_i32$0 = i64toi32_i32$1 >>> i64toi32_i32$4 | 0;
13314+
$7_1 = (((1 << i64toi32_i32$4 | 0) - 1 | 0) & i64toi32_i32$1 | 0) << (32 - i64toi32_i32$4 | 0) | 0 | (i64toi32_i32$2 >>> i64toi32_i32$4 | 0) | 0;
1333513315
}
1333613316
setTempRet0($7_1 | 0);
1333713317
i64toi32_i32$0 = $0$hi;

test/wasm2js/br_table_temp.2asm.js

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12722,13 +12722,11 @@ function asmFunc(global, env, buffer) {
1272212722
var $4_1 = 0, $6_1 = 0;
1272312723
block : {
1272412724
if ($0) {
12725-
{
12726-
$4_1 = 3;
12727-
switch (0 | 0) {
12728-
default:
12729-
break block;
12730-
};
12731-
}
12725+
$4_1 = 3;
12726+
switch (0 | 0) {
12727+
default:
12728+
break block;
12729+
};
1273212730
} else {
1273312731
$6_1 = $1_1
1273412732
}
@@ -12746,17 +12744,15 @@ function asmFunc(global, env, buffer) {
1274612744
if ($0) {
1274712745
$7_1 = $1_1
1274812746
} else {
12749-
{
12750-
$4_1 = 4;
12751-
$5_1 = $4_1;
12752-
$6_1 = $4_1;
12753-
switch (0 | 0) {
12754-
case 0:
12755-
break block;
12756-
default:
12757-
break if_;
12758-
};
12759-
}
12747+
$4_1 = 4;
12748+
$5_1 = $4_1;
12749+
$6_1 = $4_1;
12750+
switch (0 | 0) {
12751+
case 0:
12752+
break block;
12753+
default:
12754+
break if_;
12755+
};
1276012756
}
1276112757
$6_1 = $7_1;
1276212758
}

0 commit comments

Comments
 (0)