72 lines · cpp
1//===- TestAliasAnalysis.cpp - Test FIR lias analysis -----------------===//2//3// Part of the LLVM Project, 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/test/lib/Analysis/TestAliasAnalysis.h"10#include "mlir/Analysis/AliasAnalysis.h"11#include "mlir/Pass/Pass.h"12#include "flang/Optimizer/Analysis/AliasAnalysis.h"13 14using namespace mlir;15 16namespace {17 18//===----------------------------------------------------------------------===//19// Testing AliasResult20//===----------------------------------------------------------------------===//21 22struct TestFIRAliasAnalysisPass23 : public test::TestAliasAnalysisBase,24 PassWrapper<TestFIRAliasAnalysisPass, OperationPass<>> {25 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(TestFIRAliasAnalysisPass)26 27 StringRef getArgument() const final { return "test-fir-alias-analysis"; }28 StringRef getDescription() const final {29 return "Test alias analysis results.";30 }31 void runOnOperation() override {32 mlir::AliasAnalysis aliasAnalysis(getOperation());33 aliasAnalysis.addAnalysisImplementation(fir::AliasAnalysis());34 runAliasAnalysisOnOperation(getOperation(), aliasAnalysis);35 }36};37 38//===----------------------------------------------------------------------===//39// Testing ModRefResult40//===----------------------------------------------------------------------===//41 42struct TestFIRAliasAnalysisModRefPass43 : public test::TestAliasAnalysisModRefBase,44 PassWrapper<TestFIRAliasAnalysisModRefPass, OperationPass<>> {45 MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(TestFIRAliasAnalysisModRefPass)46 47 StringRef getArgument() const final {48 return "test-fir-alias-analysis-modref";49 }50 StringRef getDescription() const final {51 return "Test alias analysis ModRef results.";52 }53 void runOnOperation() override {54 mlir::AliasAnalysis aliasAnalysis(getOperation());55 aliasAnalysis.addAnalysisImplementation(fir::AliasAnalysis());56 runAliasAnalysisOnOperation(getOperation(), aliasAnalysis);57 }58};59} // namespace60 61//===----------------------------------------------------------------------===//62// Pass Registration63//===----------------------------------------------------------------------===//64 65namespace fir {66namespace test {67void registerTestFIRAliasAnalysisPass() {68 PassRegistration<TestFIRAliasAnalysisPass>();69 PassRegistration<TestFIRAliasAnalysisModRefPass>();70}71} // namespace test72} // namespace fir