Label::Indirect(_)=>unimplemented!("Handling of indirect edges not yet implemented"),// Right now this case should not exist. Decide how to handle only after it can actually occur.
}
}
fnspecialize_conditional(
&self,
value:&State,
_condition:&Expression,
_is_true:bool,
)->Option<State>{
// TODO: implement some real specialization of conditionals!
Label::Indirect(_)=>unimplemented!("Handling of indirect edges not yet implemented"),// Right now this case should not exist. Decide how to handle only after it can actually occur.
}
}
/// Update the state with the knowledge that some conditional evaluated to true or false.
/// Currently not implemented, this function just returns the state as it is.
/// This deletes the pointer from the callee_id to the corresponding memory object
/// and updates all other references pointing to the callee_id to point to the caller_id.
/// The offset adjustment is handled as in `replace_abstract_id`.
///
/// Note that right now the content of the callee memory object is not merged into the caller memory object.
/// In general this is the correct behaviour as the content below the stack pointer should be considered uninitialized memory after returning to the caller.
/// TODO: Check whether compilers may deviate from this convention when optimizing aggressively.