summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-01-14 01:01:19 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2015-01-14 01:01:19 +0000
commit077affdbb9c4b59f4657987d9a91dcc8427984df (patch)
tree25182ea463965e4497b28eb0b4c33ba21c9426d5 /llvm
parent34651ee2f64b53520cd0dde34c20a312e37eeee2 (diff)
downloadbcm5719-llvm-077affdbb9c4b59f4657987d9a91dcc8427984df.tar.gz
bcm5719-llvm-077affdbb9c4b59f4657987d9a91dcc8427984df.zip
Utils: Extract helper function, NFC
llvm-svn: 225897
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Transforms/Utils/ValueMapper.cpp42
1 files changed, 27 insertions, 15 deletions
diff --git a/llvm/lib/Transforms/Utils/ValueMapper.cpp b/llvm/lib/Transforms/Utils/ValueMapper.cpp
index aefb7664bfc..0e7bcfd236e 100644
--- a/llvm/lib/Transforms/Utils/ValueMapper.cpp
+++ b/llvm/lib/Transforms/Utils/ValueMapper.cpp
@@ -157,6 +157,32 @@ static Metadata *mapToSelf(ValueToValueMapTy &VM, const Metadata *MD) {
static Metadata *MapMetadataImpl(const Metadata *MD, ValueToValueMapTy &VM,
RemapFlags Flags,
ValueMapTypeRemapper *TypeMapper,
+ ValueMaterializer *Materializer);
+
+static Metadata *mapMetadataOp(Metadata *Op, ValueToValueMapTy &VM,
+ RemapFlags Flags,
+ ValueMapTypeRemapper *TypeMapper,
+ ValueMaterializer *Materializer) {
+ if (!Op)
+ return nullptr;
+ if (Metadata *MappedOp =
+ MapMetadataImpl(Op, VM, Flags, TypeMapper, Materializer))
+ return MappedOp;
+ // Use identity map if MappedOp is null and we can ignore missing entries.
+ if (Flags & RF_IgnoreMissingEntries)
+ return Op;
+
+ // FIXME: This assert crashes during bootstrap, but I think it should be
+ // correct. For now, just match behaviour from before the metadata/value
+ // split.
+ //
+ // llvm_unreachable("Referenced metadata not in value map!");
+ return nullptr;
+}
+
+static Metadata *MapMetadataImpl(const Metadata *MD, ValueToValueMapTy &VM,
+ RemapFlags Flags,
+ ValueMapTypeRemapper *TypeMapper,
ValueMaterializer *Materializer) {
// If the value already exists in the map, use it.
if (Metadata *NewMD = VM.MD().lookup(MD).get())
@@ -190,21 +216,7 @@ static Metadata *MapMetadataImpl(const Metadata *MD, ValueToValueMapTy &VM,
assert(Node->isResolved() && "Unexpected unresolved node");
auto getMappedOp = [&](Metadata *Op) -> Metadata *{
- if (!Op)
- return nullptr;
- if (Metadata *MappedOp =
- MapMetadataImpl(Op, VM, Flags, TypeMapper, Materializer))
- return MappedOp;
- // Use identity map if MappedOp is null and we can ignore missing entries.
- if (Flags & RF_IgnoreMissingEntries)
- return Op;
-
- // FIXME: This assert crashes during bootstrap, but I think it should be
- // correct. For now, just match behaviour from before the metadata/value
- // split.
- //
- // llvm_unreachable("Referenced metadata not in value map!");
- return nullptr;
+ return mapMetadataOp(Op, VM, Flags, TypeMapper, Materializer);
};
// If this is a module-level metadata and we know that nothing at the
OpenPOWER on IntegriCloud