From 1ee0d41ef82b1030f592a22224c7188c720578db Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Fri, 30 Jan 2009 02:49:14 +0000 Subject: 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 --- llvm/lib/Analysis/BasicAliasAnalysis.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'llvm/lib/Analysis') 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(V) || isa(V) || isNoAliasCall(V)) return true; if (const Argument *A = dyn_cast(V)) -- cgit v1.2.3