assert_eq!(length, operands.len());
for (i, operand) in operands.iter().enumerate() {
let src = try!(self.eval_operand(operand));
- let offset = i * elem_size;
- let elem_dest = dest.offset(offset as isize);
+ let elem_dest = dest.offset((i * elem_size) as isize);
try!(self.memory.copy(src, elem_dest, elem_size));
}
} else {
}
}
- Repeat(_, _) => unimplemented!(),
+ Repeat(ref operand, _) => {
+ if let Repr::Array { elem_size, length } = *dest_repr {
+ let src = try!(self.eval_operand(operand));
+ for i in 0..length {
+ let elem_dest = dest.offset((i * elem_size) as isize);
+ try!(self.memory.copy(src, elem_dest, elem_size));
+ }
+ } else {
+ panic!("expected Repr::Array target");
+ }
+ }
Len(ref lvalue) => {
let src = try!(self.eval_lvalue(lvalue));
}
#[miri_run]
-fn index_for_loop() -> usize {
- let mut sum = 0;
- let a = [0, 10, 20, 30];
- for i in 0..a.len() {
- sum += a[i];
- }
- sum
-}
-
-#[miri_run]
-fn for_loop() -> usize {
- let mut sum = 0;
- let a = [0, 10, 20, 30];
- for &n in &a {
- sum += n;
- }
- sum
+fn array_repeat() -> [u8; 8] {
+ [42; 8]
}
product
}
+
+#[miri_run]
+fn index_for_loop() -> usize {
+ let mut sum = 0;
+ let a = [0, 10, 20, 30];
+ for i in 0..a.len() {
+ sum += a[i];
+ }
+ sum
+}
+
+#[miri_run]
+fn for_loop() -> usize {
+ let mut sum = 0;
+ let a = [0, 10, 20, 30];
+ for &n in &a {
+ sum += n;
+ }
+ sum
+}