[PATCH] ADT: Remove misaligned pointeres from DenseMapInfo
Duncan P. N. Exon Smith
dexonsmith at apple.com
Thu Jan 8 13:22:01 PST 2015
> On 2015-Jan-08, at 12:05, Alexey Samsonov <vonosmas at gmail.com> wrote:
>
> Ping.
>
> On Fri, Jan 2, 2015 at 6:41 PM, Alexey Samsonov <vonosmas at gmail.com> wrote:
> So, what do you think will be the correct resolution for this?
I'm a little lost. Your patch modifies behaviour for `DenseMap<T*>`, but
you're talking about ubsan problems with `DenseMap<AssertingVH<T>>`.
It sounds like there's undefined behaviour in `DenseMapInfo<AssertingVH<T>>`
so the right fix is in there somewhere, but I'm not following what the
actual cause of UB is. (Sorry if you spelled it out and I missed it.)
> On Mon, Dec 29, 2014 at 5:45 PM, Alexey Samsonov <vonosmas at gmail.com> wrote:
> On Mon, Dec 29, 2014 at 5:41 PM, Chandler Carruth <chandlerc at gmail.com> wrote:
>
> On Mon, Dec 29, 2014 at 5:33 PM, Alexey Samsonov <vonosmas at gmail.com> wrote:
> Casing (int*) to (float*) doesn't dereference a pointer. However, upcast/downcast (in general case) does dereference a pointer - you may need to read vtable and adjust the pointer value accordingly.
>
> I see, so the problem is we're up casting or down casting? I suspect such casts can be avoided? We should only be casting between integers and a single pointer type in the dense map stuff...
>
> If we have smth. like DenseMap<AssertingVH<T>, Foo> (or other ValueHandle kinds), we would cast empty/tombstone keys (i.e. fake pointers) for T* to Value*.
>
> --
> Alexey Samsonov
> vonosmas at gmail.com
>
>
>
> --
> Alexey Samsonov
> vonosmas at gmail.com
>
>
>
> --
> Alexey Samsonov
> vonosmas at gmail.com
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list