gollvm: sync with LLVM DISubprogram flags change

As of r347239, DIBuilder::createFunction takes DISubprogram flags
in bit fields instead of individual booleans.

Change-Id: I7ab72f9b307743d0fc65f4a87018fbaacaaf98be
Reviewed-on: https://go-review.googlesource.com/c/150837
Reviewed-by: Than McIntosh <thanm@google.com>
diff --git a/bridge/go-llvm-dibuildhelper.cpp b/bridge/go-llvm-dibuildhelper.cpp
index 00f64b2..777b8d9 100644
--- a/bridge/go-llvm-dibuildhelper.cpp
+++ b/bridge/go-llvm-dibuildhelper.cpp
@@ -112,14 +112,17 @@
   // Now the function entry itself
   unsigned fcnLine = linemap()->location_line(function->location());
   bool isLocalToUnit = !function->function()->hasExternalLinkage();
-  bool isDefinition = true;
   unsigned scopeLine = fcnLine; // FIXME -- determine correct value here
   llvm::DIFile *difile = diFileFromLocation(function->location());
+  llvm::DINode::DIFlags flags = llvm::DINode::FlagZero;
+  llvm::DISubprogram::DISPFlags spflags = llvm::DISubprogram::SPFlagDefinition;
+  if (isLocalToUnit)
+    spflags |= llvm::DISubprogram::SPFlagLocalToUnit;
   auto difunc =
       dibuilder().createFunction(moduleScope(), function->name(),
                                  isLocalToUnit ? "" : function->asmName(),
-                                 difile, fcnLine, dst, isLocalToUnit,
-                                 isDefinition, scopeLine);
+                                 difile, fcnLine, dst, scopeLine, flags,
+                                 spflags);
   pushDIScope(difunc);
 }