Remove name from alloca
This commit is contained in:
		
							parent
							
								
									848f4118bf
								
							
						
					
					
						commit
						71a01dad69
					
				| @ -390,7 +390,7 @@ impl Builder { | ||||
|                     } | ||||
|                     Ok(()) | ||||
|                 } | ||||
|                 Instr::Alloca(_, _) => Ok(()), | ||||
|                 Instr::Alloca(_) => Ok(()), | ||||
|                 Instr::Load(ptr, load_ty) => { | ||||
|                     let ptr_ty = ptr.get_type(&self)?; | ||||
|                     if let Type::Ptr(ptr_ty_inner) = ptr_ty { | ||||
|  | ||||
| @ -444,7 +444,7 @@ impl DebugMetadataHolder { | ||||
|                     *debug.types.get(&var.ty).unwrap(), | ||||
|                     var.always_preserve as i32, | ||||
|                     var.flags.as_llvm(), | ||||
|                     var.alignment, | ||||
|                     0, | ||||
|                 ), | ||||
|                 DebugMetadata::VarAssignment => todo!(), | ||||
|             } | ||||
| @ -824,10 +824,10 @@ impl InstructionHolder { | ||||
|                     ); | ||||
|                     phi | ||||
|                 } | ||||
|                 Alloca(name, ty) => LLVMBuildAlloca( | ||||
|                 Alloca(ty) => LLVMBuildAlloca( | ||||
|                     module.builder_ref, | ||||
|                     ty.as_llvm(module.context_ref, &module.types), | ||||
|                     into_cstring(name).as_ptr(), | ||||
|                     c"alloca".as_ptr(), | ||||
|                 ), | ||||
|                 Load(ptr, ty) => LLVMBuildLoad2( | ||||
|                     module.builder_ref, | ||||
|  | ||||
| @ -132,7 +132,7 @@ impl Debug for Instr { | ||||
|             Instr::Phi(val) => fmt_call(f, &"Phi", &val), | ||||
|             Instr::ICmp(cmp, lhs, rhs) => fmt_binop(f, lhs, cmp, rhs), | ||||
|             Instr::FunctionCall(fun, params) => fmt_call(f, fun, params), | ||||
|             Instr::Alloca(name, ty) => write!(f, "alloca<{:?}>({})", ty, name), | ||||
|             Instr::Alloca(ty) => write!(f, "alloca<{:?}>", ty), | ||||
|             Instr::Load(val, ty) => write!(f, "load<{:?}>({:?})", ty, val), | ||||
|             Instr::Store(ptr, val) => write!(f, "store({:?} = {:?})", ptr, val), | ||||
|             Instr::ArrayAlloca(ty, instruction_value) => { | ||||
|  | ||||
| @ -235,7 +235,6 @@ pub struct DebugLocalVariable { | ||||
|     pub location: DebugLocation, | ||||
|     pub ty: DebugTypeValue, | ||||
|     pub always_preserve: bool, | ||||
|     pub alignment: u32, | ||||
|     pub flags: DwarfFlags, | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -312,7 +312,7 @@ pub enum Instr { | ||||
|     And(InstructionValue, InstructionValue), | ||||
|     Phi(Vec<InstructionValue>), | ||||
| 
 | ||||
|     Alloca(String, Type), | ||||
|     Alloca(Type), | ||||
|     Load(InstructionValue, Type), | ||||
|     Store(InstructionValue, InstructionValue), | ||||
|     ArrayAlloca(Type, u32), | ||||
| @ -402,7 +402,7 @@ impl InstructionValue { | ||||
|                 ICmp(_, _, _) => Ok(Type::Bool), | ||||
|                 FunctionCall(function_value, _) => Ok(builder.function_data(function_value).ret), | ||||
|                 Phi(values) => values.first().ok_or(()).and_then(|v| v.get_type(&builder)), | ||||
|                 Alloca(_, ty) => Ok(Type::Ptr(Box::new(ty.clone()))), | ||||
|                 Alloca(ty) => Ok(Type::Ptr(Box::new(ty.clone()))), | ||||
|                 Load(_, ty) => Ok(ty.clone()), | ||||
|                 Store(_, value) => value.get_type(builder), | ||||
|                 ArrayAlloca(ty, _) => Ok(Type::Ptr(Box::new(ty.clone()))), | ||||
|  | ||||
| @ -345,10 +345,7 @@ impl mir::Module { | ||||
|                 // Codegen actual parameters
 | ||||
|                 let param = entry.build(Instr::Param(i)).unwrap(); | ||||
|                 let alloca = entry | ||||
|                     .build(Instr::Alloca( | ||||
|                         p_name.clone(), | ||||
|                         p_ty.get_type(&type_values, &types), | ||||
|                     )) | ||||
|                     .build(Instr::Alloca(p_ty.get_type(&type_values, &types))) | ||||
|                     .unwrap(); | ||||
|                 entry.build(Instr::Store(alloca, param)).unwrap(); | ||||
|                 stack_values.insert( | ||||
| @ -475,10 +472,7 @@ impl mir::Statement { | ||||
| 
 | ||||
|                 let alloca = scope | ||||
|                     .block | ||||
|                     .build(Instr::Alloca( | ||||
|                         name.clone(), | ||||
|                         ty.get_type(scope.type_values, scope.types), | ||||
|                     )) | ||||
|                     .build(Instr::Alloca(ty.get_type(scope.type_values, scope.types))) | ||||
|                     .unwrap() | ||||
|                     .maybe_location(&mut scope.block, location); | ||||
| 
 | ||||
| @ -504,9 +498,8 @@ impl mir::Statement { | ||||
|                         DebugMetadata::LocalVar(DebugLocalVariable { | ||||
|                             name: name.clone(), | ||||
|                             location, | ||||
|                             ty: ty.clone().get_debug_type(debug, scope), | ||||
|                             ty: TypeKind::Ptr(Box::new(ty.clone())).get_debug_type(debug, scope), | ||||
|                             always_preserve: true, | ||||
|                             alignment: 32, | ||||
|                             flags: DwarfFlags, | ||||
|                         }), | ||||
|                     ); | ||||
| @ -737,7 +730,7 @@ impl mir::Expression { | ||||
| 
 | ||||
|                 let array = scope | ||||
|                     .block | ||||
|                     .build(Instr::Alloca("array".to_owned(), array_ty.clone())) | ||||
|                     .build(Instr::Alloca(array_ty.clone())) | ||||
|                     .unwrap() | ||||
|                     .maybe_location(&mut scope.block, location); | ||||
| 
 | ||||
| @ -817,7 +810,7 @@ impl mir::Expression { | ||||
|                 let struct_ty = Type::CustomType(*scope.type_values.get(name)?); | ||||
|                 let struct_ptr = scope | ||||
|                     .block | ||||
|                     .build(Instr::Alloca(name.clone(), struct_ty.clone())) | ||||
|                     .build(Instr::Alloca(struct_ty.clone())) | ||||
|                     .unwrap() | ||||
|                     .maybe_location(&mut scope.block, location); | ||||
| 
 | ||||
|  | ||||
| @ -5,17 +5,21 @@ struct Test { | ||||
|   second: [u32; 4] | ||||
| } | ||||
| 
 | ||||
| fn test() -> [Test; 1] { | ||||
|   let value = [Test { | ||||
| fn test() -> Test { | ||||
|   let value = Test { | ||||
|     field: 5, | ||||
|     second: [6, 3, 4, 8], | ||||
|   }]; | ||||
|   }; | ||||
|   return value; | ||||
| } | ||||
| 
 | ||||
| fn main() -> u32 { | ||||
|   let mut value = test(); | ||||
| 
 | ||||
|   let mut a = value.second; | ||||
| 
 | ||||
|   return value[0].second[2]; | ||||
|   a[2] = 15; | ||||
| 
 | ||||
| 
 | ||||
|   return value.second[2]; | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user