[llvm-dev] LLVM Alias Analysis
Doerfert, Johannes Rudolf via llvm-dev
llvm-dev at lists.llvm.org
Wed Dec 12 15:20:46 PST 2018
I think you two might talk about different things here. As Bekket noted,
include the IR you run!
If I take your test (c code), compile it to IR, and then run mem2reg,
there are _no_ pointers left that could alias. (So you might want to
make the example more meaningful).
If I do not run mem2reg, the two stack locations that are generated for
ptrA and ptrB do not alias as they are _different stack locations_. The
values stored at the stack locations do however alias.
I hope this helps.
On 12/12, Sean Perry via llvm-dev wrote:
> The variables ptra and ptrb don't actually alias. A simple way to think of
> aliasing is to to say two l-values alias if assigning into one changes the
> other. In your program changing the value of ptra does not change the
> value of ptrb. What you do have is two pointers that point to the same
> l-value. The aliasing analysis will show that variable a (which is address
> taken) is aliased to a shadow of type int. Any indirections through ptra
> or ptrb will use that same shadow. This is how clang and llvm get the
> aliasing correct.
>
> This is a common mistake when learning about aliasing. People often think
> the pointer should alias the object. It's really the shadow (i.e. a
> pointer indirection) that aliases the object. In fact you can never have
> two variables ever alasing each other.
>
> Regards
> --
> Sean Perry
> Compiler Development
> IBM Canada Lab
> (905)-413-6031 (tie 313-6031), fax (905)-413-4839
>
>
>
>
> From: "Артём Вопилов via llvm-dev" <llvm-dev at lists.llvm.org>
> To: llvm-admin at lists.llvm.org, llvm-dev at lists.llvm.org,
> mailman at lists.llvm.org, bugs-admin at lists.llvm.org
> Date: 12/12/18 11:54 AM
> Subject: [llvm-dev] LLVM Alias Analysis
> Sent by: "llvm-dev" <llvm-dev-bounces at lists.llvm.org>
>
>
>
> Dear LLVM Developers,
>
> My name is Artem Vopilov, I am a student at TU Darmstadt. I am writing to
> you to ask about Alias Analysis.
>
> I am using llvm to analyze alias between variables in programs. I am using
> Alias Analysis implemented in llvm with command "opt -analyze -aa-eval
> -print-all-alias-modref-info" and for printing sets of alias "opt -analyze
> -aa-eval -print-alias-sets".
>
> I execute these commands on the small test program I attached to this
> email.
> If you take a look at it, it will be obvious, that variables "ptra" and
> "ptrb" alias. However, the results of Alias Analysis do not indicate, that
> these variable alias. I would like to ask you, if it is possible to change
> the source code of Alias Analysis, so that it will show that "ptra" and
> "ptrb" variables from the test program alias.
>
> I am looking forward to hearing from you and hope, that you can help me
> solve my problem.
>
> Respectfully yours,
> Artem Vopilov
> [attachment "Test.c" deleted by Sean Perry/Toronto/IBM]
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
--
Johannes Doerfert
Researcher
Argonne National Laboratory
Lemont, IL 60439, USA
jdoerfert at anl.gov
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20181212/242fb80c/attachment.sig>
More information about the llvm-dev
mailing list