<div dir="ltr">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.  <div><br></div><div>To be sound my analysis must ensure that all program objects which <i>might possibly</i> 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.</div><div><br></div><div>More concretely, suppose I have a Module which includes these declarations:</div><div><div>@Bar = external global i32</div><div>@Foo = external global i32</div></div><div><br></div><div>Is there any reasonable possibility that the linker will cause @Bar and @Foo to name the same piece of runtime memory?</div><div><br></div><div>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.</div><div><br></div><div>Thanks,</div><div>Christian</div><div><br></div></div>