From c173381bc4a24b7199b7f9861644beef5b45a88d Mon Sep 17 00:00:00 2001 From: Bas Zalmstra Date: Sat, 20 Jun 2020 12:57:39 +0200 Subject: [PATCH] fix: fixes a lot of llvm assertions --- crates/mun_codegen/Cargo.toml | 1 + crates/mun_codegen/src/code_gen.rs | 15 +++- crates/mun_codegen/src/code_gen/symbols.rs | 18 ++--- crates/mun_codegen/src/db.rs | 13 ++++ crates/mun_codegen/src/ir/file_group.rs | 4 +- crates/mun_codegen/src/ir/type_table.rs | 39 ++++++---- .../mun_codegen__test__arithmetic_op_f32.snap | 2 +- .../mun_codegen__test__arithmetic_op_f64.snap | 2 +- ...mun_codegen__test__arithmetic_op_i128.snap | 2 +- .../mun_codegen__test__arithmetic_op_i16.snap | 2 +- .../mun_codegen__test__arithmetic_op_i32.snap | 2 +- .../mun_codegen__test__arithmetic_op_i64.snap | 2 +- .../mun_codegen__test__arithmetic_op_i8.snap | 2 +- ...mun_codegen__test__arithmetic_op_u128.snap | 2 +- .../mun_codegen__test__arithmetic_op_u16.snap | 2 +- .../mun_codegen__test__arithmetic_op_u32.snap | 2 +- .../mun_codegen__test__arithmetic_op_u64.snap | 2 +- .../mun_codegen__test__arithmetic_op_u8.snap | 2 +- ...mun_codegen__test__assign_bit_op_bool.snap | 2 +- ...mun_codegen__test__assign_bit_op_i128.snap | 2 +- .../mun_codegen__test__assign_bit_op_i16.snap | 2 +- .../mun_codegen__test__assign_bit_op_i32.snap | 2 +- .../mun_codegen__test__assign_bit_op_i64.snap | 2 +- .../mun_codegen__test__assign_bit_op_i8.snap | 2 +- ...mun_codegen__test__assign_bit_op_u128.snap | 2 +- .../mun_codegen__test__assign_bit_op_u16.snap | 2 +- .../mun_codegen__test__assign_bit_op_u32.snap | 2 +- .../mun_codegen__test__assign_bit_op_u64.snap | 2 +- .../mun_codegen__test__assign_bit_op_u8.snap | 2 +- ...n_codegen__test__assign_shift_op_i128.snap | 2 +- ...un_codegen__test__assign_shift_op_i16.snap | 2 +- ...un_codegen__test__assign_shift_op_i32.snap | 2 +- ...un_codegen__test__assign_shift_op_i64.snap | 2 +- ...mun_codegen__test__assign_shift_op_i8.snap | 2 +- ...n_codegen__test__assign_shift_op_u128.snap | 2 +- ...un_codegen__test__assign_shift_op_u16.snap | 2 +- ...un_codegen__test__assign_shift_op_u32.snap | 2 +- ...un_codegen__test__assign_shift_op_u64.snap | 2 +- ...mun_codegen__test__assign_shift_op_u8.snap | 2 +- ...mun_codegen__test__assignment_op_bool.snap | 2 +- .../mun_codegen__test__assignment_op_f32.snap | 2 +- .../mun_codegen__test__assignment_op_f64.snap | 2 +- ...mun_codegen__test__assignment_op_i128.snap | 2 +- .../mun_codegen__test__assignment_op_i16.snap | 2 +- .../mun_codegen__test__assignment_op_i32.snap | 2 +- .../mun_codegen__test__assignment_op_i64.snap | 2 +- .../mun_codegen__test__assignment_op_i8.snap | 2 +- ...n_codegen__test__assignment_op_struct.snap | 20 ++--- ...mun_codegen__test__assignment_op_u128.snap | 2 +- .../mun_codegen__test__assignment_op_u16.snap | 2 +- .../mun_codegen__test__assignment_op_u32.snap | 2 +- .../mun_codegen__test__assignment_op_u64.snap | 2 +- .../mun_codegen__test__assignment_op_u8.snap | 2 +- .../mun_codegen__test__bit_op_bool.snap | 2 +- .../mun_codegen__test__bit_op_i128.snap | 2 +- .../mun_codegen__test__bit_op_i16.snap | 2 +- .../mun_codegen__test__bit_op_i32.snap | 2 +- .../mun_codegen__test__bit_op_i64.snap | 2 +- .../mun_codegen__test__bit_op_i8.snap | 2 +- .../mun_codegen__test__bit_op_u128.snap | 2 +- .../mun_codegen__test__bit_op_u16.snap | 2 +- .../mun_codegen__test__bit_op_u32.snap | 2 +- .../mun_codegen__test__bit_op_u64.snap | 2 +- .../mun_codegen__test__bit_op_u8.snap | 2 +- .../mun_codegen__test__compare_op_bool.snap | 2 +- .../mun_codegen__test__compare_op_f32.snap | 4 +- .../mun_codegen__test__compare_op_f64.snap | 4 +- .../mun_codegen__test__compare_op_i128.snap | 4 +- .../mun_codegen__test__compare_op_i16.snap | 4 +- .../mun_codegen__test__compare_op_i32.snap | 4 +- .../mun_codegen__test__compare_op_i64.snap | 4 +- .../mun_codegen__test__compare_op_i8.snap | 4 +- .../mun_codegen__test__compare_op_u128.snap | 4 +- .../mun_codegen__test__compare_op_u16.snap | 4 +- .../mun_codegen__test__compare_op_u32.snap | 4 +- .../mun_codegen__test__compare_op_u64.snap | 4 +- .../mun_codegen__test__compare_op_u8.snap | 4 +- ...odegen__test__conditional_return_expr.snap | 2 +- .../mun_codegen__test__extern_fn.snap | 2 +- .../mun_codegen__test__fibonacci.snap | 2 +- .../mun_codegen__test__fibonacci_loop.snap | 2 +- .../mun_codegen__test__field_crash.snap | 14 ++-- .../mun_codegen__test__field_expr.snap | 22 +++--- ...mun_codegen__test__function_arguments.snap | 2 +- .../mun_codegen__test__function_calls.snap | 2 +- .../mun_codegen__test__gc_struct.snap | 14 ++-- .../mun_codegen__test__if_statement.snap | 2 +- .../mun_codegen__test__issue_128.snap | 2 +- .../mun_codegen__test__issue_133.snap | 2 +- .../mun_codegen__test__issue_225.snap | 14 ++-- .../mun_codegen__test__issue_228.snap | 2 +- ...mun_codegen__test__issue_228_never_if.snap | 2 +- .../mun_codegen__test__let_statement.snap | 2 +- .../mun_codegen__test__literal_types.snap | 2 +- .../mun_codegen__test__logic_op_bool.snap | 2 +- .../mun_codegen__test__loop_break_expr.snap | 2 +- .../mun_codegen__test__negate_op_f32.snap | 2 +- .../mun_codegen__test__negate_op_f64.snap | 2 +- .../mun_codegen__test__negate_op_i128.snap | 2 +- .../mun_codegen__test__negate_op_i16.snap | 2 +- .../mun_codegen__test__negate_op_i32.snap | 2 +- .../mun_codegen__test__negate_op_i64.snap | 2 +- .../mun_codegen__test__negate_op_i8.snap | 2 +- ...degen__test__nested_private_extern_fn.snap | 2 +- .../mun_codegen__test__nested_private_fn.snap | 2 +- ...en__test__nested_private_recursive_fn.snap | 2 +- ...nested_private_recursive_fn_with_args.snap | 4 +- .../mun_codegen__test__nested_structs.snap | 30 +++---- ...__test__never_conditional_return_expr.snap | 2 +- .../mun_codegen__test__return_expr.snap | 2 +- .../mun_codegen__test__return_type.snap | 2 +- .../mun_codegen__test__shadowing.snap | 2 +- .../mun_codegen__test__shift_op_i128.snap | 2 +- .../mun_codegen__test__shift_op_i16.snap | 2 +- .../mun_codegen__test__shift_op_i32.snap | 2 +- .../mun_codegen__test__shift_op_i64.snap | 2 +- .../mun_codegen__test__shift_op_i8.snap | 2 +- .../mun_codegen__test__shift_op_u128.snap | 2 +- .../mun_codegen__test__shift_op_u16.snap | 2 +- .../mun_codegen__test__shift_op_u32.snap | 2 +- .../mun_codegen__test__shift_op_u64.snap | 2 +- .../mun_codegen__test__shift_op_u8.snap | 2 +- .../mun_codegen__test__struct_test.snap | 26 +++---- .../mun_codegen__test__true_is_true.snap | 2 +- .../mun_codegen__test__update_operators.snap | 2 +- .../mun_codegen__test__update_parameter.snap | 2 +- .../mun_codegen__test__void_return.snap | 2 +- .../mun_codegen__test__while_expr.snap | 2 +- .../src/snapshots/test__issue_225.snap | 75 ------------------ crates/mun_codegen/src/value/array_value.rs | 19 ++++- crates/mun_codegen/src/value/global.rs | 4 +- crates/mun_codegen/src/value/mod.rs | 78 ++++++++++++++++++- crates/mun_codegen/src/value/string.rs | 4 - crates/mun_codegen_macros/src/lib.rs | 13 +++- 134 files changed, 363 insertions(+), 316 deletions(-) delete mode 100644 crates/mun_codegen/src/snapshots/test__issue_225.snap diff --git a/crates/mun_codegen/Cargo.toml b/crates/mun_codegen/Cargo.toml index ebbaf8509..f15dbfd81 100644 --- a/crates/mun_codegen/Cargo.toml +++ b/crates/mun_codegen/Cargo.toml @@ -26,6 +26,7 @@ array-init="0.1.0" tempfile = "3" paste = "0.1.6" parking_lot = "0.10" +by_address = "1.0" [dependencies.inkwell] git = "https://github.com/mun-lang/inkwell" diff --git a/crates/mun_codegen/src/code_gen.rs b/crates/mun_codegen/src/code_gen.rs index 4c959c52a..1fae3fe5d 100644 --- a/crates/mun_codegen/src/code_gen.rs +++ b/crates/mun_codegen/src/code_gen.rs @@ -1,4 +1,5 @@ use crate::code_gen::linker::LinkerError; +use crate::db::StructMapping; use crate::value::{IrTypeContext, IrValueContext}; use crate::IrDatabase; use hir::{FileId, RelativePathBuf}; @@ -10,6 +11,8 @@ use inkwell::{ OptimizationLevel, }; use mun_target::spec; +use parking_lot::RwLock; +use std::collections::HashMap; use std::io::{self, Write}; use std::{ path::{Path, PathBuf}, @@ -152,10 +155,11 @@ impl<'a, D: IrDatabase> ModuleBuilder<'a, D> { .map_err(|e| CodeGenerationError::ModuleLinkerError(e.to_string()))?; let target_data = self.db.target_data(); + let struct_types = self.db.type_to_struct_mapping(); let type_context = IrTypeContext { context: &self.assembly_module.get_context(), target_data: target_data.as_ref(), - struct_types: Default::default(), + struct_types: struct_types.as_ref(), }; let value_context = IrValueContext { @@ -218,3 +222,12 @@ fn optimize_module(module: &Module, optimization_lvl: OptimizationLevel) { pub(crate) fn target_data_query(db: &impl IrDatabase) -> Arc { Arc::new(TargetData::create(&db.target().data_layout)) } + +/// Returns a mapping from struct type to a struct type in the context. This is a query because the +/// value of struct type depends on the target we compile for. +pub(crate) fn type_to_struct_mapping_query( + db: &impl IrDatabase, +) -> by_address::ByAddress> { + let _ = db.target_data(); + by_address::ByAddress(Arc::new(RwLock::new(HashMap::default()))) +} diff --git a/crates/mun_codegen/src/code_gen/symbols.rs b/crates/mun_codegen/src/code_gen/symbols.rs index 5c7fb6cbd..0daf79db1 100644 --- a/crates/mun_codegen/src/code_gen/symbols.rs +++ b/crates/mun_codegen/src/code_gen/symbols.rs @@ -35,9 +35,8 @@ fn gen_prototype_from_function( .params() .iter() .map(|ty| { - TypeTable::get(module, &db.type_info(ty.clone())) + TypeTable::get(module, &db.type_info(ty.clone()), context) .expect("expected a TypeInfo for a prototype argument but it was not found") - .as_value(context) }) .into_const_private_pointer_or_null(format!("fn_sig::<{}>::arg_types", &name), context); @@ -76,9 +75,8 @@ fn gen_prototype_from_dispatch_entry( .arg_types .iter() .map(|type_info| { - TypeTable::get(module, type_info) + TypeTable::get(module, type_info, context) .expect("expected a TypeInfo for a prototype argument but it was not found") - .as_value(context) }) .into_const_private_pointer_or_null( format!("{}_param_types", function.prototype.name), @@ -120,9 +118,8 @@ fn gen_signature_return_type_from_type_info( ) -> Value<*const ir::TypeInfo> { ret_type .map(|info| { - TypeTable::get(context.module, &info) + TypeTable::get(context.module, &info, context) .expect("could not find TypeInfo that should definitely be there") - .as_value(context) }) .unwrap_or_else(|| Value::null(context)) } @@ -152,7 +149,10 @@ fn get_function_definition_array<'a, D: IrDatabase>( let prototype = gen_prototype_from_function(db, context, *f); ir::FunctionDefinition { prototype, - fn_ptr: Value::from_raw(value.as_global_value().as_pointer_value()), + fn_ptr: Value::<*const fn()>::with_cast( + value.as_global_value().as_pointer_value(), + context, + ), } }) .as_value(context) @@ -184,7 +184,7 @@ fn gen_dispatch_table( // dispatch table was created. Because of this we have to lookup the dispatch table // global again. There is however not a `GlobalValue::get_name` method so I just // hardcoded the name here. - Value::from_raw(module.get_global("dispatchTable").unwrap().as_pointer_value())) + Value::<*mut *const fn()>::with_cast(module.get_global("dispatchTable").unwrap().as_pointer_value(), context)) .unwrap_or_else(|| Value::null(context)); ir::DispatchTable { @@ -272,7 +272,7 @@ fn gen_get_info_fn( inkwell::attributes::AttributeLoc::Param(0), context .context - .create_enum_attribute(Attribute::get_named_enum_kind_id("sret"), 1), + .create_enum_attribute(Attribute::get_named_enum_kind_id("sret"), 0), ); } diff --git a/crates/mun_codegen/src/db.rs b/crates/mun_codegen/src/db.rs index 93a2934e2..db41b5dbb 100644 --- a/crates/mun_codegen/src/db.rs +++ b/crates/mun_codegen/src/db.rs @@ -5,13 +5,19 @@ use crate::{ type_info::TypeInfo, CodeGenParams, Context, }; +use by_address::ByAddress; use inkwell::{ targets::TargetData, types::{AnyTypeEnum, StructType}, OptimizationLevel, }; +use parking_lot::RwLock; +use std::any::TypeId; +use std::collections::HashMap; use std::sync::Arc; +pub type StructMapping = RwLock>; + /// The `IrDatabase` enables caching of intermediate in the process of LLVM IR generation. It uses /// [salsa](https://github.com/salsa-rs/salsa) for this purpose. #[salsa::query_group(IrDatabaseStorage)] @@ -28,6 +34,13 @@ pub trait IrDatabase: hir::HirDatabase { #[salsa::invoke(crate::code_gen::target_data_query)] fn target_data(&self) -> Arc; + /// Returns a mapping from type to a struct value. This is essentially a cache value which is + /// a bit strange to store in the database since its mutable. However, multiple queries need + /// to synchronize with this so that is why we store it here nonetheless. Also the mapping + /// should be invalidated if the `target_data` changes. + #[salsa::invoke(crate::code_gen::type_to_struct_mapping_query)] + fn type_to_struct_mapping(&self) -> ByAddress>; + /// Given a type and code generation parameters, return the corresponding IR type. #[salsa::invoke(crate::ir::ty::ir_query)] fn type_ir(&self, ty: hir::Ty, params: CodeGenParams) -> AnyTypeEnum; diff --git a/crates/mun_codegen/src/ir/file_group.rs b/crates/mun_codegen/src/ir/file_group.rs index bc9cb95a9..94196d4fc 100644 --- a/crates/mun_codegen/src/ir/file_group.rs +++ b/crates/mun_codegen/src/ir/file_group.rs @@ -73,10 +73,12 @@ pub(crate) fn ir_query(db: &impl IrDatabase, file_id: hir::FileId) -> Arc Option> { + pub fn get( + module: &Module, + type_info: &TypeInfo, + context: &IrValueContext, + ) -> Option> { module .get_global(&type_info_global_name(type_info)) - .map(|g| unsafe { Global::from_raw(g) }) + .map(|g| Value::<*const ir::TypeInfo>::with_cast(g.as_pointer_value(), context)) } /// Returns the number of types in the `TypeTable`. @@ -175,12 +179,12 @@ impl<'a, 'ctx, 'm, D: IrDatabase> TypeTableBuilder<'a, 'ctx, 'm, D> { fn gen_type_info( &self, - type_info_to_ir: &mut HashMap>, + type_info_to_ir: &mut HashMap>, type_info: &TypeInfo, - ) -> Global { + ) -> Value<*const ir::TypeInfo> { // If there is already an entry, return that. - if let Some(global) = type_info_to_ir.get(type_info) { - return *global; + if let Some(value) = type_info_to_ir.get(type_info) { + return *value; } // Construct the header part of the abi::TypeInfo @@ -209,31 +213,33 @@ impl<'a, 'ctx, 'm, D: IrDatabase> TypeTableBuilder<'a, 'ctx, 'm, D> { // Build the global value for the ir::TypeInfo let type_ir_name = type_info_global_name(type_info); - let global = match type_info.group { - TypeGroup::FundamentalTypes => { - type_info_ir.into_const_private_global(&type_ir_name, self.value_context) - } + let value = match type_info.group { + TypeGroup::FundamentalTypes => type_info_ir + .into_const_private_global(&type_ir_name, self.value_context) + .as_value(self.value_context), TypeGroup::StructTypes(s) => { // In case of a struct the `Global` is actually a - // `Global<(ir::TypeInfo, ir::StructInfo)>`. We mask this value which is unsafe - // but correct from an ABI perspective. + // `Global<(ir::TypeInfo, ir::StructInfo)>`. let struct_info_ir = self.gen_struct_info(type_info_to_ir, s); let compound_type_ir = (type_info_ir, struct_info_ir).as_value(self.value_context); let compound_global = compound_type_ir.into_const_private_global(&type_ir_name, self.value_context); - unsafe { Global::from_raw(compound_global.value) } + Value::<*const ir::TypeInfo>::with_cast( + compound_global.value.as_pointer_value(), + self.value_context, + ) } }; // Insert the value in this case, so we don't recompute and generate multiple values. - type_info_to_ir.insert(type_info.clone(), global); + type_info_to_ir.insert(type_info.clone(), value); - global + value } fn gen_struct_info( &self, - type_info_to_ir: &mut HashMap>, + type_info_to_ir: &mut HashMap>, hir_struct: hir::Struct, ) -> Value { let struct_ir = self.db.struct_ty(hir_struct); @@ -264,7 +270,6 @@ impl<'a, 'ctx, 'm, D: IrDatabase> TypeTableBuilder<'a, 'ctx, 'm, D> { .map(|field| { let field_type_info = self.db.type_info(field.ty(self.db)); self.gen_type_info(type_info_to_ir, &field_type_info) - .as_value(self.value_context) }) .into_const_private_pointer_or_null( format!("struct_info::<{}>::field_types", name), diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_f32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_f32.snap index 97d4c9a0b..c4538bcbc 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_f32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_f32.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_f64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_f64.snap index c6b90daef..47a2dcda7 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_f64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_f64.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i128.snap index b58a0e4af..28bd7ba2b 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i128.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::i128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i16.snap index e7b20b7e3..497eefa10 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i16.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i32.snap index 461e3c7c9..26a03b38c 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i32.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i64.snap index 6dacdbc83..327f2fff6 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i64.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i8.snap index 698f85a1a..5d8a3319f 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_i8.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::i8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u128.snap index 8bd60b7c4..1323e7570 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u128.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::u128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u16.snap index 8ffe59c1f..ad49b8ff9 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u16.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u32.snap index 474c8cba3..fdec67d0d 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u32.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u64.snap index 62b015249..74e152f2c 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u64.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u8.snap index 0da88e014..f4bf1dfab 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__arithmetic_op_u8.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::u8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_bool.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_bool.snap index 69ed6cc2e..9c552c983 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_bool.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_bool.snap @@ -36,6 +36,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i128.snap index f3372122f..8656a43d1 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i128.snap @@ -36,6 +36,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::i128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i16.snap index dcb497344..2b55793c6 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i16.snap @@ -36,6 +36,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i32.snap index eca27946f..4f35894c2 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i32.snap @@ -36,6 +36,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i64.snap index cd1c14e91..c45fbb759 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i64.snap @@ -36,6 +36,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i8.snap index c5974dede..700f38313 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_i8.snap @@ -36,6 +36,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::i8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u128.snap index f41fd8ae2..ac5d8bf00 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u128.snap @@ -36,6 +36,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::u128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u16.snap index 0a3915f09..621ba27d4 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u16.snap @@ -36,6 +36,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u32.snap index 230b4e72a..ad4e2d6f1 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u32.snap @@ -36,6 +36,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u64.snap index f0b25e61b..5e140e16f 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u64.snap @@ -36,6 +36,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u8.snap index 222c2a433..fbf3633cd 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_bit_op_u8.snap @@ -36,6 +36,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::u8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i128.snap index 9628f538f..703a087cf 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i128.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::i128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i16.snap index 4570b9e11..8394d8fd5 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i16.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i32.snap index 9d0a5b767..e203b9f70 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i32.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i64.snap index 64c4209e5..3a33cd219 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i64.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i8.snap index 12cba77fc..ef32cf1e6 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_i8.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::i8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u128.snap index ae356f084..725b24ecd 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u128.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::u128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u16.snap index da1de4609..59966df32 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u16.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u32.snap index 118001e28..92500fa54 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u32.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u64.snap index 13cff008e..6fcfa777a 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u64.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u8.snap index 6bf87f629..e477af0a6 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assign_shift_op_u8.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::u8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_bool.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_bool.snap index 5b4ff5a54..b1791cb84 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_bool.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_bool.snap @@ -23,6 +23,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_f32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_f32.snap index 36dd1f755..e31671799 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_f32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_f32.snap @@ -53,6 +53,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_f64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_f64.snap index 048889a52..1775b0e93 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_f64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_f64.snap @@ -53,6 +53,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i128.snap index 9aa9651d4..f63ca4064 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i128.snap @@ -53,6 +53,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::i128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i16.snap index 8a8e5b7d3..bd9549915 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i16.snap @@ -53,6 +53,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i32.snap index a9ad895cc..f91933ba7 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i32.snap @@ -53,6 +53,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i64.snap index 04128bff1..658bad811 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i64.snap @@ -53,6 +53,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i8.snap index 3d5f7559b..87086578c 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_i8.snap @@ -53,6 +53,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::i8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_struct.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_struct.snap index f9802ed7a..9bf451647 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_struct.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_struct.snap @@ -56,29 +56,29 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable zeroinitializer @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @"type_info::::name" = private unnamed_addr constant [6 x i8] c"Value\00" @"struct_info::::field_names.0" = private unnamed_addr constant [2 x i8] c"0\00" @"struct_info::::field_names.1" = private unnamed_addr constant [2 x i8] c"1\00" -@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* @"struct_info::::field_names.0", i8* @"struct_info::::field_names.1"] +@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.0", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.1", i32 0, i32 0)] @"struct_info::::field_types" = private unnamed_addr constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] @"struct_info::::field_offsets" = private unnamed_addr constant [2 x i16] [i16 0, i16 4] -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"(3\1C%q\83\13+L\A6Q\F7\1DX\A6\9B", [6 x i8]* @"type_info::::name", i32 64, i8 4, i8 1 }, %struct.MunStructInfo { [2 x i8*]* @"struct_info::::field_names", [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [2 x i16]* @"struct_info::::field_offsets", i16 2, i8 1 } } +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"(3\1C%q\83\13+L\A6Q\F7\1DX\A6\9B", i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 4, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([2 x i8*], [2 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([2 x %struct.MunTypeInfo*], [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([2 x i16], [2 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 2, i8 1 } } @"type_info::::name" = private unnamed_addr constant [5 x i8] c"Heap\00" @"struct_info::::field_names.0" = private unnamed_addr constant [2 x i8] c"0\00" @"struct_info::::field_names.1" = private unnamed_addr constant [2 x i8] c"1\00" -@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* @"struct_info::::field_names.0", i8* @"struct_info::::field_names.1"] +@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.0", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.1", i32 0, i32 0)] @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"struct_info::::field_types" = private unnamed_addr constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] @"struct_info::::field_offsets" = private unnamed_addr constant [2 x i16] [i16 0, i16 8] -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"1\1CC\F80{\17\AFq\94\89\FB4\AC\A8\F3", [5 x i8]* @"type_info::::name", i32 128, i8 8, i8 1 }, %struct.MunStructInfo { [2 x i8*]* @"struct_info::::field_names", [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [2 x i16]* @"struct_info::::field_offsets", i16 2, i8 0 } } +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"1\1CC\F80{\17\AFq\94\89\FB4\AC\A8\F3", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([2 x i8*], [2 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([2 x %struct.MunTypeInfo*], [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([2 x i16], [2 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 2, i8 0 } } @"type_info::<*const TypeInfo>::name" = private unnamed_addr constant [16 x i8] c"*const TypeInfo\00" -@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::<*const *mut core::void>::name" = private unnamed_addr constant [23 x i8] c"*const *mut core::void\00" -@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::<*mut core::void>::name" = private unnamed_addr constant [16 x i8] c"*mut core::void\00" -@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", [16 x i8]* @"type_info::<*mut core::void>::name", i32 64, i8 8, i8 0 } -@global_type_table = constant [7 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>"] +@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } +@global_type_table = constant [7 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>"] @allocatorHandle = unnamed_addr global i8* null diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u128.snap index f333bf1c1..6a1e16892 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u128.snap @@ -53,6 +53,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::u128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u16.snap index 8bacf4dff..eeb718026 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u16.snap @@ -53,6 +53,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u32.snap index 4be7c38ec..e5c79a1db 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u32.snap @@ -53,6 +53,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u64.snap index 95ae29ee7..e364ecf54 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u64.snap @@ -53,6 +53,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u8.snap index eaf1969ba..7a9c668e5 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__assignment_op_u8.snap @@ -53,6 +53,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::u8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_bool.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_bool.snap index 7892e1668..657ec8dd3 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_bool.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_bool.snap @@ -42,6 +42,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i128.snap index 164207c0c..a2aabe411 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i128.snap @@ -42,6 +42,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::i128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i16.snap index 302761196..ac1fceab3 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i16.snap @@ -42,6 +42,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i32.snap index 816215819..b1f2be5b8 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i32.snap @@ -42,6 +42,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i64.snap index fa207f8c8..6aa89ed43 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i64.snap @@ -42,6 +42,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i8.snap index d3df0c1ce..1b998a120 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_i8.snap @@ -42,6 +42,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::i8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u128.snap index 094769110..2fb9df4e0 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u128.snap @@ -42,6 +42,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::u128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u16.snap index 0e18501ee..6bd724ef2 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u16.snap @@ -42,6 +42,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u32.snap index c17d27fc1..502bdf3c9 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u32.snap @@ -42,6 +42,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u64.snap index cfee0f926..941853d66 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u64.snap @@ -42,6 +42,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u8.snap index c1b0fff63..4ec4f10ee 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__bit_op_u8.snap @@ -42,6 +42,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::u8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_bool.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_bool.snap index 5aec586a4..cc2e04f3f 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_bool.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_bool.snap @@ -54,6 +54,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_f32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_f32.snap index 9d6ab22df..7b6bc708a 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_f32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_f32.snap @@ -54,8 +54,8 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_f64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_f64.snap index 6424aa9b4..8dc39af4d 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_f64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_f64.snap @@ -54,8 +54,8 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i128.snap index c45e714c8..b4c77e1fa 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i128.snap @@ -54,8 +54,8 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::i128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i16.snap index 3a10992c3..50becc604 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i16.snap @@ -54,8 +54,8 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i32.snap index 383755874..6555c7b66 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i32.snap @@ -54,8 +54,8 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i64.snap index 42225459b..f8dfa49d2 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i64.snap @@ -54,8 +54,8 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i8.snap index 30f82c933..a15e4cf47 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_i8.snap @@ -54,8 +54,8 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::i8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u128.snap index 98fbdb93b..578be6fee 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u128.snap @@ -54,8 +54,8 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::u128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u16.snap index 874b070a6..a59c86b72 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u16.snap @@ -54,8 +54,8 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u32.snap index cafbe352a..0e56e4e97 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u32.snap @@ -54,8 +54,8 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u64.snap index e7377b87d..61f60370d 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u64.snap @@ -54,8 +54,8 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u8.snap index c02a71557..ebd94f5dc 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__compare_op_u8.snap @@ -54,8 +54,8 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::u8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__conditional_return_expr.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__conditional_return_expr.snap index 57fd82bac..be231216c 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__conditional_return_expr.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__conditional_return_expr.snap @@ -31,6 +31,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__extern_fn.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__extern_fn.snap index 876bcb58d..7e46dc95e 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__extern_fn.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__extern_fn.snap @@ -29,6 +29,6 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable zeroinitializer @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__fibonacci.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__fibonacci.snap index efb0b5f36..1685aa56b 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__fibonacci.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__fibonacci.snap @@ -42,7 +42,7 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable { i32 (i32)* @fibonacci } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] declare i32 @fibonacci(i32) diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__fibonacci_loop.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__fibonacci_loop.snap index 8cdf42e00..0242f4152 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__fibonacci_loop.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__fibonacci_loop.snap @@ -38,6 +38,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__field_crash.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__field_crash.snap index 681965463..c810d0908 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__field_crash.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__field_crash.snap @@ -49,19 +49,19 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable zeroinitializer @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @"type_info::::name" = private unnamed_addr constant [4 x i8] c"Foo\00" @"struct_info::::field_names.0" = private unnamed_addr constant [2 x i8] c"a\00" -@"struct_info::::field_names" = private unnamed_addr constant [1 x i8*] [i8* @"struct_info::::field_names.0"] +@"struct_info::::field_names" = private unnamed_addr constant [1 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.0", i32 0, i32 0)] @"struct_info::::field_types" = private unnamed_addr constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] @"struct_info::::field_offsets" = private unnamed_addr constant [1 x i16] zeroinitializer -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"8\AD\C9\D9Y\D2\AA::name", i32 32, i8 4, i8 1 }, %struct.MunStructInfo { [1 x i8*]* @"struct_info::::field_names", [1 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [1 x i16]* @"struct_info::::field_offsets", i16 1, i8 0 } } +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"8\AD\C9\D9Y\D2\AA::name", i32 0, i32 0), i32 32, i8 4, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([1 x i8*], [1 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([1 x %struct.MunTypeInfo*], [1 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([1 x i16], [1 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 1, i8 0 } } @"type_info::<*const TypeInfo>::name" = private unnamed_addr constant [16 x i8] c"*const TypeInfo\00" -@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::<*const *mut core::void>::name" = private unnamed_addr constant [23 x i8] c"*const *mut core::void\00" -@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::<*mut core::void>::name" = private unnamed_addr constant [16 x i8] c"*mut core::void\00" -@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", [16 x i8]* @"type_info::<*mut core::void>::name", i32 64, i8 8, i8 0 } -@global_type_table = constant [5 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>"] +@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } +@global_type_table = constant [5 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>"] @allocatorHandle = unnamed_addr global i8* null diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__field_expr.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__field_expr.snap index 7efe52ed9..be26013b8 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__field_expr.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__field_expr.snap @@ -65,29 +65,29 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable { i8** (i8*, i8*)* null, i32 (%Foo)* @foo_a, %Foo (%Bar)* @bar_1 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @"type_info::::name" = private unnamed_addr constant [4 x i8] c"Foo\00" @"struct_info::::field_names.0" = private unnamed_addr constant [2 x i8] c"a\00" -@"struct_info::::field_names" = private unnamed_addr constant [1 x i8*] [i8* @"struct_info::::field_names.0"] +@"struct_info::::field_names" = private unnamed_addr constant [1 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.0", i32 0, i32 0)] @"struct_info::::field_types" = private unnamed_addr constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] @"struct_info::::field_offsets" = private unnamed_addr constant [1 x i16] zeroinitializer -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"8\AD\C9\D9Y\D2\AA::name", i32 32, i8 4, i8 1 }, %struct.MunStructInfo { [1 x i8*]* @"struct_info::::field_names", [1 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [1 x i16]* @"struct_info::::field_offsets", i16 1, i8 1 } } +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"8\AD\C9\D9Y\D2\AA::name", i32 0, i32 0), i32 32, i8 4, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([1 x i8*], [1 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([1 x %struct.MunTypeInfo*], [1 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([1 x i16], [1 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 1, i8 1 } } @"type_info::<*const TypeInfo>::name" = private unnamed_addr constant [16 x i8] c"*const TypeInfo\00" -@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::<*const *mut core::void>::name" = private unnamed_addr constant [23 x i8] c"*const *mut core::void\00" -@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::<*mut core::void>::name" = private unnamed_addr constant [16 x i8] c"*mut core::void\00" -@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", [16 x i8]* @"type_info::<*mut core::void>::name", i32 64, i8 8, i8 0 } +@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::::name" = private unnamed_addr constant [4 x i8] c"Bar\00" @"struct_info::::field_names.0" = private unnamed_addr constant [2 x i8] c"0\00" @"struct_info::::field_names.1" = private unnamed_addr constant [2 x i8] c"1\00" -@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* @"struct_info::::field_names.0", i8* @"struct_info::::field_names.1"] -@"struct_info::::field_types" = private unnamed_addr constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] +@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.0", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.1", i32 0, i32 0)] +@"struct_info::::field_types" = private unnamed_addr constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0)] @"struct_info::::field_offsets" = private unnamed_addr constant [2 x i16] [i16 0, i16 8] -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"\FC8#Lvd)F\B1Q\06\8B\02pl\10", [4 x i8]* @"type_info::::name", i32 128, i8 8, i8 1 }, %struct.MunStructInfo { [2 x i8*]* @"struct_info::::field_names", [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [2 x i16]* @"struct_info::::field_offsets", i16 2, i8 1 } } -@global_type_table = constant [7 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>", %struct.MunTypeInfo* @"type_info::"] +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"\FC8#Lvd)F\B1Q\06\8B\02pl\10", i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([2 x i8*], [2 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([2 x %struct.MunTypeInfo*], [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([2 x i16], [2 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 2, i8 1 } } +@global_type_table = constant [7 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>", %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0)] @allocatorHandle = unnamed_addr global i8* null declare i32 @foo_a(%Foo) diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__function_arguments.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__function_arguments.snap index 5a5dcd00a..bab47886b 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__function_arguments.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__function_arguments.snap @@ -23,6 +23,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__function_calls.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__function_calls.snap index 3544e5bba..88233c1bc 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__function_calls.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__function_calls.snap @@ -46,7 +46,7 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable { i32 (i32, i32)* @add, i32 (i32, i32)* @add_impl } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] declare i32 @add(i32, i32) diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__gc_struct.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__gc_struct.snap index dd3af3587..bb99065ea 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__gc_struct.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__gc_struct.snap @@ -54,18 +54,18 @@ source_filename = "group_name" @"type_info::::name" = private unnamed_addr constant [4 x i8] c"Foo\00" @"struct_info::::field_names.0" = private unnamed_addr constant [2 x i8] c"a\00" @"struct_info::::field_names.1" = private unnamed_addr constant [2 x i8] c"b\00" -@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* @"struct_info::::field_names.0", i8* @"struct_info::::field_names.1"] +@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.0", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.1", i32 0, i32 0)] @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @"struct_info::::field_types" = private unnamed_addr constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] @"struct_info::::field_offsets" = private unnamed_addr constant [2 x i16] [i16 0, i16 4] -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"\03\FC\D1_\DB\DB\0AJ1r,\F0m\CBQ\D0", [4 x i8]* @"type_info::::name", i32 64, i8 4, i8 1 }, %struct.MunStructInfo { [2 x i8*]* @"struct_info::::field_names", [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [2 x i16]* @"struct_info::::field_offsets", i16 2, i8 0 } } +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"\03\FC\D1_\DB\DB\0AJ1r,\F0m\CBQ\D0", i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 4, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([2 x i8*], [2 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([2 x %struct.MunTypeInfo*], [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([2 x i16], [2 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 2, i8 0 } } @"type_info::<*const TypeInfo>::name" = private unnamed_addr constant [16 x i8] c"*const TypeInfo\00" -@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::<*const *mut core::void>::name" = private unnamed_addr constant [23 x i8] c"*const *mut core::void\00" -@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::<*mut core::void>::name" = private unnamed_addr constant [16 x i8] c"*mut core::void\00" -@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", [16 x i8]* @"type_info::<*mut core::void>::name", i32 64, i8 8, i8 0 } -@global_type_table = constant [5 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>"] +@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } +@global_type_table = constant [5 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>"] @allocatorHandle = unnamed_addr global i8* null diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__if_statement.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__if_statement.snap index f2c4314aa..129e7d4da 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__if_statement.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__if_statement.snap @@ -39,6 +39,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_128.snap index 7c60bf969..2de7b8f7d 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_128.snap @@ -35,6 +35,6 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable zeroinitializer @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_133.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_133.snap index 9c25aed53..48ac12b30 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_133.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_133.snap @@ -35,7 +35,7 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable { i32 (i32)* @do_the_things } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] declare i32 @do_the_things(i32) diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_225.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_225.snap index 074a3115e..827bb7853 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_225.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_225.snap @@ -57,19 +57,19 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable zeroinitializer @"type_info::<*const TypeInfo>::name" = private unnamed_addr constant [16 x i8] c"*const TypeInfo\00" -@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::::name" = private unnamed_addr constant [4 x i8] c"Num\00" @"struct_info::::field_names.0" = private unnamed_addr constant [6 x i8] c"value\00" -@"struct_info::::field_names" = private unnamed_addr constant [1 x i8*] [i8* @"struct_info::::field_names.0"] +@"struct_info::::field_names" = private unnamed_addr constant [1 x i8*] [i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"struct_info::::field_names.0", i32 0, i32 0)] @"struct_info::::field_types" = private unnamed_addr constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] @"struct_info::::field_offsets" = private unnamed_addr constant [1 x i16] zeroinitializer -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"\A92\E2p\B0\98\B2\C4\0C\A2\F5=x\904\00", [4 x i8]* @"type_info::::name", i32 64, i8 8, i8 1 }, %struct.MunStructInfo { [1 x i8*]* @"struct_info::::field_names", [1 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [1 x i16]* @"struct_info::::field_offsets", i16 1, i8 0 } } +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"\A92\E2p\B0\98\B2\C4\0C\A2\F5=x\904\00", i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([1 x i8*], [1 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([1 x %struct.MunTypeInfo*], [1 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([1 x i16], [1 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 1, i8 0 } } @"type_info::<*const *mut core::void>::name" = private unnamed_addr constant [23 x i8] c"*const *mut core::void\00" -@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::<*mut core::void>::name" = private unnamed_addr constant [16 x i8] c"*mut core::void\00" -@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", [16 x i8]* @"type_info::<*mut core::void>::name", i32 64, i8 8, i8 0 } -@global_type_table = constant [5 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>"] +@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } +@global_type_table = constant [5 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>"] @allocatorHandle = unnamed_addr global i8* null diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_228.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_228.snap index 9d16113d9..58af2951a 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_228.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_228.snap @@ -33,6 +33,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_228_never_if.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_228_never_if.snap index 0b8985224..b42857884 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_228_never_if.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__issue_228_never_if.snap @@ -32,6 +32,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__let_statement.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__let_statement.snap index 352858819..9d113450b 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__let_statement.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__let_statement.snap @@ -24,6 +24,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__literal_types.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__literal_types.snap index 0ff8e6f8a..4d6a148ac 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__literal_types.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__literal_types.snap @@ -64,6 +64,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__logic_op_bool.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__logic_op_bool.snap index 00327ee5d..37f21dca4 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__logic_op_bool.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__logic_op_bool.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__loop_break_expr.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__loop_break_expr.snap index 243180460..efd33a1ac 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__loop_break_expr.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__loop_break_expr.snap @@ -40,6 +40,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_f32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_f32.snap index fdfaeb79e..f3995f57e 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_f32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_f32.snap @@ -24,6 +24,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_f64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_f64.snap index f8f0adab2..f6bd5054d 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_f64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_f64.snap @@ -24,6 +24,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i128.snap index d1fb0bbaa..b784587d6 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i128.snap @@ -24,6 +24,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::i128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i16.snap index 6fa10ebac..d12d97936 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i16.snap @@ -24,6 +24,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i32.snap index 4b829d5e0..606963f8f 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i32.snap @@ -24,6 +24,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i64.snap index 5620f7c7d..2da06017c 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i64.snap @@ -24,6 +24,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i8.snap index 712f07648..389103f7b 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__negate_op_i8.snap @@ -24,6 +24,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::i8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_extern_fn.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_extern_fn.snap index 7b04200e4..304fff41b 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_extern_fn.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_extern_fn.snap @@ -36,7 +36,7 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable { float ()* @private_fn, float ()* null } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] declare float @private_fn() diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_fn.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_fn.snap index b4ef86ae1..be1eb5f32 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_fn.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_fn.snap @@ -41,7 +41,7 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable { i32 ()* @private_fn, i32 ()* @nested_private_fn } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] declare i32 @private_fn() diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_recursive_fn.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_recursive_fn.snap index 58a777e5d..edd594fb3 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_recursive_fn.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_recursive_fn.snap @@ -36,7 +36,7 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable { float ()* @private_fn } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] declare float @private_fn() diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_recursive_fn_with_args.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_recursive_fn_with_args.snap index faed38a0c..36fd5fdcf 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_recursive_fn_with_args.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_private_recursive_fn_with_args.snap @@ -38,9 +38,9 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable { float (i32)* @private_fn, i32 ()* null } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] declare float @private_fn(i32) diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_structs.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_structs.snap index 04edb370f..5d2c9103e 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_structs.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__nested_structs.snap @@ -116,39 +116,39 @@ source_filename = "group_name" @"type_info::::name" = private unnamed_addr constant [10 x i8] c"GcWrapper\00" @"struct_info::::field_names.0" = private unnamed_addr constant [2 x i8] c"0\00" @"struct_info::::field_names.1" = private unnamed_addr constant [2 x i8] c"1\00" -@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* @"struct_info::::field_names.0", i8* @"struct_info::::field_names.1"] +@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.0", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.1", i32 0, i32 0)] @"type_info::::name" = private unnamed_addr constant [9 x i8] c"GcStruct\00" @"struct_info::::field_names.0" = private unnamed_addr constant [2 x i8] c"0\00" @"struct_info::::field_names.1" = private unnamed_addr constant [2 x i8] c"1\00" -@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* @"struct_info::::field_names.0", i8* @"struct_info::::field_names.1"] +@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.0", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.1", i32 0, i32 0)] @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"P\19b7\A8k\F2\81P\FB\83\F5P\B0\82!", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @"struct_info::::field_types" = private unnamed_addr constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] @"struct_info::::field_offsets" = private unnamed_addr constant [2 x i16] [i16 0, i16 4] -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"\B9)lg\01\95k@E\B4(\CB\CAGX\E1", [9 x i8]* @"type_info::::name", i32 64, i8 4, i8 1 }, %struct.MunStructInfo { [2 x i8*]* @"struct_info::::field_names", [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [2 x i16]* @"struct_info::::field_offsets", i16 2, i8 0 } } +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"\B9)lg\01\95k@E\B4(\CB\CAGX\E1", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 4, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([2 x i8*], [2 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([2 x %struct.MunTypeInfo*], [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([2 x i16], [2 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 2, i8 0 } } @"type_info::::name" = private unnamed_addr constant [12 x i8] c"ValueStruct\00" @"struct_info::::field_names.0" = private unnamed_addr constant [2 x i8] c"0\00" @"struct_info::::field_names.1" = private unnamed_addr constant [2 x i8] c"1\00" -@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* @"struct_info::::field_names.0", i8* @"struct_info::::field_names.1"] +@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.0", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.1", i32 0, i32 0)] @"struct_info::::field_types" = private unnamed_addr constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] @"struct_info::::field_offsets" = private unnamed_addr constant [2 x i16] [i16 0, i16 4] -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"U0{\87\5C\04Q/\95!$\A2\F1\A9\F9W", [12 x i8]* @"type_info::::name", i32 64, i8 4, i8 1 }, %struct.MunStructInfo { [2 x i8*]* @"struct_info::::field_names", [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [2 x i16]* @"struct_info::::field_offsets", i16 2, i8 1 } } -@"struct_info::::field_types" = private unnamed_addr constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"U0{\87\5C\04Q/\95!$\A2\F1\A9\F9W", i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 4, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([2 x i8*], [2 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([2 x %struct.MunTypeInfo*], [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([2 x i16], [2 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 2, i8 1 } } +@"struct_info::::field_types" = private unnamed_addr constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0)] @"struct_info::::field_offsets" = private unnamed_addr constant [2 x i16] [i16 0, i16 8] -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"!\14\93\A7H1?90\B7\EA\DB0\82\A0\C7", [10 x i8]* @"type_info::::name", i32 128, i8 8, i8 1 }, %struct.MunStructInfo { [2 x i8*]* @"struct_info::::field_names", [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [2 x i16]* @"struct_info::::field_offsets", i16 2, i8 0 } } +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"!\14\93\A7H1?90\B7\EA\DB0\82\A0\C7", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([2 x i8*], [2 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([2 x %struct.MunTypeInfo*], [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([2 x i16], [2 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 2, i8 0 } } @"type_info::<*const TypeInfo>::name" = private unnamed_addr constant [16 x i8] c"*const TypeInfo\00" -@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::::name" = private unnamed_addr constant [13 x i8] c"ValueWrapper\00" @"struct_info::::field_names.0" = private unnamed_addr constant [2 x i8] c"0\00" @"struct_info::::field_names.1" = private unnamed_addr constant [2 x i8] c"1\00" -@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* @"struct_info::::field_names.0", i8* @"struct_info::::field_names.1"] -@"struct_info::::field_types" = private unnamed_addr constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] +@"struct_info::::field_names" = private unnamed_addr constant [2 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.0", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.1", i32 0, i32 0)] +@"struct_info::::field_types" = private unnamed_addr constant [2 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0)] @"struct_info::::field_offsets" = private unnamed_addr constant [2 x i16] [i16 0, i16 8] -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"@j\D8\CD~-\12\87|A\E8\DBp\EC}\AA", [13 x i8]* @"type_info::::name", i32 128, i8 8, i8 1 }, %struct.MunStructInfo { [2 x i8*]* @"struct_info::::field_names", [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [2 x i16]* @"struct_info::::field_offsets", i16 2, i8 1 } } +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"@j\D8\CD~-\12\87|A\E8\DBp\EC}\AA", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([2 x i8*], [2 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([2 x %struct.MunTypeInfo*], [2 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([2 x i16], [2 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 2, i8 1 } } @"type_info::<*const *mut core::void>::name" = private unnamed_addr constant [23 x i8] c"*const *mut core::void\00" -@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::<*mut core::void>::name" = private unnamed_addr constant [16 x i8] c"*mut core::void\00" -@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", [16 x i8]* @"type_info::<*mut core::void>::name", i32 64, i8 8, i8 0 } -@global_type_table = constant [8 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>"] +@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } +@global_type_table = constant [8 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>"] @allocatorHandle = unnamed_addr global i8* null diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__never_conditional_return_expr.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__never_conditional_return_expr.snap index f47239f06..af09ad422 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__never_conditional_return_expr.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__never_conditional_return_expr.snap @@ -31,6 +31,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__return_expr.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__return_expr.snap index ee10b5e74..343ee610b 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__return_expr.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__return_expr.snap @@ -23,6 +23,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__return_type.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__return_type.snap index 4a5463d27..72da60f3f 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__return_type.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__return_type.snap @@ -23,6 +23,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__shadowing.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__shadowing.snap index c19e3e142..623b87171 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__shadowing.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__shadowing.snap @@ -33,6 +33,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i128.snap index eea28f7c2..f0a1aa0de 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i128.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::i128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\BDkp\09RRM\EBc\02\A0\DB47\A7\E3", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i16.snap index da1b36bf4..98f3b2e4c 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i16.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\05\CD|\F8Bv\D8\B1\E8\8B\8C\D8\8D\B5\89\B0", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i32.snap index 8decc4d03..1cf64d412 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i32.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i64.snap index 3d2c08248..7e1e71d5c 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i64.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i8.snap index 28bbb2eab..48a1c27de 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_i8.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::i8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\EF\C4\B1Z\E7\12\B1\91q\F1\0B\80U\FC\A6\0F", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u128.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u128.snap index 985f17aa9..774acd6da 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u128.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u128.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::u128\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", [11 x i8]* @"type_info::::name", i32 128, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\E67\1BU\E9k\95\93d\14}\1C\96S\95\F0", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 128, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u16.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u16.snap index eb0a9e649..bbaf4dce4 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u16.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u16.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u16\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", [10 x i8]* @"type_info::::name", i32 16, i8 2, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"0\01\BC\BBK\E0\F2\7F&l\01\CD|q\F2\B3", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 16, i8 2, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u32.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u32.snap index a629c77f9..2be90eaf8 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u32.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u32.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"daz5d\A6\BE\88\81=&Y\A1+\C6\1D", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u64.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u64.snap index 543c81c4e..7ec0de9a0 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u64.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u64.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::u64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A6\E7g \D1\8B\1Aq`\1F\1E\07\BB5@q", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u8.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u8.snap index 1315e67db..fdb25d3ec 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u8.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__shift_op_u8.snap @@ -30,6 +30,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [9 x i8] c"core::u8\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", [9 x i8]* @"type_info::::name", i32 8, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\A0y\A7S\B6(n\F7f&H\E1\F9\AD\04>", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"type_info::::name", i32 0, i32 0), i32 8, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__struct_test.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__struct_test.snap index 7e2796973..c9cfa86af 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__struct_test.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__struct_test.snap @@ -44,34 +44,34 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable zeroinitializer @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @"type_info::::name" = private unnamed_addr constant [4 x i8] c"Foo\00" @"struct_info::::field_names.0" = private unnamed_addr constant [2 x i8] c"a\00" -@"struct_info::::field_names" = private unnamed_addr constant [1 x i8*] [i8* @"struct_info::::field_names.0"] +@"struct_info::::field_names" = private unnamed_addr constant [1 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.0", i32 0, i32 0)] @"struct_info::::field_types" = private unnamed_addr constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] @"struct_info::::field_offsets" = private unnamed_addr constant [1 x i16] zeroinitializer -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"8\AD\C9\D9Y\D2\AA::name", i32 32, i8 4, i8 1 }, %struct.MunStructInfo { [1 x i8*]* @"struct_info::::field_names", [1 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [1 x i16]* @"struct_info::::field_offsets", i16 1, i8 1 } } +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"8\AD\C9\D9Y\D2\AA::name", i32 0, i32 0), i32 32, i8 4, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([1 x i8*], [1 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([1 x %struct.MunTypeInfo*], [1 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([1 x i16], [1 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 1, i8 1 } } @"type_info::<*const TypeInfo>::name" = private unnamed_addr constant [16 x i8] c"*const TypeInfo\00" -@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::::name" = private unnamed_addr constant [4 x i8] c"Baz\00" -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c">\1A\BC\E5\C9\D3n\D8\8C?\86\22\FA\0DtV", [4 x i8]* @"type_info::::name", i32 0, i8 1, i8 1 }, %struct.MunStructInfo { i8** null, %struct.MunTypeInfo** null, i16* null, i16 0, i8 1 } } +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c">\1A\BC\E5\C9\D3n\D8\8C?\86\22\FA\0DtV", i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"type_info::::name", i32 0, i32 0), i32 0, i8 1, i8 1 }, %struct.MunStructInfo { i8** null, %struct.MunTypeInfo** null, i16* null, i16 0, i8 1 } } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::f64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"`\DBF\9C?YJ%G\AD4\9F\D5\92%A", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @"type_info::<*const *mut core::void>::name" = private unnamed_addr constant [23 x i8] c"*const *mut core::void\00" -@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 64, i8 8, i8 0 } +@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } @"type_info::::name" = private unnamed_addr constant [4 x i8] c"Bar\00" @"struct_info::::field_names.0" = private unnamed_addr constant [2 x i8] c"0\00" @"struct_info::::field_names.1" = private unnamed_addr constant [2 x i8] c"1\00" @"struct_info::::field_names.2" = private unnamed_addr constant [2 x i8] c"2\00" @"struct_info::::field_names.3" = private unnamed_addr constant [2 x i8] c"3\00" -@"struct_info::::field_names" = private unnamed_addr constant [4 x i8*] [i8* @"struct_info::::field_names.0", i8* @"struct_info::::field_names.1", i8* @"struct_info::::field_names.2", i8* @"struct_info::::field_names.3"] -@"struct_info::::field_types" = private unnamed_addr constant [4 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::"] +@"struct_info::::field_names" = private unnamed_addr constant [4 x i8*] [i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.0", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.1", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.2", i32 0, i32 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"struct_info::::field_names.3", i32 0, i32 0)] +@"struct_info::::field_types" = private unnamed_addr constant [4 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0)] @"struct_info::::field_offsets" = private unnamed_addr constant [4 x i16] [i16 0, i16 8, i16 12, i16 16] -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"\D6\CA\E2\C3Ht\09\EA\AEh\E50L\F7\EE\B5", [4 x i8]* @"type_info::::name", i32 192, i8 8, i8 1 }, %struct.MunStructInfo { [4 x i8*]* @"struct_info::::field_names", [4 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [4 x i16]* @"struct_info::::field_offsets", i16 4, i8 1 } } +@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"\D6\CA\E2\C3Ht\09\EA\AEh\E50L\F7\EE\B5", i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"type_info::::name", i32 0, i32 0), i32 192, i8 8, i8 1 }, %struct.MunStructInfo { i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @"struct_info::::field_names", i32 0, i32 0), %struct.MunTypeInfo** getelementptr inbounds ([4 x %struct.MunTypeInfo*], [4 x %struct.MunTypeInfo*]* @"struct_info::::field_types", i32 0, i32 0), i16* getelementptr inbounds ([4 x i16], [4 x i16]* @"struct_info::::field_offsets", i32 0, i32 0), i16 4, i8 1 } } @"type_info::<*mut core::void>::name" = private unnamed_addr constant [16 x i8] c"*mut core::void\00" -@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", [16 x i8]* @"type_info::<*mut core::void>::name", i32 64, i8 8, i8 0 } -@global_type_table = constant [9 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*mut core::void>"] +@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"type_info::<*mut core::void>::name", i32 0, i32 0), i32 64, i8 8, i8 0 } +@global_type_table = constant [9 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* getelementptr inbounds ({ %struct.MunTypeInfo, %struct.MunStructInfo }, { %struct.MunTypeInfo, %struct.MunStructInfo }* @"type_info::", i32 0, i32 0), %struct.MunTypeInfo* @"type_info::<*mut core::void>"] @allocatorHandle = unnamed_addr global i8* null diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__true_is_true.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__true_is_true.snap index 98dc7d2d6..fc688f3ac 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__true_is_true.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__true_is_true.snap @@ -28,6 +28,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [11 x i8] c"core::bool\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", [11 x i8]* @"type_info::::name", i32 1, i8 1, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"x\82\81m t7\03\CB\F8k\81-;\C9\84", i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"type_info::::name", i32 0, i32 0), i32 1, i8 1, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__update_operators.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__update_operators.snap index 47c4257ca..1dcbbce7b 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__update_operators.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__update_operators.snap @@ -48,6 +48,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__update_parameter.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__update_parameter.snap index 562b374ec..5c6799dcd 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__update_parameter.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__update_parameter.snap @@ -24,6 +24,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__void_return.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__void_return.snap index 9686b3592..0adbeeb7b 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__void_return.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__void_return.snap @@ -34,7 +34,7 @@ source_filename = "group_name" @dispatchTable = global %DispatchTable { void ()* @bar } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] declare void @bar() diff --git a/crates/mun_codegen/src/snapshots/mun_codegen__test__while_expr.snap b/crates/mun_codegen/src/snapshots/mun_codegen__test__while_expr.snap index 10e194850..23eb4947e 100644 --- a/crates/mun_codegen/src/snapshots/mun_codegen__test__while_expr.snap +++ b/crates/mun_codegen/src/snapshots/mun_codegen__test__while_expr.snap @@ -35,6 +35,6 @@ source_filename = "group_name" %struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } @"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i32\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", [10 x i8]* @"type_info::::name", i32 32, i8 4, i8 0 } +@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\17yzt\19\D62\17\D25\95C\17\88[\FA", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"type_info::::name", i32 0, i32 0), i32 32, i8 4, i8 0 } @global_type_table = constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] diff --git a/crates/mun_codegen/src/snapshots/test__issue_225.snap b/crates/mun_codegen/src/snapshots/test__issue_225.snap deleted file mode 100644 index 074a3115e..000000000 --- a/crates/mun_codegen/src/snapshots/test__issue_225.snap +++ /dev/null @@ -1,75 +0,0 @@ ---- -source: crates/mun_codegen/src/test.rs -expression: "struct Num {\n value: i64,\n}\n\npub fn foo(b: i64) {\n Num { value: b }.value;\n}\n\npub fn bar(b: i64) {\n { let a = Num { value: b }; a}.value;\n}" ---- -; == FILE IR ===================================== -; ModuleID = 'main.mun' -source_filename = "main.mun" - -%DispatchTable = type { i8** (i8*, i8*)* } -%struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } -%Num = type { i64 } - -@allocatorHandle = external global i8* -@dispatchTable = external global %DispatchTable -@global_type_table = external global [5 x %struct.MunTypeInfo*] - -define void @foo(i64) { -body: - %init = insertvalue %Num undef, i64 %0, 0 - %new_ptr = load i8** (i8*, i8*)*, i8** (i8*, i8*)** getelementptr inbounds (%DispatchTable, %DispatchTable* @dispatchTable, i32 0, i32 0) - %Num_ptr = load %struct.MunTypeInfo*, %struct.MunTypeInfo** getelementptr inbounds ([5 x %struct.MunTypeInfo*], [5 x %struct.MunTypeInfo*]* @global_type_table, i32 0, i32 2) - %type_info_ptr_to_i8_ptr = bitcast %struct.MunTypeInfo* %Num_ptr to i8* - %allocator_handle = load i8*, i8** @allocatorHandle - %new = call i8** %new_ptr(i8* %type_info_ptr_to_i8_ptr, i8* %allocator_handle) - %Num_ptr_ptr = bitcast i8** %new to %Num** - %Num_mem_ptr = load %Num*, %Num** %Num_ptr_ptr - store %Num %init, %Num* %Num_mem_ptr - %mem_ptr = load %Num*, %Num** %Num_ptr_ptr - %deref = load %Num, %Num* %mem_ptr - ret void -} - -define void @bar(i64) { -body: - %init = insertvalue %Num undef, i64 %0, 0 - %new_ptr = load i8** (i8*, i8*)*, i8** (i8*, i8*)** getelementptr inbounds (%DispatchTable, %DispatchTable* @dispatchTable, i32 0, i32 0) - %Num_ptr = load %struct.MunTypeInfo*, %struct.MunTypeInfo** getelementptr inbounds ([5 x %struct.MunTypeInfo*], [5 x %struct.MunTypeInfo*]* @global_type_table, i32 0, i32 2) - %type_info_ptr_to_i8_ptr = bitcast %struct.MunTypeInfo* %Num_ptr to i8* - %allocator_handle = load i8*, i8** @allocatorHandle - %new = call i8** %new_ptr(i8* %type_info_ptr_to_i8_ptr, i8* %allocator_handle) - %Num_ptr_ptr = bitcast i8** %new to %Num** - %Num_mem_ptr = load %Num*, %Num** %Num_ptr_ptr - store %Num %init, %Num* %Num_mem_ptr - %mem_ptr = load %Num*, %Num** %Num_ptr_ptr - %deref = load %Num, %Num* %mem_ptr - ret void -} - - -; == GROUP IR ==================================== -; ModuleID = 'group_name' -source_filename = "group_name" - -%DispatchTable = type { i8** (i8*, i8*)* } -%struct.MunTypeInfo = type { [16 x i8], i8*, i32, i8, i8 } -%struct.MunStructInfo = type { i8**, %struct.MunTypeInfo**, i16*, i16, i8 } - -@dispatchTable = global %DispatchTable zeroinitializer -@"type_info::<*const TypeInfo>::name" = private unnamed_addr constant [16 x i8] c"*const TypeInfo\00" -@"type_info::<*const TypeInfo>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"=\A1-\1F\C2\A7\88`d\90\F4\B5\BEE}x", [16 x i8]* @"type_info::<*const TypeInfo>::name", i32 64, i8 8, i8 0 } -@"type_info::::name" = private unnamed_addr constant [10 x i8] c"core::i64\00" -@"type_info::" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"G\13;t\97j8\18\D7M\83`\1D\C8\19%", [10 x i8]* @"type_info::::name", i32 64, i8 8, i8 0 } -@"type_info::::name" = private unnamed_addr constant [4 x i8] c"Num\00" -@"struct_info::::field_names.0" = private unnamed_addr constant [6 x i8] c"value\00" -@"struct_info::::field_names" = private unnamed_addr constant [1 x i8*] [i8* @"struct_info::::field_names.0"] -@"struct_info::::field_types" = private unnamed_addr constant [1 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::"] -@"struct_info::::field_offsets" = private unnamed_addr constant [1 x i16] zeroinitializer -@"type_info::" = private unnamed_addr constant { %struct.MunTypeInfo, %struct.MunStructInfo } { %struct.MunTypeInfo { [16 x i8] c"\A92\E2p\B0\98\B2\C4\0C\A2\F5=x\904\00", [4 x i8]* @"type_info::::name", i32 64, i8 8, i8 1 }, %struct.MunStructInfo { [1 x i8*]* @"struct_info::::field_names", [1 x %struct.MunTypeInfo*]* @"struct_info::::field_types", [1 x i16]* @"struct_info::::field_offsets", i16 1, i8 0 } } -@"type_info::<*const *mut core::void>::name" = private unnamed_addr constant [23 x i8] c"*const *mut core::void\00" -@"type_info::<*const *mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\C5fO\BD\84\DF\06\BFd+\B1\9Abv\CE\00", [23 x i8]* @"type_info::<*const *mut core::void>::name", i32 64, i8 8, i8 0 } -@"type_info::<*mut core::void>::name" = private unnamed_addr constant [16 x i8] c"*mut core::void\00" -@"type_info::<*mut core::void>" = private unnamed_addr constant %struct.MunTypeInfo { [16 x i8] c"\F0Y\22\FC\95\9E\7F\CE\08T\B1\A2\CD\A7\FAz", [16 x i8]* @"type_info::<*mut core::void>::name", i32 64, i8 8, i8 0 } -@global_type_table = constant [5 x %struct.MunTypeInfo*] [%struct.MunTypeInfo* @"type_info::<*const TypeInfo>", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::", %struct.MunTypeInfo* @"type_info::<*const *mut core::void>", %struct.MunTypeInfo* @"type_info::<*mut core::void>"] -@allocatorHandle = unnamed_addr global i8* null - diff --git a/crates/mun_codegen/src/value/array_value.rs b/crates/mun_codegen/src/value/array_value.rs index d4fc1b50d..be91ba643 100644 --- a/crates/mun_codegen/src/value/array_value.rs +++ b/crates/mun_codegen/src/value/array_value.rs @@ -3,6 +3,7 @@ use crate::value::{ SizedValueType, TypeValue, Value, ValueType, }; use inkwell::types::{BasicType, PointerType}; +use inkwell::values::PointerValue; use inkwell::AddressSpace; impl ConcreteValueType for [T] { @@ -15,8 +16,17 @@ impl PointerValueType for [T] { } } -impl> AddressableType for [T] {} -impl> AddressableType<[I]> for [T] {} +impl> AddressableType for [T] { + fn ptr_cast(value: PointerValue, _context: &IrValueContext) -> PointerValue { + let ptr_type = value + .get_type() + .get_element_type() + .into_array_type() + .get_element_type() + .ptr_type(value.get_type().get_address_space()); + value.const_cast(ptr_type) + } +} macro_rules! impl_array( ($($size:expr),+) => { @@ -100,6 +110,7 @@ pub trait IterAsIrValue>: IntoIterator, E: AddressableType, + E: PointerValueType, Self: Sized, { self.as_value(context) @@ -117,6 +128,7 @@ pub trait IterAsIrValue>: IntoIterator, E: AddressableType, + E: PointerValueType, Self: Sized, E::Value: ConstArrayValue, { @@ -137,11 +149,14 @@ where { fn as_value(self, context: &IrValueContext) -> Value<[E]> { let element_type = E::get_ir_type(context.type_context); + // eprintln!("constructing array of type {:?}", element_type); let elements: Vec = self .into_iter() .map(|v| v.as_value(context).value) + // .map(|v| { eprintln!("- type {:?}", v.get_type()); v}) .collect(); let value = ConstArrayValue::const_array(&elements, &element_type); + // eprintln!("done, {} elements", elements.len()); Value::from_raw(value) } } diff --git a/crates/mun_codegen/src/value/global.rs b/crates/mun_codegen/src/value/global.rs index a55505364..e59565c82 100644 --- a/crates/mun_codegen/src/value/global.rs +++ b/crates/mun_codegen/src/value/global.rs @@ -74,8 +74,8 @@ where *const I: ConcreteValueType, T: AddressableType, { - fn as_value(&self, _context: &IrValueContext) -> Value<*const I> { - Value::from_raw(self.value.as_pointer_value()) + fn as_value(&self, context: &IrValueContext) -> Value<*const I> { + Value::from_raw(T::ptr_cast(self.value.as_pointer_value(), context)) } } diff --git a/crates/mun_codegen/src/value/mod.rs b/crates/mun_codegen/src/value/mod.rs index e1fb3834f..06ab4b7a9 100644 --- a/crates/mun_codegen/src/value/mod.rs +++ b/crates/mun_codegen/src/value/mod.rs @@ -16,8 +16,8 @@ pub use array_value::IterAsIrValue; pub use global::Global; pub use string::CanInternalize; -use inkwell::types::{PointerType, StructType}; -use inkwell::values::BasicValueEnum; +use inkwell::types::{BasicTypeEnum, PointerType, StructType}; +use inkwell::values::{BasicValueEnum, PointerValue}; use inkwell::AddressSpace; use parking_lot::RwLock; use std::any::TypeId; @@ -95,7 +95,7 @@ pub trait TransparentValue { pub struct IrTypeContext<'ctx> { pub context: &'ctx Context, pub target_data: &'ctx TargetData, - pub struct_types: RwLock>, + pub struct_types: &'ctx RwLock>, } /// The context in which an `IrValue` exists. @@ -112,7 +112,12 @@ pub trait ConcreteValueType { } /// If we take a pointer of value T, which type can it return? This trait dictates that. -pub trait AddressableType {} +pub trait AddressableType { + /// Cast the pointer if required + fn ptr_cast(value: PointerValue, _context: &IrValueContext) -> PointerValue { + value + } +} /// A trait implemented for types that can determine the IR type of a value without an instance. pub trait SizedValueType: ConcreteValueType + Sized { @@ -201,6 +206,23 @@ impl_addressable_type_values!( inkwell::types::FunctionType ); +impl AddressableTypeValue for inkwell::types::BasicTypeEnum { + fn ptr_type(&self, address_space: AddressSpace) -> PointerType { + match self { + BasicTypeEnum::ArrayType(ty) => ty.ptr_type(address_space), + BasicTypeEnum::FloatType(ty) => ty.ptr_type(address_space), + BasicTypeEnum::IntType(ty) => ty.ptr_type(address_space), + BasicTypeEnum::PointerType(ty) => ty.ptr_type(address_space), + BasicTypeEnum::StructType(ty) => ty.ptr_type(address_space), + BasicTypeEnum::VectorType(ty) => ty.ptr_type(address_space), + } + } +} + +impl TypeValue for inkwell::types::BasicTypeEnum { + type Value = inkwell::values::BasicValueEnum; +} + impl Value { /// Returns the type of the value. pub fn get_type(&self) -> ::Type { @@ -213,6 +235,42 @@ impl Value { } } +impl Value<*const T> +where + *const T: SizedValueType, + <*const T as ConcreteValueType>::Value: ValueType, +{ + /// Constructs a value by casting the specified pointer value to this value + pub fn with_cast(value: PointerValue, context: &IrValueContext) -> Self { + let target_type = <*const T>::get_ir_type(context.type_context); + Value { + value: if value.get_type() == target_type { + value + } else { + value.const_cast(target_type) + }, + } + } +} + +impl Value<*mut T> +where + *mut T: SizedValueType, + <*mut T as ConcreteValueType>::Value: ValueType, +{ + /// Constructs a value by casting the specified pointer value to this value + pub fn with_cast(value: PointerValue, context: &IrValueContext) -> Self { + let target_type = <*mut T>::get_ir_type(context.type_context); + Value { + value: if value.get_type() == target_type { + value + } else { + value.const_cast(target_type) + }, + } + } +} + impl Value { /// Returns the inkwell type of this `Value`. pub fn get_ir_type(context: &IrTypeContext) -> ::Type { @@ -310,6 +368,18 @@ where } } +// If the target is addressable as I, the transparent value is also addressable as I. +impl< + I: ?Sized, + U: ConcreteValueType + ?Sized + AddressableType, + T: TransparentValue, + > AddressableType for T +{ + fn ptr_cast(value: PointerValue, context: &IrValueContext) -> PointerValue { + >::ptr_cast(value, context) + } +} + // Transparent values can also be represented as `Value`. impl AsValue for T where diff --git a/crates/mun_codegen/src/value/string.rs b/crates/mun_codegen/src/value/string.rs index ff41bf5c5..cf8a99491 100644 --- a/crates/mun_codegen/src/value/string.rs +++ b/crates/mun_codegen/src/value/string.rs @@ -1,5 +1,4 @@ use super::{AsValue, Global, IrValueContext, TransparentValue, Value}; -use crate::value::AddressableType; use std::ffi::{CStr, CString}; /// Enables internalizing certain data structures like strings. @@ -55,6 +54,3 @@ impl TransparentValue for String { self.as_bytes().as_value(context) } } - -impl AddressableType for CString {} -impl AddressableType for String {} diff --git a/crates/mun_codegen_macros/src/lib.rs b/crates/mun_codegen_macros/src/lib.rs index 936638bfe..be7fa71c5 100644 --- a/crates/mun_codegen_macros/src/lib.rs +++ b/crates/mun_codegen_macros/src/lib.rs @@ -63,7 +63,11 @@ pub fn as_value_derive(input: TokenStream) -> TokenStream { let field_types_values = struct_data.fields.iter().enumerate().map(|(idx, f)| { let name = f.ident.as_ref().map(|i| quote! { #i }).unwrap_or_else(|| quote! { #idx }); quote! { - crate::value::AsValueInto::::as_value_into(&self. #name, context) + { + let value = crate::value::AsValueInto::::as_value_into(&self. #name, context); + // eprintln!("- {:?}", value.get_type()); + value + } } }); @@ -104,9 +108,12 @@ pub fn as_value_derive(input: TokenStream) -> TokenStream { impl crate::value::AsValue<#ident> for #ident { fn as_value(&self, context: &crate::value::IrValueContext) -> crate::value::Value { let struct_type = Self::get_ir_type(context.type_context); - crate::value::Value::from_raw(struct_type.const_named_struct(&[ + // eprintln!("Constructing: {:?}", struct_type.print_to_string().to_string()); + let value = struct_type.const_named_struct(&[ #(#field_types_values),* - ])) + ]); + // eprintln!("Done"); + crate::value::Value::from_raw(value) } }