[PATCH] D47099: Disable casting of alloca for ActiveFlag

John McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Sat May 19 14:16:48 PDT 2018


rjmccall added a comment.

In https://reviews.llvm.org/D47099#1105574, @yaxunl wrote:

> In https://reviews.llvm.org/D47099#1105493, @rjmccall wrote:
>
> > Maybe there should just be a method that makes a primitive alloca without the casting, and then you can call that in CreateTempAlloca.
>
>
> In many cases we still need to call CreateTempAlloca with cast enabled, since we are not certain there is only load from it and store to it. Any time it is stored to another memory location or passed to another function (e.g. constructor/destructor), it needs to be a pointer to  the language's default address space since the language sees it that way.


Yes, I understand that.  But there are some cases, like this, that do not need to produce something in `LangAS::Default`, and extracting out a method that just does an `alloca` without the unnecessary cast seems sensible.

> An alternative fix would be just let ActiveFlag to be llvm::Value instead of llvm::AllocaInst, since it does not really need to be an AllocaInst.

I don't care at all about the type of `ActiveFlag`, but if we can generate better code at -O0 by avoiding the casts in situations where we obviously don't need them, we should do it.


https://reviews.llvm.org/D47099





More information about the cfe-commits mailing list