llvm-project/mlir/lib/IR
Dimitrios Vytiniotis a60ba7d908 Supporting conversion of argument attributes along their types.
This fixes a bug: previously, during conversion function argument
attributes were neither beings passed through nor converted. This fix
extends DialectConversion to allow for simultaneous conversion of the
function type and the argument attributes.

This was important when lowering MLIR to LLVM where attribute
information (e.g. noalias) needs to be preserved in MLIR(LLVMDialect).

Longer run it seems reasonable that we want to convert both the
function attribute and its type and the argument attributes, but that
requires a small refactoring in Function.h to aggregate these three
fields in an inner struct, which will require some discussion.

PiperOrigin-RevId: 236709409
2019-03-29 16:55:51 -07:00
..
AffineExpr.cpp Cleanup post cl/235283610 - NFC 2019-03-29 16:42:20 -07:00
AffineExprDetail.h [MLIR] Sketch AffineExpr value type 2019-03-29 13:25:42 -07:00
AffineMap.cpp Make IndexType a standard type instead of a builtin. This also cleans up some unnecessary factory methods on the Type class. 2019-03-29 16:25:38 -07:00
AffineMapDetail.h Introduce Fourier-Motzkin variable elimination + other cleanup/support 2019-03-29 13:38:24 -07:00
AsmPrinter.cpp Introduce the notion of dialect attributes and dependent attributes. A dialect attribute derives its context from a specific dialect, whereas a dependent attribute derives context from what it is attached to. Following this, we now enforce that functions and function arguments may only contain dialect specific attributes. These are generic entities and cannot provide any specific context for a dependent attribute. 2019-03-29 16:55:05 -07:00
AttributeDetail.h Add a new class NamedAttributeList to deduplicate named attribute handling between Function and Instruction. 2019-03-29 16:45:40 -07:00
Attributes.cpp Add support for named function argument attributes. The attribute dictionary is printed after the argument type: 2019-03-29 16:50:15 -07:00
Block.cpp Remove the restriction that only registered terminator operations may terminate a block and have block operands. This allows for any operation to hold block operands. It also introduces the notion that unregistered operations may terminate a block. As such, the 'isTerminator' api on Instruction has been split into 'isKnownTerminator' and 'isKnownNonTerminator'. 2019-03-29 16:22:23 -07:00
Builders.cpp Add an assertion on the builder to ensure that a block is set before creating an operation 2019-03-29 16:54:35 -07:00
Dialect.cpp Validate the names of attribute, dialect, and functions during verification. This essentially enforces the parsing rules upon their names. 2019-03-29 16:44:53 -07:00
Function.cpp Supporting conversion of argument attributes along their types. 2019-03-29 16:55:51 -07:00
Instruction.cpp NFC. Move all of the remaining operations left in BuiltinOps to StandardOps. The only thing left in BuiltinOps are the core MLIR types. The standard types can't be moved because they are referenced within the IR directory, e.g. in things like Builder. 2019-03-29 16:53:35 -07:00
IntegerSet.cpp Introduce Fourier-Motzkin variable elimination + other cleanup/support 2019-03-29 13:38:24 -07:00
IntegerSetDetail.h Introduce Fourier-Motzkin variable elimination + other cleanup/support 2019-03-29 13:38:24 -07:00
Location.cpp Support NameLoc and CallSiteLoc for mlir::Location 2019-03-29 14:37:34 -07:00
LocationDetail.h Support NameLoc and CallSiteLoc for mlir::Location 2019-03-29 14:37:34 -07:00
MLIRContext.cpp NFC. Move all of the remaining operations left in BuiltinOps to StandardOps. The only thing left in BuiltinOps are the core MLIR types. The standard types can't be moved because they are referenced within the IR directory, e.g. in things like Builder. 2019-03-29 16:53:35 -07:00
Module.cpp Implement initial support for function attributes, including parser, printer, 2019-03-29 13:02:44 -07:00
Operation.cpp Remove the restriction that only registered terminator operations may terminate a block and have block operands. This allows for any operation to hold block operands. It also introduces the notion that unregistered operations may terminate a block. As such, the 'isTerminator' api on Instruction has been split into 'isKnownTerminator' and 'isKnownNonTerminator'. 2019-03-29 16:22:23 -07:00
PatternMatch.cpp Remove remaining references to OperationInst in all directories except for lib/Transforms. 2019-03-29 16:10:38 -07:00
StandardTypes.cpp Make IndexType a standard type instead of a builtin. This also cleans up some unnecessary factory methods on the Type class. 2019-03-29 16:25:38 -07:00
TypeDetail.h Migrate VectorOrTensorType/MemRefType shape api to use int64_t instead of int. 2019-03-29 15:33:20 -07:00
Types.cpp Validate the names of attribute, dialect, and functions during verification. This essentially enforces the parsing rules upon their names. 2019-03-29 16:44:53 -07:00
Value.cpp Begin the process of fully removing OperationInst. This patch cleans up references to OperationInst in the /include, /AffineOps, and lib/Analysis. 2019-03-29 16:09:36 -07:00