Fix borrow-example
This commit is contained in:
		
							parent
							
								
									4de346e3c0
								
							
						
					
					
						commit
						8be6ce1549
					
				| @ -835,11 +835,7 @@ impl mir::Expression { | ||||
|                     .expect("index returned none!") | ||||
|                     .instr(); | ||||
| 
 | ||||
|                 let first = scope | ||||
|                     .block | ||||
|                     .build_named("array.zero", Instr::Constant(ConstValue::U32(0))) | ||||
|                     .unwrap(); | ||||
| 
 | ||||
|                 dbg!(&ty); | ||||
|                 let TypeKind::CodegenPtr(inner) = ty else { | ||||
|                     panic!(); | ||||
|                 }; | ||||
| @ -848,7 +844,7 @@ impl mir::Expression { | ||||
|                     let loaded = scope | ||||
|                         .block | ||||
|                         .build_named( | ||||
|                             "array.load", | ||||
|                             "load", | ||||
|                             Instr::Load( | ||||
|                                 kind.instr(), | ||||
|                                 inner.get_type(scope.type_values, scope.types), | ||||
| @ -858,15 +854,36 @@ impl mir::Expression { | ||||
|                     ( | ||||
|                         scope | ||||
|                             .block | ||||
|                             .build_named(format!("array.gep"), Instr::GetElemPtr(loaded, vec![idx])) | ||||
|                             .build_named(format!("gep"), Instr::GetElemPtr(loaded, vec![idx])) | ||||
|                             .unwrap() | ||||
|                             .maybe_location(&mut scope.block, location), | ||||
|                         *further_inner, | ||||
|                     ) | ||||
|                 } else if let TypeKind::CodegenPtr(further_inner) = *inner.clone() { | ||||
|                     let TypeKind::Array(_, _) = *further_inner else { | ||||
|                         panic!(); | ||||
|                     }; | ||||
| 
 | ||||
|                     ( | ||||
|                         scope | ||||
|                             .block | ||||
|                             .build_named( | ||||
|                                 format!("array.gep"), | ||||
|                                 Instr::GetElemPtr(kind.instr(), vec![idx]), | ||||
|                             ) | ||||
|                             .unwrap() | ||||
|                             .maybe_location(&mut scope.block, location), | ||||
|                         val_t.clone(), | ||||
|                     ) | ||||
|                 } else { | ||||
|                     let TypeKind::Array(_, _) = *inner else { | ||||
|                         panic!(); | ||||
|                     }; | ||||
| 
 | ||||
|                     let first = scope | ||||
|                         .block | ||||
|                         .build_named("array.zero", Instr::Constant(ConstValue::U32(0))) | ||||
|                         .unwrap(); | ||||
|                     ( | ||||
|                         scope | ||||
|                             .block | ||||
| @ -1082,7 +1099,7 @@ impl mir::Expression { | ||||
|                     .expect("Variable reference not found?!"); | ||||
|                 Some(StackValue( | ||||
|                     StackValueKind::mutable(*mutable, v.0.instr()), | ||||
|                     v.1.clone(), | ||||
|                     TypeKind::Borrow(Box::new(v.1.clone()), *mutable), | ||||
|                 )) | ||||
|             } | ||||
|             mir::ExprKind::Deref(varref) => { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user