mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-12 06:06:32 +00:00
Scaffolding for LDA pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74120 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5e98cb7088
commit
cb21010fa0
52
include/llvm/Analysis/LoopDependenceAnalysis.h
Normal file
52
include/llvm/Analysis/LoopDependenceAnalysis.h
Normal file
@ -0,0 +1,52 @@
|
||||
//===- llvm/Analysis/LoopDependenceAnalysis.h --------------- -*- C++ -*---===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// LoopDependenceAnalysis is an LLVM pass that analyses dependences in memory
|
||||
// accesses in loops.
|
||||
//
|
||||
// Please note that this is work in progress and the interface is subject to
|
||||
// change.
|
||||
//
|
||||
// TODO: adapt as interface progresses
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_ANALYSIS_LOOP_DEPENDENCE_ANALYSIS_H
|
||||
#define LLVM_ANALYSIS_LOOP_DEPENDENCE_ANALYSIS_H
|
||||
|
||||
#include "llvm/Analysis/LoopPass.h"
|
||||
|
||||
namespace llvm {
|
||||
|
||||
class AnalysisUsage;
|
||||
class LoopPass;
|
||||
class ScalarEvolution;
|
||||
|
||||
class LoopDependenceAnalysis : public LoopPass {
|
||||
Loop *L;
|
||||
ScalarEvolution *SE;
|
||||
|
||||
public:
|
||||
static char ID; // Class identification, replacement for typeinfo
|
||||
LoopDependenceAnalysis() : LoopPass(&ID) {}
|
||||
|
||||
bool runOnLoop(Loop*, LPPassManager&);
|
||||
|
||||
virtual void getAnalysisUsage(AnalysisUsage&) const;
|
||||
}; // class LoopDependenceAnalysis
|
||||
|
||||
|
||||
// createLoopDependenceAnalysisPass - This creates an instance of the
|
||||
// LoopDependenceAnalysis pass.
|
||||
//
|
||||
LoopPass *createLoopDependenceAnalysisPass();
|
||||
|
||||
} // namespace llvm
|
||||
|
||||
#endif /* LLVM_ANALYSIS_LOOP_DEPENDENCE_ANALYSIS_H */
|
@ -18,6 +18,7 @@
|
||||
namespace llvm {
|
||||
class FunctionPass;
|
||||
class ImmutablePass;
|
||||
class LoopPass;
|
||||
class ModulePass;
|
||||
class Pass;
|
||||
class LibCallInfo;
|
||||
@ -116,6 +117,13 @@ namespace llvm {
|
||||
// createLiveValuesPass - This creates an instance of the LiveValues pass.
|
||||
//
|
||||
FunctionPass *createLiveValuesPass();
|
||||
|
||||
//===--------------------------------------------------------------------===//
|
||||
//
|
||||
// createLoopDependenceAnalysisPass - This creates an instance of the
|
||||
// LoopDependenceAnalysis pass.
|
||||
//
|
||||
LoopPass *createLoopDependenceAnalysisPass();
|
||||
|
||||
// Minor pass prototypes, allowing us to expose them through bugpoint and
|
||||
// analyze.
|
||||
|
@ -77,6 +77,7 @@ namespace {
|
||||
(void) llvm::createLCSSAPass();
|
||||
(void) llvm::createLICMPass();
|
||||
(void) llvm::createLiveValuesPass();
|
||||
(void) llvm::createLoopDependenceAnalysisPass();
|
||||
(void) llvm::createLoopExtractorPass();
|
||||
(void) llvm::createLoopSimplifyPass();
|
||||
(void) llvm::createLoopStrengthReducePass();
|
||||
|
@ -18,6 +18,7 @@ add_llvm_library(LLVMAnalysis
|
||||
LibCallAliasAnalysis.cpp
|
||||
LibCallSemantics.cpp
|
||||
LiveValues.cpp
|
||||
LoopDependenceAnalysis.cpp
|
||||
LoopInfo.cpp
|
||||
LoopPass.cpp
|
||||
LoopVR.cpp
|
||||
|
47
lib/Analysis/LoopDependenceAnalysis.cpp
Normal file
47
lib/Analysis/LoopDependenceAnalysis.cpp
Normal file
@ -0,0 +1,47 @@
|
||||
//===- LoopDependenceAnalysis.cpp - LDA Implementation ----------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This is the (beginning) of an implementation of a loop dependence analysis
|
||||
// framework, which is used to detect dependences in memory accesses in loops.
|
||||
//
|
||||
// Please note that this is work in progress and the interface is subject to
|
||||
// change.
|
||||
//
|
||||
// TODO: adapt as implementation progresses.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#define DEBUG_TYPE "lda"
|
||||
#include "llvm/Analysis/LoopDependenceAnalysis.h"
|
||||
#include "llvm/Analysis/LoopPass.h"
|
||||
#include "llvm/Analysis/ScalarEvolution.h"
|
||||
using namespace llvm;
|
||||
|
||||
LoopPass *llvm::createLoopDependenceAnalysisPass() {
|
||||
return new LoopDependenceAnalysis();
|
||||
}
|
||||
|
||||
static RegisterPass<LoopDependenceAnalysis>
|
||||
R("lda", "Loop Dependence Analysis", false, true);
|
||||
char LoopDependenceAnalysis::ID = 0;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// LoopDependenceAnalysis Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
bool LoopDependenceAnalysis::runOnLoop(Loop *L, LPPassManager &) {
|
||||
this->L = L;
|
||||
SE = &getAnalysis<ScalarEvolution>();
|
||||
return false;
|
||||
}
|
||||
|
||||
void LoopDependenceAnalysis::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.setPreservesAll();
|
||||
AU.addRequired<ScalarEvolution>();
|
||||
}
|
Loading…
Reference in New Issue
Block a user