Files
revng-revng/lib/mlir/Dialect/Clift/IR/Clift.cpp
Alessandro Di Federico 143c315196 Merge revng-c into revng
2024-11-21 10:50:55 +01:00

42 lines
1.2 KiB
C++

//
// This file is distributed under the MIT License. See LICENSE.md for details.
//
#include "mlir/IR/DialectImplementation.h"
#include "mlir/IR/OpImplementation.h"
#include "revng/mlir/Dialect/Clift/IR/Clift.h"
#include "revng/mlir/Dialect/Clift/IR/CliftTypes.h"
// comment to force generated files to be included be after regular includes
#include "revng/mlir/Dialect/Clift/IR/CliftOpsDialect.cpp.inc"
class TypeAliasASMInterface : public mlir::OpAsmDialectInterface {
public:
using mlir::OpAsmDialectInterface::OpAsmDialectInterface;
AliasResult getAlias(mlir::Attribute Attr,
llvm::raw_ostream &OS) const final {
if (auto Aliasable = mlir::dyn_cast<mlir::clift::AliasableAttr>(Attr)) {
if (Aliasable.getAlias(OS))
return AliasResult::FinalAlias;
}
return AliasResult::NoAlias;
}
AliasResult getAlias(mlir::Type Type, llvm::raw_ostream &OS) const final {
if (auto Aliasable = mlir::dyn_cast<mlir::clift::AliasableType>(Type)) {
if (Aliasable.getAlias(OS))
return AliasResult::FinalAlias;
}
return AliasResult::NoAlias;
}
};
void mlir::clift::CliftDialect::initialize() {
registerTypes();
registerOperations();
registerAttributes();
addInterfaces<TypeAliasASMInterface>();
}