diff --git a/lib/CodeGen/MachineFunction.cpp b/lib/CodeGen/MachineFunction.cpp
index cacfed1..d1d782c 100644
--- a/lib/CodeGen/MachineFunction.cpp
+++ b/lib/CodeGen/MachineFunction.cpp
@@ -403,8 +403,9 @@
 /// source file, line, and column. If none currently exists, create a new
 /// DebugLocTuple, and insert it into the DebugIdMap.
 unsigned MachineFunction::getOrCreateDebugLocID(GlobalVariable *CompileUnit,
+                                                DebugScope Scope,
                                                 unsigned Line, unsigned Col) {
-  DebugLocTuple Tuple(CompileUnit, Line, Col);
+  DebugLocTuple Tuple(CompileUnit, Scope, Line, Col);
   DenseMap<DebugLocTuple, unsigned>::iterator II
     = DebugLocInfo.DebugIdMap.find(Tuple);
   if (II != DebugLocInfo.DebugIdMap.end())
@@ -424,6 +425,21 @@
   return DebugLocInfo.DebugLocations[Idx];
 }
 
+/// CreateDebugScope - Create a new debug scope.
+DebugScope MachineFunction::CreateDebugScope(GlobalVariable *ScopeGV,
+                                             DebugScope Parent) {
+  DbgScopeInfos.push_back(DebugScopeInfo(ScopeGV, Parent));
+  return DebugScope::get(DbgScopeInfos.size() - 1);
+}
+
+/// getDebugScopeInfo - Get the DebugScopeInfo for a given DebugScope object.
+const DebugScopeInfo &MachineFunction::getDebugScopeInfo(DebugScope DS) const {
+  unsigned Idx = DS.getIndex();
+  assert(Idx < DbgScopeInfos.size() && "Invalid index into debug scopes!");
+  return DbgScopeInfos[Idx];
+}
+
+
 //===----------------------------------------------------------------------===//
 //  MachineFrameInfo implementation
 //===----------------------------------------------------------------------===//
