Skip to content

Commit c6d56fb

Browse files
committed
optimize out double not
1 parent 6467d20 commit c6d56fb

3 files changed

+26
-13
lines changed

tools/js-optimizer.js

+17-13
Original file line numberDiff line numberDiff line change
@@ -951,19 +951,23 @@ function optimizeShiftsAggressive(ast) {
951951
// if (!(x < 5))
952952
// or such. Simplifying these saves space and time.
953953
function simplifyNotCompsDirect(node) {
954-
if (node[0] == 'unary-prefix' && node[1] == '!' && node[2][0] == 'binary') {
955-
if (node[2][1] == '<') {
956-
return ['binary', '>=', node[2][2], node[2][3]];
957-
} else if (node[2][1] == '>') {
958-
return ['binary', '<=', node[2][2], node[2][3]];
959-
} else if (node[2][1] == '==') {
960-
return ['binary', '!=', node[2][2], node[2][3]];
961-
} else if (node[2][1] == '!=') {
962-
return ['binary', '==', node[2][2], node[2][3]];
963-
} else if (node[2][1] == '===') {
964-
return ['binary', '!==', node[2][2], node[2][3]];
965-
} else if (node[2][1] == '!==') {
966-
return ['binary', '===', node[2][2], node[2][3]];
954+
if (node[0] == 'unary-prefix' && node[1] == '!') {
955+
if (node[2][0] == 'binary') {
956+
if (node[2][1] == '<') {
957+
return ['binary', '>=', node[2][2], node[2][3]];
958+
} else if (node[2][1] == '>') {
959+
return ['binary', '<=', node[2][2], node[2][3]];
960+
} else if (node[2][1] == '==') {
961+
return ['binary', '!=', node[2][2], node[2][3]];
962+
} else if (node[2][1] == '!=') {
963+
return ['binary', '==', node[2][2], node[2][3]];
964+
} else if (node[2][1] == '===') {
965+
return ['binary', '!==', node[2][2], node[2][3]];
966+
} else if (node[2][1] == '!==') {
967+
return ['binary', '===', node[2][2], node[2][3]];
968+
}
969+
} else if (node[2][0] == 'unary-prefix' && node[2][1] == '!') {
970+
return node[2][2];
967971
}
968972
}
969973
return node;

tools/test-js-optimizer-asm-last-output.js

+3
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,8 @@ function looop() {
3939
do {
4040
do_it();
4141
} while (a <= b);
42+
do {
43+
do_it();
44+
} while (x());
4245
}
4346

tools/test-js-optimizer-asm-last.js

+6
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ function looop() {
4545
break;
4646
}
4747
}
48+
while (1) {
49+
do_it();
50+
if (!x()) {
51+
break;
52+
}
53+
}
4854
}
4955
// EMSCRIPTEN_GENERATED_FUNCTIONS: ["finall", "looop"]
5056

0 commit comments

Comments
 (0)