• Home
  • Raw
  • Download

Lines Matching refs:cfg

294 void CFGGenerator::addExpression(CFG& cfg, std::unique_ptr<Expression>* e, bool constantPropagate) {  in addExpression()  argument
305 this->addExpression(cfg, &b->fLeft, constantPropagate); in addExpression()
306 BlockId start = cfg.fCurrent; in addExpression()
307 cfg.newBlock(); in addExpression()
308 this->addExpression(cfg, &b->fRight, constantPropagate); in addExpression()
309 cfg.newBlock(); in addExpression()
310 cfg.addExit(start, cfg.fCurrent); in addExpression()
311 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ in addExpression()
320 this->addExpression(cfg, &b->fRight, constantPropagate); in addExpression()
321 this->addLValue(cfg, &b->fLeft); in addExpression()
322 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ in addExpression()
331 this->addExpression(cfg, &b->fLeft, !Compiler::IsAssignment(b->fOperator)); in addExpression()
332 this->addExpression(cfg, &b->fRight, constantPropagate); in addExpression()
333 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ in addExpression()
345 this->addExpression(cfg, &arg, constantPropagate); in addExpression()
347 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kExpression_Kind, in addExpression()
354 this->addExpression(cfg, &arg, constantPropagate); in addExpression()
356 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kExpression_Kind, in addExpression()
361 this->addExpression(cfg, &((FieldAccess*) e->get())->fBase, constantPropagate); in addExpression()
362 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kExpression_Kind, in addExpression()
366 this->addExpression(cfg, &((IndexExpression*) e->get())->fBase, constantPropagate); in addExpression()
367 this->addExpression(cfg, &((IndexExpression*) e->get())->fIndex, constantPropagate); in addExpression()
368 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kExpression_Kind, in addExpression()
373 this->addExpression(cfg, &p->fOperand, constantPropagate && in addExpression()
376 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kExpression_Kind, in addExpression()
381 this->addExpression(cfg, &((PostfixExpression*) e->get())->fOperand, false); in addExpression()
382 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kExpression_Kind, in addExpression()
386 this->addExpression(cfg, &((Swizzle*) e->get())->fBase, constantPropagate); in addExpression()
387 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kExpression_Kind, in addExpression()
396 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kExpression_Kind, in addExpression()
401 this->addExpression(cfg, &t->fTest, constantPropagate); in addExpression()
402 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kExpression_Kind, in addExpression()
404 BlockId start = cfg.fCurrent; in addExpression()
405 cfg.newBlock(); in addExpression()
406 this->addExpression(cfg, &t->fIfTrue, constantPropagate); in addExpression()
407 BlockId next = cfg.newBlock(); in addExpression()
408 cfg.fCurrent = start; in addExpression()
409 cfg.newBlock(); in addExpression()
410 this->addExpression(cfg, &t->fIfFalse, constantPropagate); in addExpression()
411 cfg.addExit(cfg.fCurrent, next); in addExpression()
412 cfg.fCurrent = next; in addExpression()
424 void CFGGenerator::addLValue(CFG& cfg, std::unique_ptr<Expression>* e) { in addLValue() argument
427 this->addLValue(cfg, &((FieldAccess&) **e).fBase); in addLValue()
430 this->addLValue(cfg, &((IndexExpression&) **e).fBase); in addLValue()
431 this->addExpression(cfg, &((IndexExpression&) **e).fIndex, true); in addLValue()
434 this->addLValue(cfg, &((Swizzle&) **e).fBase); in addLValue()
439 this->addExpression(cfg, &((TernaryExpression&) **e).fTest, true); in addLValue()
443 this->addLValue(cfg, &((TernaryExpression&) **e).fIfTrue); in addLValue()
444 this->addLValue(cfg, &((TernaryExpression&) **e).fIfFalse); in addLValue()
453 void CFGGenerator::addStatement(CFG& cfg, std::unique_ptr<Statement>* s) { in addStatement() argument
457 addStatement(cfg, &child); in addStatement()
462 this->addExpression(cfg, &ifs.fTest, true); in addStatement()
463 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kStatement_Kind, false, in addStatement()
465 BlockId start = cfg.fCurrent; in addStatement()
466 cfg.newBlock(); in addStatement()
467 this->addStatement(cfg, &ifs.fIfTrue); in addStatement()
468 BlockId next = cfg.newBlock(); in addStatement()
470 cfg.fCurrent = start; in addStatement()
471 cfg.newBlock(); in addStatement()
472 this->addStatement(cfg, &ifs.fIfFalse); in addStatement()
473 cfg.addExit(cfg.fCurrent, next); in addStatement()
474 cfg.fCurrent = next; in addStatement()
476 cfg.addExit(start, next); in addStatement()
481 this->addExpression(cfg, &((ExpressionStatement&) **s).fExpression, true); in addStatement()
482 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kStatement_Kind, false, in addStatement()
494 this->addExpression(cfg, &vd.fValue, true); in addStatement()
496 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kStatement_Kind, in addStatement()
499 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kStatement_Kind, false, in addStatement()
504 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kStatement_Kind, false, in addStatement()
506 cfg.fCurrent = cfg.newIsolatedBlock(); in addStatement()
511 this->addExpression(cfg, &r.fExpression, true); in addStatement()
513 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kStatement_Kind, false, in addStatement()
515 cfg.fCurrent = cfg.newIsolatedBlock(); in addStatement()
519 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kStatement_Kind, false, in addStatement()
521 cfg.addExit(cfg.fCurrent, fLoopExits.top()); in addStatement()
522 cfg.fCurrent = cfg.newIsolatedBlock(); in addStatement()
525 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kStatement_Kind, false, in addStatement()
527 cfg.addExit(cfg.fCurrent, fLoopContinues.top()); in addStatement()
528 cfg.fCurrent = cfg.newIsolatedBlock(); in addStatement()
532 BlockId loopStart = cfg.newBlock(); in addStatement()
534 BlockId loopExit = cfg.newIsolatedBlock(); in addStatement()
536 this->addExpression(cfg, &w.fTest, true); in addStatement()
537 BlockId test = cfg.fCurrent; in addStatement()
538 cfg.addExit(test, loopExit); in addStatement()
539 cfg.newBlock(); in addStatement()
540 this->addStatement(cfg, &w.fStatement); in addStatement()
541 cfg.addExit(cfg.fCurrent, loopStart); in addStatement()
544 cfg.fCurrent = loopExit; in addStatement()
549 BlockId loopStart = cfg.newBlock(); in addStatement()
551 BlockId loopExit = cfg.newIsolatedBlock(); in addStatement()
553 this->addStatement(cfg, &d.fStatement); in addStatement()
554 this->addExpression(cfg, &d.fTest, true); in addStatement()
555 cfg.addExit(cfg.fCurrent, loopExit); in addStatement()
556 cfg.addExit(cfg.fCurrent, loopStart); in addStatement()
559 cfg.fCurrent = loopExit; in addStatement()
565 this->addStatement(cfg, &f.fInitializer); in addStatement()
567 BlockId loopStart = cfg.newBlock(); in addStatement()
568 BlockId next = cfg.newIsolatedBlock(); in addStatement()
570 BlockId loopExit = cfg.newIsolatedBlock(); in addStatement()
573 this->addExpression(cfg, &f.fTest, true); in addStatement()
582 cfg.newBlock(); in addStatement()
583 this->addStatement(cfg, &f.fStatement); in addStatement()
584 cfg.addExit(cfg.fCurrent, next); in addStatement()
585 cfg.fCurrent = next; in addStatement()
587 this->addExpression(cfg, &f.fNext, true); in addStatement()
589 cfg.addExit(cfg.fCurrent, loopStart); in addStatement()
590 cfg.addExit(cfg.fCurrent, loopExit); in addStatement()
593 cfg.fCurrent = loopExit; in addStatement()
598 this->addExpression(cfg, &ss.fValue, true); in addStatement()
599 cfg.fBlocks[cfg.fCurrent].fNodes.push_back({ BasicBlock::Node::kStatement_Kind, false, in addStatement()
601 BlockId start = cfg.fCurrent; in addStatement()
602 BlockId switchExit = cfg.newIsolatedBlock(); in addStatement()
605 cfg.newBlock(); in addStatement()
606 cfg.addExit(start, cfg.fCurrent); in addStatement()
610 this->addExpression(cfg, &c->fValue, true); in addStatement()
613 this->addStatement(cfg, &caseStatement); in addStatement()
616 cfg.addExit(cfg.fCurrent, switchExit); in addStatement()
620 cfg.addExit(start, switchExit); in addStatement()
623 cfg.fCurrent = switchExit; in addStatement()