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


C++ BasicBlock::getInstructions方法代码示例

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


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

示例1: checkAllBlocksWithMultiplePredecessorsHavePhi

	void ConsistencyChecker::checkAllBlocksWithMultiplePredecessorsHavePhi() {
		List<BasicBlock*, LIST_GCObjects>* basicBlocks = _functionToCheck->getBasicBlocksInReversePostOrder();
		TessaAssert(basicBlocks != NULL);
		char messageBuffer[64];
		for (uint32_t i = 0; i < basicBlocks->size(); i++) {
			BasicBlock* currentBasicBlock = basicBlocks->get(i);
			
			if (currentBasicBlock->getPredecessors()->size() > 1) {
				List<TessaInstruction*, LIST_GCObjects>* instructions = currentBasicBlock->getInstructions();

				for (uint32_t j = 0; j < instructions->size(); j++) {
					TessaInstruction* instruction = instructions->get(j);
					if (instruction->isParameter()) {
						ParameterInstruction* paramInstruction = (ParameterInstruction*) instruction;
						TessaInstruction* forwardInstruction = paramInstruction->resolve();

						VMPI_snprintf(messageBuffer, sizeof(messageBuffer), "BB %d Param %d does not map to Phi \n", currentBasicBlock->getBasicBlockId(), paramInstruction->getValueId());
						TessaAssertMessage(forwardInstruction->isPhi(), messageBuffer);

						if (!forwardInstruction->isPhi()) {
							printf("%s\n", messageBuffer);
						}
					}
				}
			}
		}
	}
开发者ID:changm,项目名称:tessa,代码行数:27,代码来源:ConsistencyChecker.cpp

示例2: checkAllBlocksHaveOneTerminator

	void ConsistencyChecker::checkAllBlocksHaveOneTerminator() {
		List<BasicBlock*, LIST_GCObjects>* basicBlocks = _functionToCheck->getBasicBlocksInReversePostOrder();
		TessaAssert(basicBlocks != NULL);
		char messageBuffer[64];
		for (uint32_t i = 0; i < basicBlocks->size(); i++) {
			BasicBlock* currentBasicBlock = basicBlocks->get(i);
			List<TessaInstruction*, LIST_GCObjects>* instructions = currentBasicBlock->getInstructions();
			int numberOfTerminators = 0;

			for (uint32_t j = 0; j < instructions->size(); j++) {
				if (instructions->get(j)->isBlockTerminator()) {
					numberOfTerminators++;
				}
			}

			VMPI_snprintf(messageBuffer, sizeof(messageBuffer), "BB %d has %d terminators instruction\n", currentBasicBlock->getBasicBlockId(), numberOfTerminators);
			TessaAssertMessage(numberOfTerminators == 1, messageBuffer);
			if (numberOfTerminators != 1) {
				printf("%s\n", messageBuffer);
			}
		}
	}
开发者ID:changm,项目名称:tessa,代码行数:22,代码来源:ConsistencyChecker.cpp


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