pub struct FuncOperation<'c> { /* private fields */ }
Expand description

A func operation. An operation with a name containing a single SSACFG region.

Operations within the function cannot implicitly capture values defined outside of the function, i.e. Functions are IsolatedFromAbove. All external references must use function arguments or attributes that establish a symbolic connection (e.g. symbols referenced by name via a string attribute like SymbolRefAttr). An external function declaration (used when referring to a function declared in some other module) has no body. While the MLIR textual form provides a nice inline syntax for function arguments, they are internally represented as “block arguments” to the first block in the region.

Only dialect attribute names may be specified in the attribute dictionaries for function arguments, results, or the function itself.

Example:

// External function definitions.
func.func @abort()
func.func @scribble(i32, i64, memref<? x 128 x f32, #layout_map0>) -> f64

// A function that returns its argument twice:
func.func @count(%x: i64) -> (i64, i64)
  attributes {fruit: "banana"} {
  return %x, %x: i64, i64
}

// A function with an argument attribute
func.func @example_fn_arg(%x: i32 {swift.self = unit})

// A function with a result attribute
func.func @example_fn_result() -> (f64 {dialectName.attrName = 0 : i64})

// A function with an attribute
func.func @example_fn_attr() attributes {dialectName.attrName = false}

Implementations§

source§

impl<'c> FuncOperation<'c>

source

pub fn name() -> &'static str

Returns a name.

source

pub fn as_operation(&self) -> &Operation<'c>

Returns a generic operation.

source

pub fn builder( context: &'c Context, location: Location<'c> ) -> FuncOperationBuilder<'c, Unset, Unset, Unset>

Creates a builder.

source

pub fn body(&self) -> Result<RegionRef<'c, '_>, Error>

source

pub fn sym_name(&self) -> Result<StringAttribute<'c>, Error>

source

pub fn set_sym_name(&mut self, value: StringAttribute<'c>)

source

pub fn function_type(&self) -> Result<TypeAttribute<'c>, Error>

source

pub fn set_function_type(&mut self, value: TypeAttribute<'c>)

source

pub fn sym_visibility(&self) -> Result<StringAttribute<'c>, Error>

source

pub fn set_sym_visibility(&mut self, value: StringAttribute<'c>)

source

pub fn remove_sym_visibility(&mut self) -> Result<(), Error>

source

pub fn arg_attrs(&self) -> Result<ArrayAttribute<'c>, Error>

source

pub fn set_arg_attrs(&mut self, value: ArrayAttribute<'c>)

source

pub fn remove_arg_attrs(&mut self) -> Result<(), Error>

source

pub fn res_attrs(&self) -> Result<ArrayAttribute<'c>, Error>

source

pub fn set_res_attrs(&mut self, value: ArrayAttribute<'c>)

source

pub fn remove_res_attrs(&mut self) -> Result<(), Error>

Trait Implementations§

source§

impl<'c> From<FuncOperation<'c>> for Operation<'c>

source§

fn from(operation: FuncOperation<'c>) -> Self

Converts to this type from the input type.
source§

impl<'c> TryFrom<Operation<'c>> for FuncOperation<'c>

§

type Error = Error

The type returned in the event of a conversion error.
source§

fn try_from(operation: Operation<'c>) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

§

impl<'c> RefUnwindSafe for FuncOperation<'c>

§

impl<'c> !Send for FuncOperation<'c>

§

impl<'c> !Sync for FuncOperation<'c>

§

impl<'c> Unpin for FuncOperation<'c>

§

impl<'c> UnwindSafe for FuncOperation<'c>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.