From 675e527ab856409294cccc0641ffc7f981fdd5e1 Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Thu, 15 May 2014 20:09:55 +0000 Subject: DebugInfo: Add FIXME regarding DILexicalBlock uniquing fields. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@208909 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/IR/DIBuilder.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/IR/DIBuilder.cpp b/lib/IR/DIBuilder.cpp index 48edc9a9b5..92edacc04a 100644 --- a/lib/IR/DIBuilder.cpp +++ b/lib/IR/DIBuilder.cpp @@ -1226,6 +1226,13 @@ DILexicalBlockFile DIBuilder::createLexicalBlockFile(DIDescriptor Scope, DILexicalBlock DIBuilder::createLexicalBlock(DIDescriptor Scope, DIFile File, unsigned Line, unsigned Col, unsigned Discriminator) { + // FIXME: This isn't thread safe nor the right way to defeat MDNode uniquing. + // I believe the right way is to have a self-referential element in the node. + // Also: why do we bother with line/column - they're not used and the + // documentation (SourceLevelDebugging.rst) claims the line/col are necessary + // for uniquing, yet then we have this other solution (because line/col were + // inadequate) anyway. Remove all 3 and replace them with a self-reference. + // Defeat MDNode uniquing for lexical blocks by using unique id. static unsigned int unique_id = 0; Value *Elts[] = { -- cgit v1.2.3