[llvm-dev] DenseMap/ValueMap: is M[New]=M[Old] valid ?

David Blaikie via llvm-dev
Thu, 26 Sep 2019 21:51:05 -0000

Yep - You'd have to separate them for correctness if "NewKey"
might not
already be in "M".

On Thu, Sep 26, 2019 at 2:48 PM Jeroen Dobbelaere via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi,
>
> I have a question about llvm/ADT/DenseMap.h and llvm/IR/ValueMap.h:
>
> When you have a:
>      MapType M;
>
> is it safe to do:
>     M[NewKey] = M[OldKey];
>
> or do you need to do it in two steps:
>    auto tmp = M[OldKey]; // ensure the reference to M[OldKey] is copied,
> before reassigning.
>    M[NewKey] = tmp;      // might reallocate
>
> aka, will a possible allocation for M[NewKey] invalidate the reference
> that M[OldKey] returns ?
>
> Greetings,
>
> Jeroen Dobbelaere
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20190926/3b990f01/attachment.html>