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

Merge branch 'ccp-bugfix2' into 'main'

Another CCP bugfix

See merge request !74
parents e0daecde 9309ab65
No related branches found
No related tags found
1 merge request!74Another CCP bugfix
Pipeline #200513 passed
......@@ -845,11 +845,24 @@ fn ccp_flow_function(
}
Node::Read {
collect,
indices: _,
} => CCPLattice {
reachability: inputs[collect.idx()].reachability.clone(),
constant: ConstantLattice::bottom(),
},
indices,
} => {
let mut reachability = inputs[collect.idx()].reachability.clone();
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.
Node::Projection { control, selection } => match &editor.func().nodes[control.idx()] {
Node::If { control: _, cond } => {
......
......@@ -8,8 +8,9 @@ juno_build::juno!("nested_ccp");
fn main() {
async_std::task::block_on(async {
let mut a = vec![17.0, 18.0, 19.0];
let output = unsafe {
ccp_example().await
ccp_example(a.as_mut_ptr()).await
};
println!("{}", output);
assert_eq!(output, 1.0);
......
#[entry]
fn ccp_example() -> f32 {
fn ccp_example(arg : f32[3]) -> f32 {
let x : f32 = 2;
if x < 3 {
x = 1;
} else {
if x == 1 {
x = 4;
x = 3;
} 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;
}
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