Remove verify! macro that's used only once;
This commit is contained in:
committed by
Dan Gohman
parent
fcb1151dd1
commit
3ec21459c5
@@ -120,53 +120,6 @@ macro_rules! nonfatal {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Shorthand syntax for calling functions of the form
|
|
||||||
/// `verify_foo(a, b, &mut VerifierErrors) -> VerifierStepResult<T>`
|
|
||||||
/// as if they had the form `verify_foo(a, b) -> VerifierResult<T>`.
|
|
||||||
///
|
|
||||||
/// This syntax also ensures that no errors whatsoever were reported,
|
|
||||||
/// even if they were not fatal.
|
|
||||||
///
|
|
||||||
/// # Example
|
|
||||||
/// ```rust,ignore
|
|
||||||
/// verify!(verify_context, func, cfg, domtree, fisa)
|
|
||||||
///
|
|
||||||
/// // ... is equivalent to...
|
|
||||||
///
|
|
||||||
/// let mut errors = VerifierErrors::new();
|
|
||||||
/// let result = verify_context(func, cfg, domtree, fisa, &mut errors);
|
|
||||||
///
|
|
||||||
/// if errors.is_empty() {
|
|
||||||
/// Ok(result.unwrap())
|
|
||||||
/// } else {
|
|
||||||
/// Err(errors)
|
|
||||||
/// }
|
|
||||||
/// ```
|
|
||||||
#[macro_export]
|
|
||||||
macro_rules! verify {
|
|
||||||
( $verifier: expr; $fun: ident $(, $arg: expr )* ) => ({
|
|
||||||
let mut errors = $crate::verifier::VerifierErrors::default();
|
|
||||||
let result = $verifier.$fun( $( $arg, )* &mut errors);
|
|
||||||
|
|
||||||
if errors.is_empty() {
|
|
||||||
Ok(result.unwrap())
|
|
||||||
} else {
|
|
||||||
Err(errors)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
( $fun: path, $(, $arg: expr )* ) => ({
|
|
||||||
let mut errors = $crate::verifier::VerifierErrors::default();
|
|
||||||
let result = $fun( $( $arg, )* &mut errors);
|
|
||||||
|
|
||||||
if errors.is_empty() {
|
|
||||||
Ok(result.unwrap())
|
|
||||||
} else {
|
|
||||||
Err(errors)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
mod cssa;
|
mod cssa;
|
||||||
mod flags;
|
mod flags;
|
||||||
mod liveness;
|
mod liveness;
|
||||||
@@ -203,9 +156,6 @@ pub type VerifierStepResult<T> = Result<T, ()>;
|
|||||||
///
|
///
|
||||||
/// Unlike `VerifierStepResult<()>` which may be `Ok` while still having reported
|
/// Unlike `VerifierStepResult<()>` which may be `Ok` while still having reported
|
||||||
/// errors, this type always returns `Err` if an error (fatal or not) was reported.
|
/// errors, this type always returns `Err` if an error (fatal or not) was reported.
|
||||||
///
|
|
||||||
/// Typically, this error will be constructed by using `verify!` on a function
|
|
||||||
/// that returns `VerifierStepResult<T>`.
|
|
||||||
pub type VerifierResult<T> = Result<T, VerifierErrors>;
|
pub type VerifierResult<T> = Result<T, VerifierErrors>;
|
||||||
|
|
||||||
/// List of verifier errors.
|
/// List of verifier errors.
|
||||||
@@ -280,7 +230,14 @@ pub fn verify_function<'a, FOI: Into<FlagsOrIsa<'a>>>(
|
|||||||
fisa: FOI,
|
fisa: FOI,
|
||||||
) -> VerifierResult<()> {
|
) -> VerifierResult<()> {
|
||||||
let _tt = timing::verifier();
|
let _tt = timing::verifier();
|
||||||
verify!(Verifier::new(func, fisa.into()); run)
|
let mut errors = VerifierErrors::default();
|
||||||
|
let verifier = Verifier::new(func, fisa.into());
|
||||||
|
let result = verifier.run(&mut errors);
|
||||||
|
if errors.is_empty() {
|
||||||
|
Ok(result.unwrap())
|
||||||
|
} else {
|
||||||
|
Err(errors)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Verify `func` after checking the integrity of associated context data structures `cfg` and
|
/// Verify `func` after checking the integrity of associated context data structures `cfg` and
|
||||||
|
|||||||
Reference in New Issue
Block a user