diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h
index 4e7f0a0..47cecd1 100644
--- a/include/clang-c/Index.h
+++ b/include/clang-c/Index.h
@@ -240,8 +240,16 @@
 /*
  * CXCursor Operations.
  */
+/**
+   Usage: clang_getCursor() will translate a source/line/column position
+   into an AST cursor (to derive semantic information from the source code).
+   If 'RelativeToDecl' is NULL, the entire translation unit will be searched.
+   Note that searching the entire translation unit can be slow.
+   Otherwise, the "search" for the AST cursor will start at 'RelativeToDecl'.
+ */
 CXCursor clang_getCursor(CXTranslationUnit, const char *source_name, 
-                         unsigned line, unsigned column);
+                         unsigned line, unsigned column, 
+                         CXDecl RelativeToDecl);
 
 enum CXCursorKind clang_getCursorKind(CXCursor);
 unsigned clang_isDeclaration(enum CXCursorKind);
diff --git a/include/clang/Index/Utils.h b/include/clang/Index/Utils.h
index e78ef8a..36cf56d 100644
--- a/include/clang/Index/Utils.h
+++ b/include/clang/Index/Utils.h
@@ -18,7 +18,8 @@
 namespace clang {
   class ASTContext;
   class SourceLocation;
-
+  class Decl;
+  
 namespace idx {
   class ASTLocation;
 
@@ -26,7 +27,8 @@
 ///
 /// \returns the resolved ASTLocation or an invalid ASTLocation if the source
 /// location could not be resolved.
-ASTLocation ResolveLocationInAST(ASTContext &Ctx, SourceLocation Loc);
+ASTLocation ResolveLocationInAST(ASTContext &Ctx, SourceLocation Loc, 
+                                 Decl *RelativeToDecl = 0);
 
 } // end namespace idx
 
diff --git a/lib/Index/ResolveLocation.cpp b/lib/Index/ResolveLocation.cpp
index b94d48e..d3ba819 100644
--- a/lib/Index/ResolveLocation.cpp
+++ b/lib/Index/ResolveLocation.cpp
@@ -497,9 +497,12 @@
 
 /// \brief Returns the AST node that a source location points to.
 ///
-ASTLocation idx::ResolveLocationInAST(ASTContext &Ctx, SourceLocation Loc) {
+ASTLocation idx::ResolveLocationInAST(ASTContext &Ctx, SourceLocation Loc,
+                                      Decl *RelativeToDecl) {
   if (Loc.isInvalid())
     return ASTLocation();
 
+  if (RelativeToDecl)
+    return DeclLocResolver(Ctx, Loc).Visit(RelativeToDecl);    
   return DeclLocResolver(Ctx, Loc).Visit(Ctx.getTranslationUnitDecl());
 }
diff --git a/tools/CIndex/CIndex.cpp b/tools/CIndex/CIndex.cpp
index eff602f..fb6dd56 100644
--- a/tools/CIndex/CIndex.cpp
+++ b/tools/CIndex/CIndex.cpp
@@ -655,7 +655,8 @@
 // CXCursor Operations.
 //
 CXCursor clang_getCursor(CXTranslationUnit CTUnit, const char *source_name, 
-                         unsigned line, unsigned column)
+                         unsigned line, unsigned column, 
+                         CXDecl RelativeToDecl)
 {
   assert(CTUnit && "Passed null CXTranslationUnit");
   ASTUnit *CXXUnit = static_cast<ASTUnit *>(CTUnit);
@@ -670,7 +671,8 @@
   SourceLocation SLoc = 
     CXXUnit->getSourceManager().getLocation(File, line, column);
                                                                 
-  ASTLocation ALoc = ResolveLocationInAST(CXXUnit->getASTContext(), SLoc);
+  ASTLocation ALoc = ResolveLocationInAST(CXXUnit->getASTContext(), SLoc,
+                                      static_cast<NamedDecl *>(RelativeToDecl));
   
   Decl *Dcl = ALoc.getParentDecl();
   if (ALoc.isNamedRef())
diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c
index 83d3d3f..b458216 100644
--- a/tools/c-index-test/c-index-test.c
+++ b/tools/c-index-test/c-index-test.c
@@ -53,7 +53,7 @@
         unsigned curLine = startLine, curColumn = startColumn;
         CXCursor Ref;
 
-        while (startBuf <= endBuf) {
+        while (startBuf < endBuf) {
           if (*startBuf == '\n') {
             startBuf++;
             curLine++;
@@ -62,7 +62,7 @@
             curColumn++;
 
           Ref = clang_getCursor(Unit, clang_getCursorSource(Cursor),
-                                curLine, curColumn);
+                                curLine, curColumn, Cursor.decl);
           if (Ref.kind == CXCursor_NoDeclFound) {
             /* Nothing found here; that's fine. */
           } else if (Ref.kind != CXCursor_FunctionDecl) {
