Skip to content
Snippets Groups Projects
Commit 9309ab65 authored by Aaron Councilman's avatar Aaron Councilman
Browse files

Another CCP bugfix

parent e0daecde
No related branches found
No related tags found
1 merge request!74Another CCP bugfix
...@@ -845,11 +845,24 @@ fn ccp_flow_function( ...@@ -845,11 +845,24 @@ fn ccp_flow_function(
} }
Node::Read { Node::Read {
collect, collect,
indices: _, indices,
} => CCPLattice { } => {
reachability: inputs[collect.idx()].reachability.clone(), let mut reachability = inputs[collect.idx()].reachability.clone();
constant: ConstantLattice::bottom(), for index in indices.iter() {
}, if let Index::Position(positions) = index {
for position in positions.iter() {
reachability = ReachabilityLattice::join(
&reachability,
&inputs[position.idx()].reachability,
);
}
}
}
CCPLattice {
reachability,
constant: ConstantLattice::bottom(),
}
}
// Projection handles reachability when following an if or match. // Projection handles reachability when following an if or match.
Node::Projection { control, selection } => match &editor.func().nodes[control.idx()] { Node::Projection { control, selection } => match &editor.func().nodes[control.idx()] {
Node::If { control: _, cond } => { Node::If { control: _, cond } => {
......
...@@ -8,8 +8,9 @@ juno_build::juno!("nested_ccp"); ...@@ -8,8 +8,9 @@ juno_build::juno!("nested_ccp");
fn main() { fn main() {
async_std::task::block_on(async { async_std::task::block_on(async {
let mut a = vec![17.0, 18.0, 19.0];
let output = unsafe { let output = unsafe {
ccp_example().await ccp_example(a.as_mut_ptr()).await
}; };
println!("{}", output); println!("{}", output);
assert_eq!(output, 1.0); assert_eq!(output, 1.0);
......
#[entry] #[entry]
fn ccp_example() -> f32 { fn ccp_example(arg : f32[3]) -> f32 {
let x : f32 = 2; let x : f32 = 2;
if x < 3 { if x < 3 {
x = 1; x = 1;
} else { } else {
if x == 1 { if x == 1 {
x = 4; x = 3;
} else { } else {
x = 1; x = 7;
} }
} }
if false { for i = 0 to 3 by 1 { } } if false { for i = 0 to 3 by 1 { x = arg[i]; arg[i] = 0; } }
return x; return x;
} }
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