Hi,
I’m attempting to do some alias analysis & other memory inspection. I’ve written a pointless AliasAnalysis pass (that says everything must alias) to attempt to verify that my pass is getting picked up & run by opt.
I run opt with: opt -load ~/Applications/llvm/lib/MustAA.so -must-aa -aa-eval -debug < trace0.ll
I see my pass being initialized, but never being called (I see only may alias results).
Any ideas as to what to do to debug this? Or what I’m missing? I’ve read through http://llvm.org/docs/AliasAnalysis.html and don’t see anything that I’m missing.
Thanks,
Matthew
P.S. Here’s the full source code of my pass:
#define DEBUG_TYPE “must-aa”
#include “llvm/Pass.h”
#include “llvm/Analysis/AliasAnalysis.h”
#include “llvm/Support/raw_ostream.h”
#include “llvm/Support/Debug.h”
using namespace llvm;
namespace {
struct EverythingMustAlias : public ImmutablePass, public AliasAnalysis {
static char ID;
EverythingMustAlias() : ImmutablePass(ID) {}
virtual void initializePass() {
DEBUG(dbgs() << “Initializing everything-must-alias\n”);
InitializeAliasAnalysis(this);
}
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AliasAnalysis::getAnalysisUsage(AU);
AU.setPreservesAll();
}
virtual AliasResult alias(const Location &LocA, const Location &LocB) {
DEBUG(dbgs() << “Everything must alias!\n”);
return AliasAnalysis::MustAlias;
}
};
}
namespace llvm {
void initializeEverythingMustAliasPass(PassRegistry &Registry);
}
char EverythingMustAlias::ID = 0;
static RegisterPass A(“must-aa”, “Everything must alias”);
INITIALIZE_AG_PASS(EverythingMustAlias, AliasAnalysis, “must-aa”,
“Everything must alias”, false, true, false)