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