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 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> {