当前位置: 首页>>代码示例>>C++>>正文


C++ const_pred_iterator::isCtrl方法代码示例

本文整理汇总了C++中sunit::const_pred_iterator::isCtrl方法的典型用法代码示例。如果您正苦于以下问题:C++ const_pred_iterator::isCtrl方法的具体用法?C++ const_pred_iterator::isCtrl怎么用?C++ const_pred_iterator::isCtrl使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在sunit::const_pred_iterator的用法示例。


在下文中一共展示了const_pred_iterator::isCtrl方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: EmitPhysRegCopy

void ScheduleDAG::EmitPhysRegCopy(SUnit *SU,
                                  DenseMap<SUnit*, unsigned> &VRBaseMap) {
  for (SUnit::const_pred_iterator I = SU->Preds.begin(), E = SU->Preds.end();
       I != E; ++I) {
    if (I->isCtrl()) continue;  // ignore chain preds
    if (I->getSUnit()->CopyDstRC) {
      // Copy to physical register.
      DenseMap<SUnit*, unsigned>::iterator VRI = VRBaseMap.find(I->getSUnit());
      assert(VRI != VRBaseMap.end() && "Node emitted out of order - late");
      // Find the destination physical register.
      unsigned Reg = 0;
      for (SUnit::const_succ_iterator II = SU->Succs.begin(),
             EE = SU->Succs.end(); II != EE; ++II) {
        if (II->getReg()) {
          Reg = II->getReg();
          break;
        }
      }
      bool Success = TII->copyRegToReg(*BB, InsertPos, Reg, VRI->second,
                                       SU->CopyDstRC, SU->CopySrcRC,
                                       DebugLoc());
      (void)Success;
      assert(Success && "copyRegToReg failed!");
    } else {
      // Copy from physical register.
      assert(I->getReg() && "Unknown physical register!");
      unsigned VRBase = MRI.createVirtualRegister(SU->CopyDstRC);
      bool isNew = VRBaseMap.insert(std::make_pair(SU, VRBase)).second;
      isNew = isNew; // Silence compiler warning.
      assert(isNew && "Node emitted out of order - early");
      bool Success = TII->copyRegToReg(*BB, InsertPos, VRBase, I->getReg(),
                                       SU->CopyDstRC, SU->CopySrcRC,
                                       DebugLoc());
      (void)Success;
      assert(Success && "copyRegToReg failed!");
    }
    break;
  }
}
开发者ID:AHelper,项目名称:llvm-z80-target,代码行数:39,代码来源:ScheduleDAGEmit.cpp


注:本文中的sunit::const_pred_iterator::isCtrl方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。