cranelift: Fuzz Argument Extensions in clif-fuzzer (#4589)

This commit is contained in:
Afonso Bordado
2022-08-09 17:03:38 +01:00
committed by GitHub
parent 867f5c1244
commit dd6e790090

View File

@@ -1,4 +1,4 @@
use crate::codegen::ir::ValueList;
use crate::codegen::ir::{ArgumentExtension, ArgumentPurpose, ValueList};
use crate::config::Config;
use anyhow::Result;
use arbitrary::{Arbitrary, Unstructured};
@@ -287,9 +287,21 @@ where
}
fn generate_abi_param(&mut self) -> Result<AbiParam> {
// TODO: Generate more advanced abi params (structs/purposes/extensions/etc...)
let ty = self.generate_type()?;
Ok(AbiParam::new(ty))
let value_type = self.generate_type()?;
// TODO: There are more argument purposes to be explored...
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> {