<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Jeffrey,<div><br></div><div>The attached patch contains what I guess are the first round of unit tests for this effort, which mostly came from</div><div>existing attachments to  <span class="Apple-style-span" style="font-family: sans-serif; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><a href="http://llvm.org/bugs/show_bug.cgi?id=2606" style="color: rgb(102, 51, 102); ">2606</a><span class="Apple-style-span" style="font-family: Helvetica; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; ">. I've left the current solution to <span class="Apple-style-span" style="font-family: sans-serif; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><a href="http://llvm.org/bugs/show_bug.cgi?id=2606" style="color: rgb(102, 51, 102); ">2606</a> pretty much the same as before. It can be viewed </span></span></span></div><div><span class="Apple-style-span" style="font-family: sans-serif; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><span class="Apple-style-span" style="font-family: Helvetica; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; "><span class="Apple-style-span" style="font-family: sans-serif; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; ">as a place holder for incorporating in LinkModule.cpp type logic in the next patch. Most likely the inclusion of this logic </span></span></span></div><div><span class="Apple-style-span" style="font-family: sans-serif; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; "><span class="Apple-style-span" style="font-family: Helvetica; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; "><span class="Apple-style-span" style="font-family: sans-serif; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; ">will require a further rearrangement of the real solution across JIT and JITEmitter as compared to what is showed.</span></span></span></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"><br></span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">Three unit tests are currently provided in a new MultiModuleJITTest.cpp, and are more complicated versions of the </span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">following:</span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"><br></span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">1) M1::F1 --> M2::F2</span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">2) M1::F1 --> M2::G</span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">3) M1::F1 --> M1::F2 via M2::G holding pointer to M1::F2</span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"><br></span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">where <span class="Apple-tab-span" style="white-space:pre">     </span>M::Fa ==> function a in module M</span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"><span class="Apple-tab-span" style="white-space:pre">              </span>--> ==> calls</span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"><span class="Apple-tab-span" style="white-space:pre">              </span>M::G ==> global variable G in module M</span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"><br></span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">The artificial solution is not documented and is marked with GMV Mod: as before. Beyond the lack of a real LinkModule</span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">type solution, I still have not fully provided what your previous email discussed, but I believe we will slowly approach </span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">this limit with iteration. Also as you can see, I tend to use more formatting then most. So if you find this uncomfortable,</span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">I will flatten where needed. </span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"><br></span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">Should I add this patch as an attachment to bug <a href="http://llvm.org/bugs/show_bug.cgi?id=2606" style="color: rgb(102, 51, 102); ">2606</a>?</span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"><br></span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">Thanks for looking over this.</span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"><br></span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">Garrison</span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"><br></span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">PS: It will be a little while before I get back to this effort (3 days or so I believe), which unless redirected otherwise, will be </span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;">focussed on replacing the artificial solution with similar logic contained in LinkModule::<span class="Apple-style-span" style="font-family: Helvetica; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; ">GetLinkageResult(...).</span></span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"><span class="Apple-tab-span" style="white-space:pre">               </span></span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"><br></span></font></div><div><font class="Apple-style-span" face="sans-serif"><span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px;"></span></font></div></body></html>