brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 679b29b Raw
57 lines · cpp
1//===- ACCInitializeFIRAnalyses.cpp - Initialize FIR analyses ------------===//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// This pass initializes analyses that can be reused by subsequent OpenACC10// passes in the pipeline.11//12//===----------------------------------------------------------------------===//13 14#include "flang/Optimizer/Analysis/AliasAnalysis.h"15#include "flang/Optimizer/OpenACC/Analysis/FIROpenACCSupportAnalysis.h"16#include "flang/Optimizer/OpenACC/Passes.h"17#include "mlir/Analysis/AliasAnalysis.h"18#include "mlir/Dialect/OpenACC/Analysis/OpenACCSupport.h"19 20namespace fir {21namespace acc {22#define GEN_PASS_DEF_ACCINITIALIZEFIRANALYSES23#include "flang/Optimizer/OpenACC/Passes.h.inc"24} // namespace acc25} // namespace fir26 27#define DEBUG_TYPE "acc-initialize-fir-analyses"28 29namespace {30 31/// This pass initializes analyses for reuse by subsequent OpenACC passes in the32/// pipeline. It creates and caches analyses like OpenACCSupport so they can be33/// retrieved by later passes using getAnalysis() or getCachedAnalysis().34class ACCInitializeFIRAnalysesPass35    : public fir::acc::impl::ACCInitializeFIRAnalysesBase<36          ACCInitializeFIRAnalysesPass> {37public:38  void runOnOperation() override {39    // Initialize OpenACCSupport with FIR-specific implementation.40    auto &openACCSupport = getAnalysis<mlir::acc::OpenACCSupport>();41    openACCSupport.setImplementation(fir::acc::FIROpenACCSupportAnalysis());42 43    // Initialize AliasAnalysis with FIR-specific implementation.44    auto &aliasAnalysis = getAnalysis<mlir::AliasAnalysis>();45    aliasAnalysis.addAnalysisImplementation(fir::AliasAnalysis());46 47    // Mark all analyses as preserved since this pass only initializes them48    markAllAnalysesPreserved();49  }50};51 52} // namespace53 54std::unique_ptr<mlir::Pass> fir::acc::createACCInitializeFIRAnalysesPass() {55  return std::make_unique<ACCInitializeFIRAnalysesPass>();56}57