Skip to content
Snippets Groups Projects
Commit 13718590 authored by Xavier Routh's avatar Xavier Routh
Browse files

add back implicit clone

parent 20fd62e5
No related branches found
No related tags found
1 merge request!103Forkify + Loop Canonicalization + Initial Fork Fission
Pipeline #201235 canceled
#[entry]
fn simple_implicit_clone(input : i32) -> i32 {
let arr : i32[3];
arr[0] = 2;
let arr2 = arr;
arr2[1] = input;
arr[2] = 4;
return arr[0] + arr2[0] + arr[1] + arr2[1] + arr[2] + arr2[2];
}
#[entry]
fn loop_implicit_clone(input : i32) -> i32 {
let arr : i32[3];
let r : i32 = 5;
while input > 0 {
r = arr[0];
let arr2 = arr;
let x = arr2[input as usize - input as usize];
arr2[input as usize - input as usize] = 9;
if x == 0 {
input -= arr2[0];
} else {
r = 99;
break;
}
}
return r + 7;
}
#[entry]
fn double_loop_implicit_clone(a : usize) -> usize {
for i = 0 to a {
let arr : i32[1];
for j = 0 to a {
arr[0] = 1;
}
}
return 42;
}
#[entry]
fn tricky_loop_implicit_clone(a : usize, b : usize) -> i32 {
let x = 0;
......@@ -19,3 +59,98 @@ fn tricky_loop_implicit_clone(a : usize, b : usize) -> i32 {
}
return x;
}
#[entry]
fn tricky2_loop_implicit_clone(a : usize, b : usize) -> i32 {
let x = 0;
for i = 0 to 3 {
let arr1 : i32[1];
let arr2 : i32[1];
if a == b {
arr1[0] = 6;
} else {
arr2[0] = 9;
}
arr1[0] = 2;
for j = 0 to 4 {
arr2[0] += 1;
}
x += arr2[0];
}
return x;
}
#[entry]
fn tricky3_loop_implicit_clone(a : usize, b : usize) -> usize {
let x = 0;
for i = 0 to b {
let arr1 : usize[10];
let arr2 : usize[10];
arr1[1] = 1;
for kk = 0 to 10 {
arr2[kk] += arr1[kk];
}
x += arr2[1];
}
return x;
}
#[entry]
fn no_implicit_clone(input : i32) -> i32 {
let arr : i32[2];
arr[0] = input;
while input > 0 {
arr[0] += 1;
input -= 1;
}
let arr2 : i32[1];
if input == 0 {
arr2[0] = 5;
} else {
arr2[0] = 3;
}
return arr[0] + arr2[0];
}
#[entry]
fn mirage_implicit_clone(input : i32) -> i32 {
let arr1 : i32[2];
let arr2 : i32[2];
let arr3 : i32[2];
let arr4 : i32[2];
arr1[0] = 7;
arr1[1] = 3;
arr2[0] = input;
arr2[1] = 45;
arr3[0] = -14;
arr3[1] = -5;
arr4[0] = -1;
arr4[1] = 0;
arr2 = arr4;
arr3 = arr2;
arr2 = arr1;
let p1 = arr1[0] + arr1[1] + arr2[0] + arr2[1] + arr3[0] + arr3[1] + arr4[0] + arr4[1]; // 18
arr4 = arr2;
let p2 = arr1[0] + arr1[1] + arr2[0] + arr2[1] + arr3[0] + arr3[1] + arr4[0] + arr4[1]; // 29
if input > 0 {
while input > 10 {
arr1[0] = arr1[1] + input;
arr1[1] = arr1[0] + input;
input -= 10;
}
}
let p3 = arr1[0]; // 592
let x : i32 = 0;
while input < 20 {
let arr5 : i32[2];
arr5[0] = 7;
let y = arr5[0] + arr5[1];
arr5 = arr4;
arr5[1] += 2;
y += arr5[1];
x += 12;
input += 1;
}
let p4 = x; // 204
return p1 + p2 + p3 + p4;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment