<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:宋体;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@宋体";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:22445403;
        mso-list-template-ids:-1549739202;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1
        {mso-list-id:565187555;
        mso-list-template-ids:1301741090;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2
        {mso-list-id:1155756934;
        mso-list-template-ids:2084882120;}
@list l2:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Hi Bardia,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">This is actually a long known problem:
</span><a href="http://lists.llvm.org/pipermail/llvm-bugs/2017-July/056757.html">http://lists.llvm.org/pipermail/llvm-bugs/2017-July/056757.html</a>
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">As shown above, the problem gets triggered easily with scev-aa since it will compare two SCEVs from anywhere in the code, including your case of course. I believe the real problem is how to solve it properly. In the long run, checking satisfiesTotalOrder
 is too costly as it is duplicating part of the work in getAddExpr, but I agree it is way better than assertion error. Maybe SCEV_Unknown or nullptr can be used too.
<span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Jimmy<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Bardia Mahjour [mailto:bmahjour@ca.ibm.com]
<br>
<b>Sent:</b> Thursday, April 16, 2020 4:51 PM<br>
<b>To:</b> Jimmy Zhongduo Lin <jimmy.zhongduo.lin@huawei.com><br>
<b>Cc:</b> Philip Reames <listmail@philipreames.com>; llvm-dev@lists.llvm.org<br>
<b>Subject:</b> RE: [llvm-dev] Scalar Evolution Expressions Involving Sibling Loops<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p><span style="font-size:10.0pt">Hi Jimmy,</span><br>
<br>
<span style="font-size:10.0pt">It's good to know that the problem is not specific to the case I ran into. May be you can provide your example as well, since Philip seems to be interested in some specific examples. If the assertion in getAddrExpr is deemed necessary,
 then I think a condition check would be the next best solution as it helps client code guard against such cases and make alternative arrangements to avoid an assertion or miscompile.
</span><br>
<br>
<span style="font-size:10.0pt">Bardia Mahjour<br>
Compiler Optimizations<br>
IBM Toronto Software Lab<br>
<br>
</span><br>
<br>
<img border="0" width="16" height="16" id="_x0000_i1025" src="cid:image001.gif@01D6142E.56342F40" alt="Inactive hide details for Jimmy Zhongduo Lin ---2020/04/16 04:34:24 PM---Hi Bardia, I am encountering a similar problem and tot"><span style="font-size:10.0pt;color:#424282">Jimmy
 Zhongduo Lin ---2020/04/16 04:34:24 PM---Hi Bardia, I am encountering a similar problem and totally agree that getAddExpr shouldn't generate</span><br>
<br>
<span style="font-size:10.0pt;color:#5F5F5F">From: </span><span style="font-size:10.0pt">Jimmy Zhongduo Lin <<a href="mailto:jimmy.zhongduo.lin@huawei.com">jimmy.zhongduo.lin@huawei.com</a>></span><br>
<span style="font-size:10.0pt;color:#5F5F5F">To: </span><span style="font-size:10.0pt">Bardia Mahjour <<a href="mailto:bmahjour@ca.ibm.com">bmahjour@ca.ibm.com</a>>, Philip Reames <<a href="mailto:listmail@philipreames.com">listmail@philipreames.com</a>>, "<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>"
 <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>></span><br>
<span style="font-size:10.0pt;color:#5F5F5F">Date: </span><span style="font-size:10.0pt">2020/04/16 04:34 PM</span><br>
<span style="font-size:10.0pt;color:#5F5F5F">Subject: </span><span style="font-size:10.0pt">[EXTERNAL] RE: [llvm-dev] Scalar Evolution Expressions Involving Sibling Loops</span><o:p></o:p></p>
<div class="MsoNormal">
<hr size="2" width="100%" noshade="" style="color:#8091A5" align="left">
</div>
<p class="MsoNormal"><br>
<br>
<br>
<span style="color:#1F497D">Hi Bardia,</span><br>
<br>
<span style="color:#1F497D">I am encountering a similar problem and totally agree that getAddExpr shouldn’t generate any assertion error or at least provide condition check. Even if this is something to avoid, would it be better to return nullptr instead of
 assertion error?</span><br>
<br>
<span style="color:#1F497D">Thanks,</span><br>
<span style="color:#1F497D">Jimmy</span><br>
<br>
<b>From:</b> llvm-dev [<a href="mailto:llvm-dev-bounces@lists.llvm.org">mailto:llvm-dev-bounces@lists.llvm.org</a>]
<b>On Behalf Of </b>Bardia Mahjour via llvm-dev<b><br>
Sent:</b> Monday, March 30, 2020 4:59 PM<b><br>
To:</b> Philip Reames <<a href="mailto:listmail@philipreames.com">listmail@philipreames.com</a>><b><br>
Cc:</b> LLVM Development List <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>><b><br>
Subject:</b> Re: [llvm-dev] Scalar Evolution Expressions Involving Sibling Loops<o:p></o:p></p>
<p><span style="font-size:10.0pt;font-family:"Courier New"">> </span><span style="font-size:10.0pt">I'm not following your example. If you have two sibling loops with the same parent, one will frequently, but not always dominate the other. Can you give a specific
 example of when forming a recurrence between two siblings (without one dominating the other), is useful?
</span><br>
<span style="font-size:10.0pt"><br>
The situation can happen with guarded loops or with a user guard like below:</span><br>
<span style="font-size:10.0pt"><br>
if (c) {<br>
for (i = 0; i < n; i++) <br>
...<br>
}<br>
for (j = 0; j < n; j++)<br>
...</span><br>
<br>
<span style="font-size:10.0pt"><br>
The specific example that we ran into is described in </span><a href="https://reviews.llvm.org/D75628"><span style="font-size:10.0pt">https://reviews.llvm.org/D75628</span></a><span style="font-size:10.0pt">. Basically we have two triangular loops that are
 siblings and we'd like to run Banerjee MIV tests on the memory accesses in those loops. The loop looks like:</span><br>
<span style="font-size:10.0pt"><br>
void foo(int *restrict A, int n1, int n2, int n3) {<br>
for (int i1 = 0; i1 < n1; i1++) {<br>
for (int i2 = 2; i2 < n2; i2++) {<br>
for (int i3 = i2 + 1; i3 < n3; i3++) {<br>
A[i2 + i3*n2] = 11;<br>
}<br>
}<br>
for (int i4 = 2; i4 < n3; i4++) {<br>
for (int i5 = 1; i5 < i4 - 1; i5++) {<br>
A[i5] = 22;<br>
}<br>
}<br>
}<br>
}</span><br>
<span style="font-size:10.0pt"><br>
To check the bounds of the dependence function we need to create a symbolic expression that involves AddRecs for i2 and i4.</span><br>
<span style="font-size:10.0pt"><br>
Bardia Mahjour<br>
</span><br>
<br>
<br>
<img border="0" width="16" height="16" id="_x0000_i1027" src="cid:image001.gif@01D6142E.56342F40" alt="Inactive hide details for Philip Reames ---2020/03/30 02:50:45 PM---On 3/30/20 11:27 AM, Bardia Mahjour via llvm-dev wrote: >"><span style="font-size:10.0pt;color:#424282">Philip
 Reames ---2020/03/30 02:50:45 PM---On 3/30/20 11:27 AM, Bardia Mahjour via llvm-dev wrote: ></span><br>
<span style="font-size:10.0pt;color:#5F5F5F"><br>
From: </span><span style="font-size:10.0pt">Philip Reames <</span><a href="mailto:listmail@philipreames.com"><span style="font-size:10.0pt">listmail@philipreames.com</span></a><span style="font-size:10.0pt">><span style="color:#5F5F5F"><br>
To: </span>Bardia Mahjour <</span><a href="mailto:bmahjour@ca.ibm.com"><span style="font-size:10.0pt">bmahjour@ca.ibm.com</span></a><span style="font-size:10.0pt">>, LLVM Development List <</span><a href="mailto:llvm-dev@lists.llvm.org"><span style="font-size:10.0pt">llvm-dev@lists.llvm.org</span></a><span style="font-size:10.0pt">><span style="color:#5F5F5F"><br>
Date: </span>2020/03/30 02:50 PM<span style="color:#5F5F5F"><br>
Subject: </span>[EXTERNAL] Re: [llvm-dev] Scalar Evolution Expressions Involving Sibling Loops</span><o:p></o:p></p>
<div class="MsoNormal">
<hr size="2" width="100%" noshade="" style="color:#A0A0A0" align="left">
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<p>On 3/30/20 11:27 AM, Bardia Mahjour via llvm-dev wrote: <o:p></o:p></p>
<p class="MsoNormal" style="margin-left:2.0in"><span style="font-size:10.0pt">Forwarding to the dev list, in case others ran into similar issues and/or have input on this topic.<br>
<br>
Bardia Mahjour<span style="color:purple"><br>
<br>
----- Forwarded by Bardia Mahjour/Toronto/IBM on 2020/03/30 02:25 PM -----</span><span style="color:#5F5F5F"><br>
<br>
From: </span>Bardia Mahjour/Toronto/IBM<span style="color:#5F5F5F"><br>
To: </span></span><a href="mailto:listmail@philipreames.com"><span style="font-size:10.0pt">listmail@philipreames.com</span></a><span style="font-size:10.0pt;color:#5F5F5F"><br>
Cc: </span><span style="font-size:10.0pt">"Michael Kruse" </span><a href="mailto:llvm@meinersbur.de"><span style="font-size:10.0pt"><llvm@meinersbur.de></span></a><span style="font-size:10.0pt;color:#5F5F5F"><br>
Date: </span><span style="font-size:10.0pt">2020/03/26 11:47 AM<span style="color:#5F5F5F"><br>
Subject: </span>Scalar Evolution Expressions Involving Sibling Loops</span><o:p></o:p></p>
<div class="MsoNormal" style="margin-left:2.0in">
<hr size="2" width="100%" noshade="" style="color:#A0A0A0" align="left">
</div>
<p class="MsoNormal" style="margin-left:2.0in"><br>
<span style="font-size:10.0pt"><br>
<br>
Hi Philip,<br>
<br>
I hope you are doing well. <br>
<br>
We've recently run into an issue with SCEV in the context of dependence analysis, and would like your opinion on it. Background discussion can be found here
</span><a href="https://reviews.llvm.org/D75628#inline-689527"><span style="font-size:10.0pt">https://reviews.llvm.org/D75628#inline-689527</span></a><span style="font-size:10.0pt">.<br>
<br>
Basically in this case, the dependence equation requires us to symbolically create an expression involving two or more recurrences that recur with non-dominating loops (sibling loops).
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt">I'm not following your example. If you have two sibling loops with the same parent, one will frequently, but not always dominate the other. Can you give a specific example of when forming a recurrence between
 two siblings (without one dominating the other), is useful? </span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:2.0in"><span style="font-size:10.0pt">Currently creating such a SCEV expression trips asserts in `</span><span style="font-size:10.0pt;font-family:"Courier New"">CompareSCEVComplexity</span><span style="font-size:10.0pt">()`
 and `</span><span style="font-size:10.0pt;font-family:"Courier New"">isKnownViaInduction</span><span style="font-size:10.0pt">()` saying that a given SCEV expression cannot be composed of recurrences that have no dominance relationship between them.
<br>
<br>
Michael tried explaining to me why there is this restriction about dominance, and I'm beginning to understand why such restriction may be necessary when evaluating or expanding SCEV expressions in outer scopes (eg. `</span><span style="font-size:10.0pt;font-family:"Courier New"">getSCEVAtScope</span><span style="font-size:10.0pt">(nullptr)`)
 but I still don't understand why this restriction is imposed at construction. Shouldn't this restriction be asserted on when calling getSCEVAtScope instead of when creating AddRecs, given that simplification steps may remove identical terms involving non-dominating
 loops? </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt">Well, SCEV construction is generally done to parallel IR. SSA requires dominance, so having the SCEV operands require dominance would seem like a reasonable thing. If you want to change this, you'll need to
 motivate the change. (i.e. see above question)</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:2.0in"><span style="font-size:10.0pt"><br>
We would appreciate any other insight you might have about this issue.<br>
<br>
Regards,<br>
<br>
Bardia Mahjour<br>
Compiler Optimizations<br>
IBM Toronto Software Lab</span><u><span style="color:blue"><br>
</span></u><a href="mailto:bmahjour@ca.ibm.com"><span style="font-size:10.0pt">bmahjour@ca.ibm.com</span></a><br>
<br>
<span style="font-size:10.0pt;font-family:"Courier New""><br>
_______________________________________________<br>
LLVM Developers mailing list</span><u><span style="color:blue"><br>
</span></u><a href="mailto:llvm-dev@lists.llvm.org"><span style="font-size:10.0pt;font-family:"Courier New"">llvm-dev@lists.llvm.org</span></a><u><span style="color:blue"><br>
</span></u><a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"><span style="font-size:10.0pt;font-family:"Courier New"">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</span></a><o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
<br>
<o:p></o:p></p>
</div>
</body>
</html>