diff options
author | Dan Gohman <gohman@apple.com> | 2009-01-30 02:49:14 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2009-01-30 02:49:14 +0000 |
commit | 1ee0d41ef82b1030f592a22224c7188c720578db (patch) | |
tree | ad5a9847921270c012f164841512de70e1d56482 /llvm/lib/Analysis | |
parent | 091f92f568d01309bc958941493990ce434def45 (diff) | |
download | bcm5719-llvm-1ee0d41ef82b1030f592a22224c7188c720578db.tar.gz bcm5719-llvm-1ee0d41ef82b1030f592a22224c7188c720578db.zip |
Fix a post-RA scheduling dependency bug.
If a MachineInstr doesn't have a memoperand but has an opcode that
is known to load or store, assume its memory reference may alias
*anything*, including stack slots which the compiler completely
controls.
To partially compensate for this, teach the ScheduleDAG building
code to do basic getUnderlyingValue analysis. This greatly
reduces the number of instructions that require restrictive
dependencies. This code will need to be revisited when we start
doing real alias analysis, but it should suffice for now.
llvm-svn: 63370
Diffstat (limited to 'llvm/lib/Analysis')
-rw-r--r-- | llvm/lib/Analysis/BasicAliasAnalysis.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp index 82514400b82..1002868e84c 100644 --- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp +++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp @@ -80,7 +80,7 @@ static bool isNoAliasCall(const Value *V) { /// ByVal and NoAlias Arguments /// NoAlias returns /// -static bool isIdentifiedObject(const Value *V) { +bool llvm::isIdentifiedObject(const Value *V) { if (isa<GlobalValue>(V) || isa<AllocationInst>(V) || isNoAliasCall(V)) return true; if (const Argument *A = dyn_cast<Argument>(V)) |