| 1360 | } |
| 1361 | |
| 1362 | llvm::Value* LLVMGenerator::Visitor::GetBufferReference(int idx, BufferType buffer_type, |
| 1363 | FieldPtr field) { |
| 1364 | llvm::IRBuilder<>* builder = ir_builder(); |
| 1365 | |
| 1366 | // Switch to the entry block to create a reference. |
| 1367 | llvm::BasicBlock* saved_block = builder->GetInsertBlock(); |
| 1368 | builder->SetInsertPoint(entry_block_); |
| 1369 | |
| 1370 | llvm::Value* slot_ref = nullptr; |
| 1371 | switch (buffer_type) { |
| 1372 | case kBufferTypeValidity: |
| 1373 | slot_ref = generator_->GetValidityReference(arg_addrs_, idx, field); |
| 1374 | break; |
| 1375 | |
| 1376 | case kBufferTypeData: |
| 1377 | slot_ref = generator_->GetDataReference(arg_addrs_, idx, field); |
| 1378 | break; |
| 1379 | |
| 1380 | case kBufferTypeOffsets: |
| 1381 | slot_ref = generator_->GetOffsetsReference(arg_addrs_, idx, field); |
| 1382 | break; |
| 1383 | } |
| 1384 | |
| 1385 | // Revert to the saved block. |
| 1386 | builder->SetInsertPoint(saved_block); |
| 1387 | return slot_ref; |
| 1388 | } |
| 1389 | |
| 1390 | llvm::Value* LLVMGenerator::Visitor::GetSliceOffset(int idx) { |
| 1391 | return slice_offsets_[idx]; |
nothing calls this directly
no test coverage detected