summaryrefslogtreecommitdiff
path: root/flang/lib/Optimizer/Dialect/FirAliasTagOpInterface.cpp
blob: bf058c12e114737bda8f7e8409b08d5b6b6dec15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//===-- FirAliasTagOpInterface.cpp ----------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// Coding style: https://mlir.llvm.org/getting_started/DeveloperGuide/
//
//===----------------------------------------------------------------------===//

#include "flang/Optimizer/Dialect/FirAliasTagOpInterface.h"
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"

#include "flang/Optimizer/Dialect/FirAliasTagOpInterface.cpp.inc"

llvm::LogicalResult
fir::detail::verifyFirAliasTagOpInterface(mlir::Operation *op) {
  auto iface = mlir::cast<FirAliasTagOpInterface>(op);

  mlir::ArrayAttr tags = iface.getTBAATagsOrNull();
  if (!tags)
    return llvm::success();

  for (mlir::Attribute iter : tags)
    if (!mlir::isa<mlir::LLVM::TBAATagAttr>(iter))
      return op->emitOpError("expected op to return array of ")
             << mlir::LLVM::TBAATagAttr::getMnemonic() << " attributes";
  return llvm::success();
}