mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-19 18:24:00 +00:00
IR: Enable uniquing callbacks during MDNode::replaceWithUniqued()
Uniqued nodes have more complete registration with `ReplaceableMetadataImpl` so that they can update themselves when operands change. Fix a bug where `MDNode::replaceWithUniqued()` wasn't enabling these callbacks. The two most obvious ways missing callbacks causes problems is that auto-resolution fails and re-uniquing (on changed operands) just doesn't happen. I've added tests for both -- in both cases, I confirmed that the final check was failing before the fix. rdar://problem/20365935 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233751 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -446,6 +446,10 @@ void MDNode::makeUniqued() {
|
||||
assert(isTemporary() && "Expected this to be temporary");
|
||||
assert(!isResolved() && "Expected this to be unresolved");
|
||||
|
||||
// Enable uniquing callbacks.
|
||||
for (auto &Op : mutable_operands())
|
||||
Op.reset(Op.get(), this);
|
||||
|
||||
// Make this 'uniqued'.
|
||||
Storage = Uniqued;
|
||||
if (!countUnresolvedOperands())
|
||||
|
Reference in New Issue
Block a user