[cfe-commits] r59232 - /cfe/trunk/lib/Analysis/GRExprEngine.cpp
Zhongxing Xu
xuzhongxing at gmail.com
Thu Nov 13 16:52:45 PST 2008
On Thu, Nov 13, 2008 at 11:45 PM, Ted Kremenek <kremenek at apple.com> wrote:
> Hi Zhongxing,
>
> This is a little heavy handed, but I'm actually going to revert this patch
> along with:
>
>
> http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20081110/009157.html
>
> There is a reason why MemRegion* have a const qualifier; they never can be
> changed in any way. The const_cast itself is an indicator to me that this
> is the wrong design. It violates the functional programming design of how
> we track state, and modifying the MemRegion object in this way can introduce
> subtle bugs.
>
> We'll need to iterate on this one. We may end up applying your patch back,
> so please don't take my reverting it personally.
>
> Consider:
>
> char* p = alloca(BLOCK);
> new (p) Object1();
> ...
> new (p) Object2();
>
> Untyped memory can be recycled. While this won't occur that often, I
> think with the right design we can handle such things naturally.
>
I agree that another indirection is necessary, since:
- We have no type information when creating AllocaRegion.
- We have to attach type information to AllocaRegion.
- Regions are immutable once created.
The question remains is that when shall we create this indirect layer. A
plausible time is when we have the type information, we create the indirect
layer.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20081114/487216be/attachment.html>
More information about the cfe-commits
mailing list