| 287 | } |
| 288 | |
| 289 | llvm::ConstantStruct* ColumnType::ToIR(LlvmCodeGen* codegen) const { |
| 290 | // ColumnType = { i32, i8, i32, i32, i32, <vector>, <vector>, <vector> } |
| 291 | llvm::StructType* column_type_type = codegen->GetStructType<ColumnType>(); |
| 292 | |
| 293 | DCHECK_EQ(sizeof(type), sizeof(int32_t)); |
| 294 | llvm::Constant* type_field = codegen->GetI32Constant(type); |
| 295 | |
| 296 | DCHECK_EQ(sizeof(len), sizeof(int32_t)); |
| 297 | llvm::Constant* len_field = codegen->GetI32Constant(len); |
| 298 | DCHECK_EQ(sizeof(precision), sizeof(int32_t)); |
| 299 | llvm::Constant* precision_field = codegen->GetI32Constant(precision); |
| 300 | DCHECK_EQ(sizeof(scale), sizeof(int32_t)); |
| 301 | llvm::Constant* scale_field = codegen->GetI32Constant(scale); |
| 302 | |
| 303 | // Create empty 'children', 'field_names' and 'field_ids' vectors |
| 304 | DCHECK(children.empty()) << "Nested types NYI"; |
| 305 | DCHECK(field_names.empty()) << "Nested types NYI"; |
| 306 | DCHECK(field_ids.empty()) << "Nested types NYI"; |
| 307 | llvm::Constant* children_field = |
| 308 | llvm::Constant::getNullValue(column_type_type->getElementType(4)); |
| 309 | llvm::Constant* field_names_field = |
| 310 | llvm::Constant::getNullValue(column_type_type->getElementType(5)); |
| 311 | llvm::Constant* field_ids_field = |
| 312 | llvm::Constant::getNullValue(column_type_type->getElementType(6)); |
| 313 | |
| 314 | DCHECK_EQ(sizeof(is_binary_), sizeof(uint8_t)); |
| 315 | llvm::Constant* is_binary_field = codegen->GetI8Constant(is_binary_); |
| 316 | |
| 317 | llvm::Constant* padding = |
| 318 | llvm::Constant::getNullValue(column_type_type->getElementType(8)); |
| 319 | |
| 320 | return llvm::cast<llvm::ConstantStruct>( |
| 321 | llvm::ConstantStruct::get(column_type_type, type_field, len_field, precision_field, |
| 322 | scale_field, children_field, field_names_field, field_ids_field, |
| 323 | is_binary_field, padding)); |
| 324 | } |
| 325 | |
| 326 | } |
no test coverage detected