Add a comment explaining why this code is more complex than it
authorDan Gohman <gohman@apple.com>
Tue, 24 Aug 2010 14:31:06 +0000 (14:31 +0000)
committerDan Gohman <gohman@apple.com>
Tue, 24 Aug 2010 14:31:06 +0000 (14:31 +0000)
initially seems it should require.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111913 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AsmParser/LLParser.h

index 444bae2390eda1ee09eea63623cea02036357915..5ac7337b136c8e7dfe5f614671649963de42fae3 100644 (file)
@@ -80,6 +80,14 @@ namespace llvm {
     
     // Instruction metadata resolution.  Each instruction can have a list of
     // MDRef info associated with them.
+    //
+    // The simpler approach of just creating temporary MDNodes and then calling
+    // RAUW on them when the definition is processed doesn't work because some
+    // instruction metadata kinds, such as dbg, get stored in the IR in an
+    // "optimized" format which doesn't participate in the normal value use
+    // lists. This means that RAUW doesn't work, even on temporary MDNodes
+    // which otherwise support RAUW. Instead, we defer resolving MDNode
+    // references until the definitions have been processed.
     struct MDRef {
       SMLoc Loc;
       unsigned MDKind, MDSlot;