<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 18, 2017 at 7:16 AM, Rafael Avila de Espindola <span dir="ltr"><<a href="mailto:rafael.espindola@gmail.com" target="_blank">rafael.espindola@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">>> The rule should be that the alias to aliasee link is never broken. The<br>
>> reason being that an alias at the file level is just another symbol with<br>
>> the same value.<br>
>><br>
>> So if foo is an alias to bar, accessing that foo will always be the same<br>
>> as accessing that bar, regardless of either of them being weak. I say<br>
>> *that* foo and *that* bar because symbol resolution may pick another foo<br>
>> and another bar.<br>
>><br>
><br>
> Are you just talking about the comdat case?<br>
<br>
</span>No, that is always the case.<br>
<span class="gmail-"><br>
> If this also applies to the<br>
> non-comdat case, I'm not sure how this works in the following situation<br>
> (copied from an example in my response just now to pcc):<br>
><br>
> If a module contains the following, and both @x and @y are non-prevailing<br>
> in that module:<br>
><br>
> @x = weak global ...<br>
> @y = weak alias @x<br>
><br>
> and the prevailing def for @x is in moduleX with a different value than the<br>
> prevailing def for @y which comes from moduleY. Just because they are<br>
> aliased in this module doesn't mean they must be aliased elsewhere,<br>
> right?<br>
<br>
</span>Correct.<br>
<span class="gmail-"><br>
> For this case (weak non-prevailing alias to a weak non-prevailing def) I<br>
> think it should eventually become:<br>
><br>
> @x = external global<br>
> @y = external global<br>
<br>
</span>When dropping @x and @y during IR linking? I agree.<br>
<span class="gmail-"><br>
> Trying to understand how this fits with your comment that "The rule should<br>
> be that the alias to aliasee link is never broken", unless that is just<br>
> referring to the case I mentioned just above about when they are both in<br>
> comdats.<br>
<br>
</span>In the above example the "link/connection" is not broken. The original<br>
@x and @y still refer to the same data, it is just that neither is used<br>
in the final linked object.<br></blockquote><div><br></div><div>Ok, thanks. But how does that property work the strongalias case from the original email. E.g.:</div><div><br></div><div>@f = weak global ...<br></div><div><div>@strongalias = alias @f</div></div><div><br></div><div>What we had concluded was that it should be transformed into the following when this copy of @f is non-prevailing:</div><div><br></div><div>@f = external global</div><div><div>@f.llvm.1 = internal global ...   // Internalized copy of original @f</div><div>@strongalias = alias @fv.llvm.1</div><div><br></div></div><div>Maybe we are just using different terminology for the same thing, but in this case it seems as though we have broken the link between the original alias @f and aliasee @strongalias? Or is the point that we haven't broken the link between the value in this module of @f (copied to @f.llvm.1) and @strongalias?</div><div><br></div><div>Teresa</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Cheers,<br>
Rafael<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><span style="font-family:times;font-size:medium"><table cellspacing="0" cellpadding="0"><tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small"><td nowrap style="border-top:2px solid rgb(213,15,37)">Teresa Johnson |</td><td nowrap style="border-top:2px solid rgb(51,105,232)"> Software Engineer |</td><td nowrap style="border-top:2px solid rgb(0,153,57)"> <a href="mailto:tejohnson@google.com" target="_blank">tejohnson@google.com</a> |</td><td nowrap style="border-top:2px solid rgb(238,178,17)"> 408-460-2413</td></tr></tbody></table></span></div>
</div></div>