mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +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 {
|
namespace llvm {
|
||||||
class FunctionPass;
|
class FunctionPass;
|
||||||
class ImmutablePass;
|
class ImmutablePass;
|
||||||
|
class LoopPass;
|
||||||
class ModulePass;
|
class ModulePass;
|
||||||
class Pass;
|
class Pass;
|
||||||
class LibCallInfo;
|
class LibCallInfo;
|
||||||
@ -117,6 +118,13 @@ namespace llvm {
|
|||||||
//
|
//
|
||||||
FunctionPass *createLiveValuesPass();
|
FunctionPass *createLiveValuesPass();
|
||||||
|
|
||||||
|
//===--------------------------------------------------------------------===//
|
||||||
|
//
|
||||||
|
// createLoopDependenceAnalysisPass - This creates an instance of the
|
||||||
|
// LoopDependenceAnalysis pass.
|
||||||
|
//
|
||||||
|
LoopPass *createLoopDependenceAnalysisPass();
|
||||||
|
|
||||||
// Minor pass prototypes, allowing us to expose them through bugpoint and
|
// Minor pass prototypes, allowing us to expose them through bugpoint and
|
||||||
// analyze.
|
// analyze.
|
||||||
FunctionPass *createInstCountPass();
|
FunctionPass *createInstCountPass();
|
||||||
|
@ -77,6 +77,7 @@ namespace {
|
|||||||
(void) llvm::createLCSSAPass();
|
(void) llvm::createLCSSAPass();
|
||||||
(void) llvm::createLICMPass();
|
(void) llvm::createLICMPass();
|
||||||
(void) llvm::createLiveValuesPass();
|
(void) llvm::createLiveValuesPass();
|
||||||
|
(void) llvm::createLoopDependenceAnalysisPass();
|
||||||
(void) llvm::createLoopExtractorPass();
|
(void) llvm::createLoopExtractorPass();
|
||||||
(void) llvm::createLoopSimplifyPass();
|
(void) llvm::createLoopSimplifyPass();
|
||||||
(void) llvm::createLoopStrengthReducePass();
|
(void) llvm::createLoopStrengthReducePass();
|
||||||
|
@ -18,6 +18,7 @@ add_llvm_library(LLVMAnalysis
|
|||||||
LibCallAliasAnalysis.cpp
|
LibCallAliasAnalysis.cpp
|
||||||
LibCallSemantics.cpp
|
LibCallSemantics.cpp
|
||||||
LiveValues.cpp
|
LiveValues.cpp
|
||||||
|
LoopDependenceAnalysis.cpp
|
||||||
LoopInfo.cpp
|
LoopInfo.cpp
|
||||||
LoopPass.cpp
|
LoopPass.cpp
|
||||||
LoopVR.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