[utils/ClangDataFormat.py] For invalid source locations just return
"<invalid loc>" for summary.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@168087 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/ClangDataFormat.py b/utils/ClangDataFormat.py
index bde3811..23aaba2 100644
--- a/utils/ClangDataFormat.py
+++ b/utils/ClangDataFormat.py
@@ -34,10 +34,14 @@
 class SourceLocation(object):
 	def __init__(self, srcloc):
 		self.srcloc = srcloc
+		self.ID = srcloc.GetChildAtIndex(0).GetValueAsUnsigned()
 	
 	def offset(self):
 		return getValueFromExpression(self.srcloc, ".getOffset()").GetValueAsUnsigned()
 
+	def isInvalid(self):
+		return self.ID == 0
+
 	def isMacro(self):
 		return getValueFromExpression(self.srcloc, ".isMacroID()").GetValueAsUnsigned()
 
@@ -49,6 +53,8 @@
 		return print_str.GetSummary()
 
 	def summary(self):
+		if self.isInvalid():
+			return "<invalid loc>"
 		desc = "(offset: %d, %s)" % (self.offset(), "macro" if self.isMacro() else "file")
 		srcmgr_path = findObjectExpressionPath("clang::SourceManager", lldb.frame)
 		if srcmgr_path: