mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Merge a392efd887 into sapling-pr-archive-mofeiZ
This commit is contained in:
@@ -7,12 +7,15 @@
|
||||
|
||||
import {CompilerError} from '../CompilerError';
|
||||
import {BlockId, HIRFunction, Identifier, Place} from '../HIR/HIR';
|
||||
import {printHIR, printIdentifier} from '../HIR/PrintHIR';
|
||||
import {
|
||||
eachInstructionLValue,
|
||||
eachInstructionOperand,
|
||||
eachTerminalOperand,
|
||||
} from '../HIR/visitors';
|
||||
|
||||
const DEBUG = true;
|
||||
|
||||
/*
|
||||
* Pass to eliminate redundant phi nodes:
|
||||
* - all operands are the same identifier, ie `x2 = phi(x1, x1, x1)`.
|
||||
@@ -141,6 +144,23 @@ export function eliminateRedundantPhi(
|
||||
* have already propagated forwards since we visit in reverse postorder.
|
||||
*/
|
||||
} while (rewrites.size > size && hasBackEdge);
|
||||
|
||||
if (DEBUG) {
|
||||
for (const [, block] of ir.blocks) {
|
||||
for (const phi of block.phis) {
|
||||
CompilerError.invariant(!rewrites.has(phi.place.identifier), {
|
||||
reason: '[EliminateRedundantPhis]: rewrite not complete',
|
||||
loc: phi.place.loc,
|
||||
});
|
||||
for (const [, operand] of phi.operands) {
|
||||
CompilerError.invariant(!rewrites.has(operand.identifier), {
|
||||
reason: '[EliminateRedundantPhis]: rewrite not complete',
|
||||
loc: phi.place.loc,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function rewritePlace(
|
||||
|
||||
@@ -301,9 +301,6 @@ function enterSSAImpl(
|
||||
entry.preds.add(blockId);
|
||||
builder.defineFunction(loweredFunc);
|
||||
builder.enter(() => {
|
||||
loweredFunc.context = loweredFunc.context.map(p =>
|
||||
builder.getPlace(p),
|
||||
);
|
||||
loweredFunc.params = loweredFunc.params.map(param => {
|
||||
if (param.kind === 'Identifier') {
|
||||
return builder.definePlace(param);
|
||||
|
||||
Reference in New Issue
Block a user