diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2016-01-13 19:58:01 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2016-01-13 19:58:01 +0000 | 
| commit | 050e163ae8b4bb6eb252b59e2f8f36e68ae9239d (patch) | |
| tree | 7376a0c71aad05d327e5b1dcbceb3311a10f9f29 /lib/Transforms/Utils/ValueMapper.cpp | |
| parent | 8a6c1c25bce0267ee4072bd7b786b921e8a66a35 (diff) | |
Notes
Diffstat (limited to 'lib/Transforms/Utils/ValueMapper.cpp')
| -rw-r--r-- | lib/Transforms/Utils/ValueMapper.cpp | 13 | 
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/Transforms/Utils/ValueMapper.cpp b/lib/Transforms/Utils/ValueMapper.cpp index 2e361d38ed0b6..f47ddb9f064f5 100644 --- a/lib/Transforms/Utils/ValueMapper.cpp +++ b/lib/Transforms/Utils/ValueMapper.cpp @@ -222,8 +222,17 @@ static void resolveCycles(Metadata *MD, bool AllowTemps) {    if (auto *N = dyn_cast_or_null<MDNode>(MD)) {      if (AllowTemps && N->isTemporary())        return; -    if (!N->isResolved()) -      N->resolveCycles(AllowTemps); +    if (!N->isResolved()) { +      if (AllowTemps) +        // Note that this will drop RAUW support on any temporaries, which +        // blocks uniquing. If this ends up being an issue, in the future +        // we can experiment with delaying resolving these nodes until +        // after metadata is fully materialized (i.e. when linking metadata +        // as a postpass after function importing). +        N->resolveNonTemporaries(); +      else +        N->resolveCycles(); +    }    }  }  | 
