brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 39aaf8f Raw
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