diff --git a/lib/Analysis/BasicAliasAnalysis.cpp b/lib/Analysis/BasicAliasAnalysis.cpp
index 597e34b..354e66d 100644
--- a/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/lib/Analysis/BasicAliasAnalysis.cpp
@@ -172,8 +172,10 @@
     }
 
     virtual DependenceResult getDependence(const Instruction *First,
+                                           const Value *FirstPHITranslatedAddr,
                                            DependenceQueryFlags FirstFlags,
                                            const Instruction *Second,
+                                           const Value *SecondPHITranslatedAddr,
                                            DependenceQueryFlags SecondFlags) {
       return Unknown;
     }
@@ -531,8 +533,10 @@
     virtual ModRefBehavior getModRefBehavior(const Function *F);
 
     virtual DependenceResult getDependence(const Instruction *First,
+                                           const Value *FirstPHITranslatedAddr,
                                            DependenceQueryFlags FirstFlags,
                                            const Instruction *Second,
+                                           const Value *SecondPHITranslatedAddr,
                                            DependenceQueryFlags SecondFlags);
 
     /// getAdjustedAnalysisPointer - This method is used when a pass implements
@@ -748,11 +752,14 @@
 
 AliasAnalysis::DependenceResult
 BasicAliasAnalysis::getDependence(const Instruction *First,
+                                  const Value *FirstPHITranslatedAddr,
                                   DependenceQueryFlags FirstFlags,
                                   const Instruction *Second,
+                                  const Value *SecondPHITranslatedAddr,
                                   DependenceQueryFlags SecondFlags) {
   // We don't have anything special to say yet.
-  return getDependenceViaModRefInfo(First, FirstFlags, Second, SecondFlags);
+  return getDependenceViaModRefInfo(First, FirstPHITranslatedAddr, FirstFlags,
+                                    Second, SecondPHITranslatedAddr, SecondFlags);
 }
 
 /// aliasGEP - Provide a bunch of ad-hoc rules to disambiguate a GEP instruction
