DebugInfo: Change DIBuilder to make distinct DIGlobalVariables

A long overdue change to make DIGlobalVariable distinct.  Much like
DISubprogram definitions (changed in r246098), it isn't logical to
unique DIGlobalVariable definitions from two different compile units.

(Longer-term, we should also find a way to reverse the link between
GlobalVariable and DIGlobalVariable, and between DIGlobalVariable and
DICompileUnit, so that debug info to do with optimized-out globals
disappears.  Admittedly it's harder than with Function/DISubprogram,
since global variables may be constant-folded and the debug info should
still describe that somehow.)

llvm-svn: 267301
This commit is contained in:
Duncan P. N. Exon Smith 2016-04-23 22:29:09 +00:00
parent 4652c59568
commit c5225dfbea
1 changed files with 4 additions and 4 deletions

View File

@ -560,10 +560,10 @@ DIGlobalVariable *DIBuilder::createGlobalVariable(
MDNode *Decl) {
checkGlobalVariableScope(Context);
auto *N =
DIGlobalVariable::get(VMContext, cast_or_null<DIScope>(Context), Name,
LinkageName, F, LineNumber, Ty, isLocalToUnit, true,
Val, cast_or_null<DIDerivedType>(Decl));
auto *N = DIGlobalVariable::getDistinct(
VMContext, cast_or_null<DIScope>(Context), Name, LinkageName, F,
LineNumber, Ty, isLocalToUnit, true, Val,
cast_or_null<DIDerivedType>(Decl));
AllGVs.push_back(N);
return N;
}