Compare commits
6 commits
main
...
controlFlo
Author | SHA1 | Date | |
---|---|---|---|
85a3b2c0e5 | |||
7dcb3ca69a | |||
c01064e628 | |||
93b1c53261 | |||
f623325d77 | |||
f9a99a02a6 |
|
@ -540,7 +540,8 @@ namespace ts {
|
|||
let flowLoopStart = 0;
|
||||
let flowLoopCount = 0;
|
||||
let sharedFlowCount = 0;
|
||||
let flowAnalysisDisabled = false;
|
||||
let flowNodeCount = -1;
|
||||
let flowAnalysisErrors = false;
|
||||
|
||||
const emptyStringType = getLiteralType("");
|
||||
const zeroType = getLiteralType(0);
|
||||
|
@ -15949,17 +15950,14 @@ namespace ts {
|
|||
return false;
|
||||
}
|
||||
|
||||
function reportFlowControlError(node: Node) {
|
||||
const block = <Block | ModuleBlock | SourceFile>findAncestor(node, isFunctionOrModuleBlock);
|
||||
const sourceFile = getSourceFileOfNode(node);
|
||||
const span = getSpanOfTokenAtPosition(sourceFile, block.statements.pos);
|
||||
diagnostics.add(createFileDiagnostic(sourceFile, span.start, span.length, Diagnostics.The_containing_function_or_module_body_is_too_large_for_control_flow_analysis));
|
||||
function getContainingBlock(node: Node) {
|
||||
return <Block | ModuleBlock | SourceFile>findAncestor(node, isFunctionOrModuleBlock);
|
||||
}
|
||||
|
||||
function getFlowTypeOfReference(reference: Node, declaredType: Type, initialType = declaredType, flowContainer?: Node, couldBeUninitialized?: boolean) {
|
||||
let key: string | undefined;
|
||||
let flowDepth = 0;
|
||||
if (flowAnalysisDisabled) {
|
||||
if (flowAnalysisErrors && getNodeLinks(getContainingBlock(reference)).flags & NodeCheckFlags.FlowAnalysisError) {
|
||||
return errorType;
|
||||
}
|
||||
if (!reference.flowNode || !couldBeUninitialized && !(declaredType.flags & TypeFlags.Narrowable)) {
|
||||
|
@ -15979,14 +15977,23 @@ namespace ts {
|
|||
return resultType;
|
||||
|
||||
function getTypeAtFlowNode(flow: FlowNode): FlowType {
|
||||
if (flowDepth === 2000) {
|
||||
// We have made 2000 recursive invocations. To avoid overflowing the call stack we report an error
|
||||
// and disable further control flow analysis in the containing function or module body.
|
||||
flowAnalysisDisabled = true;
|
||||
reportFlowControlError(reference);
|
||||
if (flowDepth === 2000 || flowNodeCount === 500000) {
|
||||
// We have made 2000 recursive invocations or visited 500000 control flow nodes while analyzing
|
||||
// the containing function or module body, the limit at which we consider the function or module
|
||||
// body is too complex and disable further control flow analysis.
|
||||
const block = getContainingBlock(reference);
|
||||
const nodeLinks = getNodeLinks(block);
|
||||
if (!(nodeLinks.flags & NodeCheckFlags.FlowAnalysisError)) {
|
||||
nodeLinks.flags |= NodeCheckFlags.FlowAnalysisError;
|
||||
const sourceFile = getSourceFileOfNode(block);
|
||||
const span = getSpanOfTokenAtPosition(sourceFile, block.statements.pos);
|
||||
diagnostics.add(createFileDiagnostic(sourceFile, span.start, span.length, Diagnostics.The_containing_function_or_module_body_is_too_complex_for_control_flow_analysis));
|
||||
flowAnalysisErrors = true;
|
||||
}
|
||||
return errorType;
|
||||
}
|
||||
flowDepth++;
|
||||
if (flowNodeCount >= 0) flowNodeCount++;
|
||||
while (true) {
|
||||
const flags = flow.flags;
|
||||
if (flags & FlowFlags.Shared) {
|
||||
|
@ -26026,9 +26033,10 @@ namespace ts {
|
|||
checkGrammarStatementInAmbientContext(node);
|
||||
}
|
||||
if (isFunctionOrModuleBlock(node)) {
|
||||
const saveFlowAnalysisDisabled = flowAnalysisDisabled;
|
||||
const saveFlowNodeCount = flowNodeCount;
|
||||
flowNodeCount = 0;
|
||||
forEach(node.statements, checkSourceElement);
|
||||
flowAnalysisDisabled = saveFlowAnalysisDisabled;
|
||||
flowNodeCount = saveFlowNodeCount;
|
||||
}
|
||||
else {
|
||||
forEach(node.statements, checkSourceElement);
|
||||
|
@ -28861,7 +28869,9 @@ namespace ts {
|
|||
|
||||
function checkSourceFile(node: SourceFile) {
|
||||
performance.mark("beforeCheck");
|
||||
flowNodeCount = 0;
|
||||
checkSourceFileWorker(node);
|
||||
flowNodeCount = -1;
|
||||
performance.mark("afterCheck");
|
||||
performance.measure("Check", "beforeCheck", "afterCheck");
|
||||
}
|
||||
|
|
|
@ -2044,7 +2044,7 @@
|
|||
"category": "Error",
|
||||
"code": 2562
|
||||
},
|
||||
"The containing function or module body is too large for control flow analysis.": {
|
||||
"The containing function or module body is too complex for control flow analysis.": {
|
||||
"category": "Error",
|
||||
"code": 2563
|
||||
},
|
||||
|
|
|
@ -3855,6 +3855,7 @@ namespace ts {
|
|||
AssignmentsMarked = 0x00800000, // Parameter assignments have been marked
|
||||
ClassWithConstructorReference = 0x01000000, // Class that contains a binding to its constructor inside of the class body.
|
||||
ConstructorReferenceInClass = 0x02000000, // Binding to a class constructor inside of the class's body.
|
||||
FlowAnalysisError = 0x04000000, // Control flow analysis error in this block
|
||||
}
|
||||
|
||||
/* @internal */
|
||||
|
|
163
tests/baselines/reference/complexControlFlowGraph.errors.txt
Normal file
163
tests/baselines/reference/complexControlFlowGraph.errors.txt
Normal file
|
@ -0,0 +1,163 @@
|
|||
tests/cases/compiler/complexControlFlowGraph.ts(4,3): error TS2563: The containing function or module body is too complex for control flow analysis.
|
||||
|
||||
|
||||
==== tests/cases/compiler/complexControlFlowGraph.ts (1 errors) ====
|
||||
// Repro from #29926
|
||||
|
||||
const foo = function (this: any) {
|
||||
var a, b, c, d, ab, bc, cd, da, blocks = this.blocks;
|
||||
~~~
|
||||
!!! error TS2563: The containing function or module body is too complex for control flow analysis.
|
||||
|
||||
if (this.first) {
|
||||
a = blocks[0] - 1;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d = ((a & 0xefcdab89) | (~a & 0x98badcfe)) + blocks[1] + 271733878;
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c = ((d & a) | (~d & 0xefcdab89)) + blocks[2] - 1732584194;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b = ((c & d) | (~c & a)) + blocks[3] - 271733879;
|
||||
b = (b << 19) | (b >>> 13);
|
||||
} else {
|
||||
a = this.h0;
|
||||
b = this.h1;
|
||||
c = this.h2;
|
||||
d = this.h3;
|
||||
a += ((b & c) | (~b & d)) + blocks[0];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[1];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[2];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[3];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
}
|
||||
|
||||
a += ((b & c) | (~b & d)) + blocks[4];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[5];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[6];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[7];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
a += ((b & c) | (~b & d)) + blocks[8];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[9];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[10];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[11];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
a += ((b & c) | (~b & d)) + blocks[12];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[13];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[14];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[15];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[4] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[8] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
cd = c & d;
|
||||
b += (cd | (c & a) | da) + blocks[12] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | cd) + blocks[1] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[5] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[9] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
cd = c & d;
|
||||
b += (cd | (c & a) | da) + blocks[13] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | cd) + blocks[2] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[6] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[10] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
cd = c & d;
|
||||
b += (cd | (c & a) | da) + blocks[14] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | cd) + blocks[3] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[7] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[11] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[0] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[8] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[4] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[12] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[2] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[10] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[6] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[14] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[1] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[9] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[5] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[13] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[3] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[11] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[7] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[15] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
|
||||
if (this.first) {
|
||||
this.h0 = a + 1732584193 << 0;
|
||||
this.h1 = b - 271733879 << 0;
|
||||
this.h2 = c - 1732584194 << 0;
|
||||
this.h3 = d + 271733878 << 0;
|
||||
this.first = false;
|
||||
} else {
|
||||
this.h0 = this.h0 + a << 0;
|
||||
this.h1 = this.h1 + b << 0;
|
||||
this.h2 = this.h2 + c << 0;
|
||||
this.h3 = this.h3 + d << 0;
|
||||
}
|
||||
};
|
||||
|
313
tests/baselines/reference/complexControlFlowGraph.js
Normal file
313
tests/baselines/reference/complexControlFlowGraph.js
Normal file
|
@ -0,0 +1,313 @@
|
|||
//// [complexControlFlowGraph.ts]
|
||||
// Repro from #29926
|
||||
|
||||
const foo = function (this: any) {
|
||||
var a, b, c, d, ab, bc, cd, da, blocks = this.blocks;
|
||||
|
||||
if (this.first) {
|
||||
a = blocks[0] - 1;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d = ((a & 0xefcdab89) | (~a & 0x98badcfe)) + blocks[1] + 271733878;
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c = ((d & a) | (~d & 0xefcdab89)) + blocks[2] - 1732584194;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b = ((c & d) | (~c & a)) + blocks[3] - 271733879;
|
||||
b = (b << 19) | (b >>> 13);
|
||||
} else {
|
||||
a = this.h0;
|
||||
b = this.h1;
|
||||
c = this.h2;
|
||||
d = this.h3;
|
||||
a += ((b & c) | (~b & d)) + blocks[0];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[1];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[2];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[3];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
}
|
||||
|
||||
a += ((b & c) | (~b & d)) + blocks[4];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[5];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[6];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[7];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
a += ((b & c) | (~b & d)) + blocks[8];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[9];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[10];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[11];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
a += ((b & c) | (~b & d)) + blocks[12];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[13];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[14];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[15];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[4] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[8] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
cd = c & d;
|
||||
b += (cd | (c & a) | da) + blocks[12] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | cd) + blocks[1] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[5] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[9] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
cd = c & d;
|
||||
b += (cd | (c & a) | da) + blocks[13] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | cd) + blocks[2] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[6] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[10] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
cd = c & d;
|
||||
b += (cd | (c & a) | da) + blocks[14] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | cd) + blocks[3] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[7] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[11] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[0] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[8] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[4] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[12] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[2] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[10] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[6] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[14] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[1] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[9] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[5] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[13] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[3] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[11] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[7] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[15] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
|
||||
if (this.first) {
|
||||
this.h0 = a + 1732584193 << 0;
|
||||
this.h1 = b - 271733879 << 0;
|
||||
this.h2 = c - 1732584194 << 0;
|
||||
this.h3 = d + 271733878 << 0;
|
||||
this.first = false;
|
||||
} else {
|
||||
this.h0 = this.h0 + a << 0;
|
||||
this.h1 = this.h1 + b << 0;
|
||||
this.h2 = this.h2 + c << 0;
|
||||
this.h3 = this.h3 + d << 0;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//// [complexControlFlowGraph.js]
|
||||
"use strict";
|
||||
// Repro from #29926
|
||||
var foo = function () {
|
||||
var a, b, c, d, ab, bc, cd, da, blocks = this.blocks;
|
||||
if (this.first) {
|
||||
a = blocks[0] - 1;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d = ((a & 0xefcdab89) | (~a & 0x98badcfe)) + blocks[1] + 271733878;
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c = ((d & a) | (~d & 0xefcdab89)) + blocks[2] - 1732584194;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b = ((c & d) | (~c & a)) + blocks[3] - 271733879;
|
||||
b = (b << 19) | (b >>> 13);
|
||||
}
|
||||
else {
|
||||
a = this.h0;
|
||||
b = this.h1;
|
||||
c = this.h2;
|
||||
d = this.h3;
|
||||
a += ((b & c) | (~b & d)) + blocks[0];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[1];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[2];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[3];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
}
|
||||
a += ((b & c) | (~b & d)) + blocks[4];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[5];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[6];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[7];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
a += ((b & c) | (~b & d)) + blocks[8];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[9];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[10];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[11];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
a += ((b & c) | (~b & d)) + blocks[12];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[13];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[14];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[15];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[4] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[8] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
cd = c & d;
|
||||
b += (cd | (c & a) | da) + blocks[12] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | cd) + blocks[1] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[5] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[9] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
cd = c & d;
|
||||
b += (cd | (c & a) | da) + blocks[13] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | cd) + blocks[2] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[6] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[10] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
cd = c & d;
|
||||
b += (cd | (c & a) | da) + blocks[14] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | cd) + blocks[3] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[7] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[11] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[0] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[8] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[4] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[12] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[2] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[10] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[6] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[14] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[1] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[9] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[5] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[13] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[3] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[11] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[7] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[15] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
if (this.first) {
|
||||
this.h0 = a + 1732584193 << 0;
|
||||
this.h1 = b - 271733879 << 0;
|
||||
this.h2 = c - 1732584194 << 0;
|
||||
this.h3 = d + 271733878 << 0;
|
||||
this.first = false;
|
||||
}
|
||||
else {
|
||||
this.h0 = this.h0 + a << 0;
|
||||
this.h1 = this.h1 + b << 0;
|
||||
this.h2 = this.h2 + c << 0;
|
||||
this.h3 = this.h3 + d << 0;
|
||||
}
|
||||
};
|
839
tests/baselines/reference/complexControlFlowGraph.symbols
Normal file
839
tests/baselines/reference/complexControlFlowGraph.symbols
Normal file
|
@ -0,0 +1,839 @@
|
|||
=== tests/cases/compiler/complexControlFlowGraph.ts ===
|
||||
// Repro from #29926
|
||||
|
||||
const foo = function (this: any) {
|
||||
>foo : Symbol(foo, Decl(complexControlFlowGraph.ts, 2, 5))
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
|
||||
var a, b, c, d, ab, bc, cd, da, blocks = this.blocks;
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>cd : Symbol(cd, Decl(complexControlFlowGraph.ts, 3, 25))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
|
||||
if (this.first) {
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
|
||||
a = blocks[0] - 1;
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
d = ((a & 0xefcdab89) | (~a & 0x98badcfe)) + blocks[1] + 271733878;
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 7) | (d >>> 25);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
c = ((d & a) | (~d & 0xefcdab89)) + blocks[2] - 1732584194;
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 11) | (c >>> 21);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
b = ((c & d) | (~c & a)) + blocks[3] - 271733879;
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 19) | (b >>> 13);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
} else {
|
||||
a = this.h0;
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
|
||||
b = this.h1;
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
|
||||
c = this.h2;
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
|
||||
d = this.h3;
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
|
||||
a += ((b & c) | (~b & d)) + blocks[0];
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
d += ((a & b) | (~a & c)) + blocks[1];
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 7) | (d >>> 25);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
c += ((d & a) | (~d & b)) + blocks[2];
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 11) | (c >>> 21);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
b += ((c & d) | (~c & a)) + blocks[3];
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 19) | (b >>> 13);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
}
|
||||
|
||||
a += ((b & c) | (~b & d)) + blocks[4];
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
d += ((a & b) | (~a & c)) + blocks[5];
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 7) | (d >>> 25);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
c += ((d & a) | (~d & b)) + blocks[6];
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 11) | (c >>> 21);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
b += ((c & d) | (~c & a)) + blocks[7];
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 19) | (b >>> 13);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
a += ((b & c) | (~b & d)) + blocks[8];
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
d += ((a & b) | (~a & c)) + blocks[9];
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 7) | (d >>> 25);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
c += ((d & a) | (~d & b)) + blocks[10];
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 11) | (c >>> 21);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
b += ((c & d) | (~c & a)) + blocks[11];
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 19) | (b >>> 13);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
a += ((b & c) | (~b & d)) + blocks[12];
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
d += ((a & b) | (~a & c)) + blocks[13];
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 7) | (d >>> 25);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
c += ((d & a) | (~d & b)) + blocks[14];
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 11) | (c >>> 21);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
b += ((c & d) | (~c & a)) + blocks[15];
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 19) | (b >>> 13);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
bc = b & c;
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249;
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
ab = a & b;
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
d += (ab | (a & c) | bc) + blocks[4] + 1518500249;
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 5) | (d >>> 27);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
da = d & a;
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
c += (da | (d & b) | ab) + blocks[8] + 1518500249;
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 9) | (c >>> 23);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
cd = c & d;
|
||||
>cd : Symbol(cd, Decl(complexControlFlowGraph.ts, 3, 25))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
b += (cd | (c & a) | da) + blocks[12] + 1518500249;
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>cd : Symbol(cd, Decl(complexControlFlowGraph.ts, 3, 25))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 13) | (b >>> 19);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
bc = b & c;
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
a += (bc | (b & d) | cd) + blocks[1] + 1518500249;
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>cd : Symbol(cd, Decl(complexControlFlowGraph.ts, 3, 25))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
ab = a & b;
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
d += (ab | (a & c) | bc) + blocks[5] + 1518500249;
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 5) | (d >>> 27);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
da = d & a;
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
c += (da | (d & b) | ab) + blocks[9] + 1518500249;
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 9) | (c >>> 23);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
cd = c & d;
|
||||
>cd : Symbol(cd, Decl(complexControlFlowGraph.ts, 3, 25))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
b += (cd | (c & a) | da) + blocks[13] + 1518500249;
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>cd : Symbol(cd, Decl(complexControlFlowGraph.ts, 3, 25))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 13) | (b >>> 19);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
bc = b & c;
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
a += (bc | (b & d) | cd) + blocks[2] + 1518500249;
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>cd : Symbol(cd, Decl(complexControlFlowGraph.ts, 3, 25))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
ab = a & b;
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
d += (ab | (a & c) | bc) + blocks[6] + 1518500249;
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 5) | (d >>> 27);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
da = d & a;
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
c += (da | (d & b) | ab) + blocks[10] + 1518500249;
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 9) | (c >>> 23);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
cd = c & d;
|
||||
>cd : Symbol(cd, Decl(complexControlFlowGraph.ts, 3, 25))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
b += (cd | (c & a) | da) + blocks[14] + 1518500249;
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>cd : Symbol(cd, Decl(complexControlFlowGraph.ts, 3, 25))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 13) | (b >>> 19);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
bc = b & c;
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
a += (bc | (b & d) | cd) + blocks[3] + 1518500249;
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>cd : Symbol(cd, Decl(complexControlFlowGraph.ts, 3, 25))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
ab = a & b;
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
d += (ab | (a & c) | bc) + blocks[7] + 1518500249;
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 5) | (d >>> 27);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
da = d & a;
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
c += (da | (d & b) | ab) + blocks[11] + 1518500249;
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>ab : Symbol(ab, Decl(complexControlFlowGraph.ts, 3, 17))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 9) | (c >>> 23);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249;
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 13) | (b >>> 19);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
bc = b ^ c;
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
a += (bc ^ d) + blocks[0] + 1859775393;
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
d += (bc ^ a) + blocks[8] + 1859775393;
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 9) | (d >>> 23);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
da = d ^ a;
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
c += (da ^ b) + blocks[4] + 1859775393;
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 11) | (c >>> 21);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
b += (da ^ c) + blocks[12] + 1859775393;
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 15) | (b >>> 17);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
bc = b ^ c;
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
a += (bc ^ d) + blocks[2] + 1859775393;
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
d += (bc ^ a) + blocks[10] + 1859775393;
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 9) | (d >>> 23);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
da = d ^ a;
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
c += (da ^ b) + blocks[6] + 1859775393;
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 11) | (c >>> 21);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
b += (da ^ c) + blocks[14] + 1859775393;
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 15) | (b >>> 17);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
bc = b ^ c;
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
a += (bc ^ d) + blocks[1] + 1859775393;
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
d += (bc ^ a) + blocks[9] + 1859775393;
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 9) | (d >>> 23);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
da = d ^ a;
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
c += (da ^ b) + blocks[5] + 1859775393;
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 11) | (c >>> 21);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
b += (da ^ c) + blocks[13] + 1859775393;
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 15) | (b >>> 17);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
bc = b ^ c;
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
a += (bc ^ d) + blocks[3] + 1859775393;
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
a = (a << 3) | (a >>> 29);
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
d += (bc ^ a) + blocks[11] + 1859775393;
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>bc : Symbol(bc, Decl(complexControlFlowGraph.ts, 3, 21))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
d = (d << 9) | (d >>> 23);
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
da = d ^ a;
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
c += (da ^ b) + blocks[7] + 1859775393;
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
c = (c << 11) | (c >>> 21);
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
b += (da ^ c) + blocks[15] + 1859775393;
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>da : Symbol(da, Decl(complexControlFlowGraph.ts, 3, 29))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
>blocks : Symbol(blocks, Decl(complexControlFlowGraph.ts, 3, 33))
|
||||
|
||||
b = (b << 15) | (b >>> 17);
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
if (this.first) {
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
|
||||
this.h0 = a + 1732584193 << 0;
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
this.h1 = b - 271733879 << 0;
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
this.h2 = c - 1732584194 << 0;
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
this.h3 = d + 271733878 << 0;
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
|
||||
this.first = false;
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
|
||||
} else {
|
||||
this.h0 = this.h0 + a << 0;
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
>a : Symbol(a, Decl(complexControlFlowGraph.ts, 3, 5))
|
||||
|
||||
this.h1 = this.h1 + b << 0;
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
>b : Symbol(b, Decl(complexControlFlowGraph.ts, 3, 8))
|
||||
|
||||
this.h2 = this.h2 + c << 0;
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
>c : Symbol(c, Decl(complexControlFlowGraph.ts, 3, 11))
|
||||
|
||||
this.h3 = this.h3 + d << 0;
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
>this : Symbol(this, Decl(complexControlFlowGraph.ts, 2, 22))
|
||||
>d : Symbol(d, Decl(complexControlFlowGraph.ts, 3, 14))
|
||||
}
|
||||
};
|
||||
|
1915
tests/baselines/reference/complexControlFlowGraph.types
Normal file
1915
tests/baselines/reference/complexControlFlowGraph.types
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,4 +1,4 @@
|
|||
tests/cases/compiler/largeControlFlowGraph.ts(3,1): error TS2563: The containing function or module body is too large for control flow analysis.
|
||||
tests/cases/compiler/largeControlFlowGraph.ts(3,1): error TS2563: The containing function or module body is too complex for control flow analysis.
|
||||
|
||||
|
||||
==== tests/cases/compiler/largeControlFlowGraph.ts (1 errors) ====
|
||||
|
@ -6,7 +6,7 @@ tests/cases/compiler/largeControlFlowGraph.ts(3,1): error TS2563: The containing
|
|||
// we gracefully handle this, possibly by issuing an error.
|
||||
const data = [];
|
||||
~~~~~
|
||||
!!! error TS2563: The containing function or module body is too large for control flow analysis.
|
||||
!!! error TS2563: The containing function or module body is too complex for control flow analysis.
|
||||
data[0] = 0;
|
||||
data[0] = 0;
|
||||
data[0] = 0;
|
||||
|
|
158
tests/cases/compiler/complexControlFlowGraph.ts
Normal file
158
tests/cases/compiler/complexControlFlowGraph.ts
Normal file
|
@ -0,0 +1,158 @@
|
|||
// @strict: true
|
||||
|
||||
// Repro from #29926
|
||||
|
||||
const foo = function (this: any) {
|
||||
var a, b, c, d, ab, bc, cd, da, blocks = this.blocks;
|
||||
|
||||
if (this.first) {
|
||||
a = blocks[0] - 1;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d = ((a & 0xefcdab89) | (~a & 0x98badcfe)) + blocks[1] + 271733878;
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c = ((d & a) | (~d & 0xefcdab89)) + blocks[2] - 1732584194;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b = ((c & d) | (~c & a)) + blocks[3] - 271733879;
|
||||
b = (b << 19) | (b >>> 13);
|
||||
} else {
|
||||
a = this.h0;
|
||||
b = this.h1;
|
||||
c = this.h2;
|
||||
d = this.h3;
|
||||
a += ((b & c) | (~b & d)) + blocks[0];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[1];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[2];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[3];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
}
|
||||
|
||||
a += ((b & c) | (~b & d)) + blocks[4];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[5];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[6];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[7];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
a += ((b & c) | (~b & d)) + blocks[8];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[9];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[10];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[11];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
a += ((b & c) | (~b & d)) + blocks[12];
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += ((a & b) | (~a & c)) + blocks[13];
|
||||
d = (d << 7) | (d >>> 25);
|
||||
c += ((d & a) | (~d & b)) + blocks[14];
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += ((c & d) | (~c & a)) + blocks[15];
|
||||
b = (b << 19) | (b >>> 13);
|
||||
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | (c & d)) + blocks[0] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[4] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[8] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
cd = c & d;
|
||||
b += (cd | (c & a) | da) + blocks[12] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | cd) + blocks[1] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[5] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[9] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
cd = c & d;
|
||||
b += (cd | (c & a) | da) + blocks[13] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | cd) + blocks[2] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[6] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[10] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
cd = c & d;
|
||||
b += (cd | (c & a) | da) + blocks[14] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
bc = b & c;
|
||||
a += (bc | (b & d) | cd) + blocks[3] + 1518500249;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
ab = a & b;
|
||||
d += (ab | (a & c) | bc) + blocks[7] + 1518500249;
|
||||
d = (d << 5) | (d >>> 27);
|
||||
da = d & a;
|
||||
c += (da | (d & b) | ab) + blocks[11] + 1518500249;
|
||||
c = (c << 9) | (c >>> 23);
|
||||
b += ((c & d) | (c & a) | da) + blocks[15] + 1518500249;
|
||||
b = (b << 13) | (b >>> 19);
|
||||
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[0] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[8] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[4] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[12] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[2] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[10] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[6] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[14] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[1] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[9] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[5] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[13] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
bc = b ^ c;
|
||||
a += (bc ^ d) + blocks[3] + 1859775393;
|
||||
a = (a << 3) | (a >>> 29);
|
||||
d += (bc ^ a) + blocks[11] + 1859775393;
|
||||
d = (d << 9) | (d >>> 23);
|
||||
da = d ^ a;
|
||||
c += (da ^ b) + blocks[7] + 1859775393;
|
||||
c = (c << 11) | (c >>> 21);
|
||||
b += (da ^ c) + blocks[15] + 1859775393;
|
||||
b = (b << 15) | (b >>> 17);
|
||||
|
||||
if (this.first) {
|
||||
this.h0 = a + 1732584193 << 0;
|
||||
this.h1 = b - 271733879 << 0;
|
||||
this.h2 = c - 1732584194 << 0;
|
||||
this.h3 = d + 271733878 << 0;
|
||||
this.first = false;
|
||||
} else {
|
||||
this.h0 = this.h0 + a << 0;
|
||||
this.h1 = this.h1 + b << 0;
|
||||
this.h2 = this.h2 + c << 0;
|
||||
this.h3 = this.h3 + d << 0;
|
||||
}
|
||||
};
|
Loading…
Reference in a new issue