[llvm-dev] AA and external globals

David Majnemer via llvm-dev llvm-dev at lists.llvm.org
Thu Nov 5 13:34:26 PST 2015


On Thu, Nov 5, 2015 at 1:00 PM, Christian Convey via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> I'm working on an AA implementation, and I'm using abstract blocks to
> model the memory used to store the values of program variables.
>
> To be sound my analysis must ensure that all program objects which *might
> possibly* occupy the same chunk of runtime memory are modeled with the
> same abstract memory block.  I'm trying to understand if "external" linkage
> is a problem for me.
>
> More concretely, suppose I have a Module which includes these declarations:
> @Bar = external global i32
> @Foo = external global i32
>
> Is there any reasonable possibility that the linker will cause @Bar and
> @Foo to name the same piece of runtime memory?
>

Yes, @Bar could be defined as a GlobalAlias to @Foo in another module.

The constant folder assumes @Bar and @Foo are distinct via
areGlobalsPotentiallyEqual <
http://llvm.org/docs/doxygen/html/ConstantFold_8cpp_source.html#l01382>

I'm not entirely sure if this is correct in the case where @Bar happens to
be an alias for @Foo elsewhere... Nick, any ideas?



>
> FWIW, my AA algorithm considers only one llvm Module at a time, so from
> its perspective the final program is divided into two parts: what it sees
> in the current Module, and the mysterious, unknowable everything else.
> Also, I need my algorithm to at least be sound for ELF targets, but ideally
> for all LLVM targets.
>
> Thanks,
> Christian
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151105/e317762a/attachment.html>


More information about the llvm-dev mailing list