ychen added a comment.

In D97915#2605398 <https://reviews.llvm.org/D97915#2605398>, @ChuanqiXu wrote:

> I am a little confusing about the problem. The example in the link tells the 
> align of the `promise` instead of the `frame`. The address of `promise` and 
> `frame` is not same. It looks like you're trying to do:
>
>   +               +-----------------------------------+
>   |               |                                   |
>   +---------------+          frame                    |
>   | pedding       |                                   |
>   +               +-----------------------------------+
>                   ^
>                   |
>                   |
>                   |
>                   |
>                   |
>                   +
>   
>                 The address of frame matches the offset of promise.
>
> However, what we should do is:
>
>   +               +-----------------------------------+
>   |               |       +--------------+            |
>   +---------------+frame  | promise      |            |
>   | pedding       |       <--------------+            |
>   +               +-----------------------------------+
>                   ^       |
>                   |       |
>                   |       |
>                   |       |
>                   |       +
>                   |       This is what we really want
>                   +
>   
>                 The address of frame matches the offset of promise.
>
> If I get the problem problems, I think we can handle this problem in the 
> middle end if the information for the promise remains.

Not sure I follow. Inside the frame, the promise is in its desired position. It 
is not properly aligned because the frame start address is underaligned - 
`malloc` usually only returns 16 bytes aligned memory whereas `alignas` could 
make the preferred alignment larger than that.



================
Comment at: clang/lib/CodeGen/CGBuiltin.cpp:16756
 };
-} // namespace
 
----------------
ChuanqiXu wrote:
> Why we remove the anonymous namespace here?
I added a common/helper function that takes `BuiltinAlignArgs` as an argument. 
Need to move it out of the anonymous namespace to forward declare it.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D97915/new/

https://reviews.llvm.org/D97915

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to