cranelift: Fuzz Argument Extensions in clif-fuzzer (#4589)
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
use crate::codegen::ir::ValueList;
|
use crate::codegen::ir::{ArgumentExtension, ArgumentPurpose, ValueList};
|
||||||
use crate::config::Config;
|
use crate::config::Config;
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use arbitrary::{Arbitrary, Unstructured};
|
use arbitrary::{Arbitrary, Unstructured};
|
||||||
@@ -287,9 +287,21 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn generate_abi_param(&mut self) -> Result<AbiParam> {
|
fn generate_abi_param(&mut self) -> Result<AbiParam> {
|
||||||
// TODO: Generate more advanced abi params (structs/purposes/extensions/etc...)
|
let value_type = self.generate_type()?;
|
||||||
let ty = self.generate_type()?;
|
// TODO: There are more argument purposes to be explored...
|
||||||
Ok(AbiParam::new(ty))
|
let purpose = ArgumentPurpose::Normal;
|
||||||
|
let extension = match self.u.int_in_range(0..=2)? {
|
||||||
|
2 => ArgumentExtension::Sext,
|
||||||
|
1 => ArgumentExtension::Uext,
|
||||||
|
_ => ArgumentExtension::None,
|
||||||
|
};
|
||||||
|
|
||||||
|
Ok(AbiParam {
|
||||||
|
value_type,
|
||||||
|
purpose,
|
||||||
|
extension,
|
||||||
|
legalized_to_pointer: false,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn generate_signature(&mut self) -> Result<Signature> {
|
fn generate_signature(&mut self) -> Result<Signature> {
|
||||||
|
|||||||
Reference in New Issue
Block a user