dead_code_elimination.adl
1 2 /* 3 The program should produce the following bytecode: 4 5 program test.alpha; 6 7 record dummy: 8 owner as address.private; 9 data as u8.private; 10 11 closure eliminate_unused_function_call: 12 input r0 as u8; 13 input r1 as u8; 14 add r0 r1 into r2; 15 output r2 as u8; 16 17 function foo: 18 input r0 as u8.private; 19 input r1 as u8.private; 20 add r0 r1 into r2; 21 output r2 as u8.private; 22 */ 23 24 program test.alpha { 25 26 record dummy { 27 owner: address, 28 data: u8, 29 } 30 31 function eliminate_unused_function_call(a: u8, b: u8) -> u8 { 32 return a + b; 33 } 34 35 inline inline_and_eliminate(a: u8, b: u8) -> u8 { 36 return a * b; 37 } 38 39 transition foo(a: u8, b: u8) -> u8 { 40 let c: u8 = a + b; 41 // For now allow this call to remain. 42 let d: u8 = eliminate_unused_function_call(a, b); 43 let e: u8 = 0u8; 44 if (a == b) { 45 e = inline_and_eliminate(a, b); 46 } 47 let f: dummy = dummy { 48 owner: self.signer, 49 data: e, 50 }; 51 return a + b; 52 } 53 }