Change CGDebugInfo::setLocation to just ignore invalid locations. This
simplifies clients.

Also, add assert that RegionStack is empty when the CGDebugInfo is
destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@57684 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp
index 240343d..f326be2 100644
--- a/lib/CodeGen/CGDebugInfo.cpp
+++ b/lib/CodeGen/CGDebugInfo.cpp
@@ -59,6 +59,8 @@
 
 CGDebugInfo::~CGDebugInfo()
 {
+  assert(RegionStack.empty() && "Region stack mismatch, stack not empty!");
+
   delete SR;
 
   // Free CompileUnitCache.
@@ -111,7 +113,8 @@
 }
 
 void CGDebugInfo::setLocation(SourceLocation loc) {
-  CurLoc = M->getContext().getSourceManager().getLogicalLoc(loc);
+  if (loc.isValid())
+    CurLoc = M->getContext().getSourceManager().getLogicalLoc(loc);
 }
 
 /// getCastValueFor - Return a llvm representation for a given debug information
@@ -711,6 +714,7 @@
   llvm::DebugInfoDesc *DID = RegionStack.back();
   Builder.CreateCall(RegionEndFn, getCastValueFor(DID), "");
   RegionStack.pop_back();
+  // FIXME: Should be freeing here?
 }
 
 /// EmitDeclare - Emit local variable declaration debug info.