[llvm-dev] Structure Padding and GetElementPtr
Friedman, Eli via llvm-dev
llvm-dev at lists.llvm.org
Wed Dec 28 09:57:04 PST 2016
On 12/28/2016 5:41 AM, Hong Hu via llvm-dev wrote:
> Hi all,
>
> I'm writing a pass to understand the memory access to C++ class
> members. For each GetElementPtr instruction, I check the second index
> to the class pointer, to figure out which member it is intended to
> access.
>
> However, due to the structure padding, there are some fake members
> inserted into the structure. For example, when GEP works on the 5th
> element of the padded structure, it may in fact works on the
> originally 3rd one, if there are two paddings before the original 3rd
> member.
>
> Is there any way to map this "5th" access to the original "3rd" one?
> For example, some APIs to tell whether one member is a real member, or
> a padded one?
>
I would suggest converting the index of the struct GEP into an offset in
bytes; see StructLayout::getElementOffset. You can then compare that to
the layout of the original C++ class.
-Eli
--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161228/1e3afc32/attachment.html>
More information about the llvm-dev
mailing list