Add a comment explaining why this code is more complex than it

initially seems it should require.

llvm-svn: 111913
This commit is contained in:
Dan Gohman 2010-08-24 14:31:06 +00:00
parent 1be8a5f947
commit 979850aeb6

View 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;