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);
}