mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-03-02 09:16:40 +00:00
ValueMapper: Only check for cycles if operands change
This is a minor optimization to only check for unresolved operands inside `mapDistinctNode()` if the operands have actually changed. This shouldn't really cause any change in behaviour. I didn't actually see a slowdown in a profile, I was just poking around nearby and saw the opportunity. llvm-svn: 243866
This commit is contained in:
parent
9ee5b983b5
commit
e9c24965a6
@ -227,13 +227,14 @@ static Metadata *mapDistinctNode(const MDNode *Node,
|
||||
assert(Node->isDistinct() && "Expected distinct node");
|
||||
|
||||
MDNode *NewMD = MDNode::replaceWithDistinct(Node->clone());
|
||||
remap(Node, NewMD, Cycles, VM, Flags, TypeMapper, Materializer);
|
||||
|
||||
// Track any cycles beneath this node.
|
||||
for (Metadata *Op : NewMD->operands())
|
||||
if (auto *Node = dyn_cast_or_null<MDNode>(Op))
|
||||
if (!Node->isResolved())
|
||||
Cycles.push_back(Node);
|
||||
// Remap the operands. If any change, track those that could be involved in
|
||||
// uniquing cycles.
|
||||
if (remap(Node, NewMD, Cycles, VM, Flags, TypeMapper, Materializer))
|
||||
for (Metadata *Op : NewMD->operands())
|
||||
if (auto *Node = dyn_cast_or_null<MDNode>(Op))
|
||||
if (!Node->isResolved())
|
||||
Cycles.push_back(Node);
|
||||
|
||||
return NewMD;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user