[llvm-dev] Aliasing rules difference between GCC and Clang

Ivan Kosarev via llvm-dev llvm-dev at lists.llvm.org
Mon Jan 28 02:34:07 PST 2019

Hi, Jonas,

I see. In that case I think you could just give the new TBAA a try by 
adding the cc1's  -new-struct-path-tbaa option and seeing if it does 
what you need. The support for member arrays is already there, see 
/tools/clang/test/CodeGen/tbaa-array.cpp . That would also give us some 
more testing (which we need very much), and then resolve issues as we 
go. The previously mentioned local patches pending publishing are 
actually supposed to just fix some special cases. IIRC, the only major 
part we are still missing is the proper support for unions. An attempt 
to support them can be seen at <https://reviews.llvm.org/D39455>, but 
turned out it doesn't implement exactly what we are after with TBAA and 
unions, so this needs some more work.


On 25/01/2019 17:44, Jonas Paulsson wrote:
> Hi Ivan,
>> As to my own patches pending publication, they are all for the new 
>> TBAA format, which you said would be of no help in your case.
> I actually thought they would help, but merely suggested an 
> intermediate step while waiting for those further improvements you are 
> working on. I would be happy to try your patches and evaluate if it 
> helps my test case...
> thanks
> /Jonas
>> Regards,
>> On 22/01/2019 16:02, Jonas Paulsson wrote:
>>> CAUTION: This email originated from outside of the organization. Do 
>>> not click links or open attachments unless you recognize the sender 
>>> and know the content is safe.  If you suspect potential phishing or 
>>> spam email, report it to ReportSpam at accesssoftek.com
>>> Hi Ivan,
>>> On 2019-01-18 10:15, Ivan Kosarev wrote:
>>>> IIRC, there were proposals/attempts to represent accesses to array
>>>> elements as accesses to their first elements, which can technically be
>>>> encoded with the current TBAA format and thus may work as an
>>>> incremental improvement on top of the existing TBAA machinery you are
>>>> looking for. But this may need making sure there will be no
>>>> regressions for some tricky cases like those that involve GCC's type
>>>> punning and changing effective types within unions and in dynamic 
>>>> memory.
>>> It would be interesting for me to apply such a patch and evaluate if it
>>> really helps my test case. I would much appreciate any links to (or
>>> files of) your patches and the attempts you mentioned above.
>>> Thanks,
>>> Jonas

More information about the llvm-dev mailing list