&gt; I&#x27;m not sure that&#x27;s the best example. In that case, the knowledge that the &#x27;array&#x27; global never has its address taken allows you to perform the optimization.<p>Separate translation units. For this to work, you&#x27;d need to postpone all optimizations to the link stage. Even then you&#x27;re not safe, because you may be producing a dynamic library and the program loading it can take the address of an object by dlsym().