\internal Codegens a single input to a node All of these nodes are garunteed to be impure
| 303 | /// Codegens a single input to a node |
| 304 | /// All of these nodes are garunteed to be impure |
| 305 | void codegenHelper(NodeInstance* node, unsigned execInputID, llvm::BasicBlock* block, |
| 306 | codegenMetadata& data, Result& res) { |
| 307 | boost::dynamic_bitset<> needsCodegen; |
| 308 | std::vector<llvm::BasicBlock*> outputBlocks; |
| 309 | std::tie(needsCodegen, outputBlocks) = |
| 310 | codegenNode(node, nullptr, nullptr, execInputID, block, data, res); |
| 311 | |
| 312 | if (!res) { return; } |
| 313 | |
| 314 | // recurse! |
| 315 | for (auto idx = 0ull; idx < node->outputExecConnections.size(); ++idx) { |
| 316 | auto& output = node->outputExecConnections[idx]; |
| 317 | if (output.first != nullptr && needsCodegen[idx]) { |
| 318 | codegenHelper(output.first, output.second, outputBlocks[idx], data, res); |
| 319 | } |
| 320 | } |
| 321 | } |
| 322 | |
| 323 | } // anonymous namespace |
| 324 |
no test coverage detected