brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · ff2136d Raw
39 lines · cpp
1//===- IRDLSymbols.cpp - IRDL-related symbol logic --------------*- C++ -*-===//2//3// This file is licensed under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "mlir/Dialect/IRDL/IRDLSymbols.h"10#include "mlir/Dialect/IRDL/IR/IRDL.h"11 12using namespace mlir;13using namespace mlir::irdl;14 15static Operation *lookupDialectOp(Operation *source) {16  Operation *dialectOp = source;17  while (dialectOp && !isa<DialectOp>(dialectOp))18    dialectOp = dialectOp->getParentOp();19 20  if (!dialectOp)21    llvm_unreachable("symbol lookup near dialect must originate from "22                     "within a dialect definition");23 24  return dialectOp;25}26 27Operation *28mlir::irdl::lookupSymbolNearDialect(SymbolTableCollection &symbolTable,29                                    Operation *source, SymbolRefAttr symbol) {30  return symbolTable.lookupNearestSymbolFrom(31      lookupDialectOp(source)->getParentOp(), symbol);32}33 34Operation *mlir::irdl::lookupSymbolNearDialect(Operation *source,35                                               SymbolRefAttr symbol) {36  return SymbolTable::lookupNearestSymbolFrom(37      lookupDialectOp(source)->getParentOp(), symbol);38}39