<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
As a bit of background, the reason we originally went with
addrspaces to mark GC pointers was that the managed and non-managed
heaps for us are semantically non-overlapping. It's not entirely
clear to me that the notion of two non-overlapping stacks is the
right mental model for approaching the stack allocated object
portion.<br>
<br>
Philip<br>
<br>
<div class="moz-cite-prefix">On 08/26/2015 09:40 PM, Marcello
Maggioni wrote:<br>
</div>
<blockquote
cite="mid:E696E33D-5566-40C1-B107-908ABB64D0D5@apple.com"
type="cite">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
It is not clear to me if these GC pointers are actually living in
a different address space when allocated on the stack (aka. you
have two different stacks) or if the address space is just a way
to mark that that pointer is a GC-pointer , but all the stack
allocation actually lives in the same address space (presumably
0).
<div class=""><br class="">
</div>
<div class="">Marcello<br class="">
<div>
<blockquote type="cite" class="">
<div class="">On 26 Aug 2015, at 20:39, Swaroop Sridhar via
llvm-dev <<a moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>>
wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="WordSection1" style="page: WordSection1;
font-family: Helvetica; font-size: 12px; font-style:
normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<div style="margin: 0in 0in 0.0001pt; font-size: 12pt;
font-family: 'Times New Roman', serif;" class=""><span
style="font-size: 11pt; font-family: Calibri,
sans-serif; color: rgb(31, 73, 125);" class="">Please
see inline.<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size: 12pt;
font-family: 'Times New Roman', serif;" class=""><span
style="font-size: 11pt; font-family: Calibri,
sans-serif; color: rgb(31, 73, 125);" class=""> </span></div>
<div style="margin: 0in 0in 0.0001pt; font-size: 12pt;
font-family: 'Times New Roman', serif;" class=""><b
class=""><span style="font-size: 11pt; font-family:
Calibri, sans-serif;" class="">From:</span></b><span
style="font-size: 11pt; font-family: Calibri,
sans-serif;" class=""><span
class="Apple-converted-space"> </span>Chandler
Carruth [<a moz-do-not-send="true"
href="mailto:chandlerc@google.com" style="color:
purple; text-decoration: underline;" class="">mailto:chandlerc@google.com</a>]<span
class="Apple-converted-space"> </span><br class="">
<b class="">Sent:</b><span
class="Apple-converted-space"> </span>Wednesday,
August 26, 2015 7:03 PM<br class="">
<b class="">To:</b><span
class="Apple-converted-space"> </span>Swaroop
Sridhar <<a moz-do-not-send="true"
href="mailto:Swaroop.Sridhar@microsoft.com"
style="color: purple; text-decoration: underline;"
class="">Swaroop.Sridhar@microsoft.com</a>>;
llvm-dev <<a moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org"
style="color: purple; text-decoration: underline;"
class="">llvm-dev@lists.llvm.org</a>>; Philip
Reames <<a moz-do-not-send="true"
href="mailto:listmail@philipreames.com"
style="color: purple; text-decoration: underline;"
class="">listmail@philipreames.com</a>>; Sanjoy
Das <<a moz-do-not-send="true"
href="mailto:sanjoy@playingwithpointers.com"
style="color: purple; text-decoration: underline;"
class="">sanjoy@playingwithpointers.com</a>><br
class="">
<b class="">Subject:</b><span
class="Apple-converted-space"> </span>Re:
[llvm-dev] RFC: alloca -- specify address space for
allocation<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size: 12pt;
font-family: 'Times New Roman', serif;" class=""><o:p
class=""> </o:p></div>
<div class="">
<div class="">
<div class="">
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class="">On Wed, Aug 26, 2015 at 6:46 PM Swaroop
Sridhar via llvm-dev <<a
moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org"
style="color: purple; text-decoration:
underline;" class="">llvm-dev@lists.llvm.org</a>>
wrote:<o:p class=""></o:p></div>
</div>
<blockquote style="border-style: none none none
solid; border-left-color: rgb(204, 204, 204);
border-left-width: 1pt; padding: 0in 0in 0in 6pt;
margin: 5pt 0in 5pt 4.8pt;" class="">
<div class="">
<div class="">
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class="">Currently, the<span
class="Apple-converted-space"> </span><span
style="font-size: 10pt; font-family:
Consolas;" class="">alloca</span><span
class="Apple-converted-space"> </span>instruction
always allocates in the generic address
space (0).<o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class="">This proposal is to
extend the semantics of<span
class="Apple-converted-space"> </span><span
style="font-size: 10pt; font-family:
Consolas;" class="">alloca</span><span
class="Apple-converted-space"> </span>instruction
to allow allocation in any specified address
space.<o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class=""> <o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class=""><b class="">Proposed
Syntax</b><o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""><result> =
alloca [inalloca] <type> [,
<ty> <NumElements>] [, align
<alignment>]<span
class="Apple-converted-space"> </span><b
class="">[,<span
class="Apple-converted-space"> </span><span
style="background-color: white;"
class="">addrspace<span
class="Apple-converted-space"> </span></span><<span
style="background-color: white;"
class="">num</span>>]</b><span
class="Apple-converted-space"> </span>;
yields type addrspace(num)*:result</span><o:p
class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""> </span><o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class=""><b class="">Motivation</b><o:p
class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class="">Managed language
clients typically use address space 1 to
represent GC-pointers.<o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class="">Some managed
clients (CLR, in particular) allow
construction of GC pointers to stack
locations.<o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class="">For example, MSIL
instruction ldloca (ECMA 335, p 370) creates
a GC pointer to a stack local.<o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class=""> <o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class="">Creating an<span
class="Apple-converted-space"> </span><span
style="font-size: 10pt; font-family:
Consolas;" class="">addrespace(1)*</span><span
class="Apple-converted-space"> </span>pointer
to a stack location currently involves two
steps: the<span
class="Apple-converted-space"> </span><span
style="font-size: 10pt; font-family:
Consolas;" class="">alloca</span>, and an<span
class="Apple-converted-space"> </span><span
style="font-size: 10pt; font-family:
Consolas;" class="">addrspacecast</span>.<o:p
class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class="">Managed code
transformations (ex:<span
class="Apple-converted-space"> </span><span
style="font-size: 10pt; font-family:
Consolas;" class="">RewriteStatepointsForGC</span>)
do not handle arbitrary address space
casting.<o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class="">So, it is desirable
to obtain the<span
class="Apple-converted-space"> </span><span
style="font-size: 10pt; font-family:
Consolas;" class="">addrespace(1)*</span><span
class="Apple-converted-space"> </span>pointer
by construction.<o:p class=""></o:p></div>
</div>
</div>
</blockquote>
<div class="">
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class="">I don't have a particular or specific
objection here necessarily, but I have to admit
I don't understand the use case (yet). I'm
hoping you can explain it to me more thoroughly.<o:p
class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><o:p class=""> </o:p></div>
</div>
<div class="">
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class="">What semantics do you expect for GC
pointer to a stack location? That's what I don't
really understand. Some questions that leap to
mind, but may be the wrong questions (so feel
free to point me in the right direction here)...<o:p
class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><span style="font-size: 11pt;
font-family: Calibri, sans-serif; color:
rgb(31, 73, 125);" class=""> </span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><span style="font-size: 11pt;
font-family: Calibri, sans-serif; color:
rgb(31, 73, 125);" class="">CLR defines the a
kind of GC pointer called “managed pointer” ,
which can point to a local variable, heap
object, parameter, field of a compound type,
or element of an array</span>.<span
class="Apple-converted-space"> </span><span
style="font-size: 11pt; font-family: Calibri,
sans-serif; color: rgb(31, 73, 125);" class="">The
semantics of managed pointer is liberally
defined to support by-reference passing. For
example, in this C# example:<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class=""> </span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class=""> </span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">public</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""> </span><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">class</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""> </span><span
style="font-size: 10pt; font-family: Consolas;
color: rgb(43, 145, 175);" class="">Obj<span
class="Apple-converted-space"> </span></span><span
style="font-size: 10pt; font-family:
Consolas;" class="">{ </span><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">public</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""> </span><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">int</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""> i; }<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""> </span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">public</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""> </span><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">static</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""> </span><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">int</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""> Test() {<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""> </span><span
style="font-size: 10pt; font-family: Consolas;
color: rgb(43, 145, 175);" class="">Obj</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""> obj = </span><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">new</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""> </span><span
style="font-size: 10pt; font-family: Consolas;
color: rgb(43, 145, 175);" class="">Obj</span><span
style="font-size: 10pt; font-family:
Consolas;" class="">();<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""> <span
class="Apple-converted-space"> </span></span><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">int</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""><span
class="Apple-converted-space"> </span>i=0;<o:p
class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""> …<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""> </span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""> </span><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">if</span><span
style="font-size: 10pt; font-family:
Consolas;" class="">(cond) {<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""> Fn(</span><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">ref</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""> i); </span><span
style="font-size: 10pt; font-family: Consolas;
color: green;" class="">// managed pointer to a stack location</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""><o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""> }<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""> </span><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">else</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""> {<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""> Fn(</span><span
style="font-size: 10pt; font-family: Consolas;
color: blue;" class="">ref</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""> obj.i); </span><span
style="font-size: 10pt; font-family: Consolas;
color: green;" class="">// managed pointer to a heap location</span><span
style="font-size: 10pt; font-family:
Consolas;" class=""><o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class=""> }<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;
background-color: white;" class=""><span
style="font-size: 10pt; font-family:
Consolas;" class="">}<o:p class=""></o:p></span></div>
</div>
<div class="">
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><o:p class=""> </o:p></div>
</div>
<div class="">
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class="">- Can I promote such a location to an
SSA register?<o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><span style="font-size: 11pt;
font-family: Calibri, sans-serif; color:
rgb(31, 73, 125);" class=""> </span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><span style="font-size: 11pt;
font-family: Calibri, sans-serif; color:
rgb(31, 73, 125);" class="">The rules for the
stack location is the same as any
address-taken location.<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><span style="font-size: 11pt;
font-family: Calibri, sans-serif; color:
rgb(31, 73, 125);" class="">I don’t think the
fact that the generated address is a managed
pointer should make a difference.<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><o:p class=""> </o:p></div>
</div>
<div class="">
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class="">- What does it mean to collect a stack
location?<o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><o:p class=""> </o:p></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><span style="font-size: 11pt;
font-family: Calibri, sans-serif; color:
rgb(31, 73, 125);" class="">The stack location
is not GCed or relocated.<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><span style="font-size: 11pt;
font-family: Calibri, sans-serif; color:
rgb(31, 73, 125);" class="">For a reported
managed pointer, if the referenced location is
outside the bounds of the GC-heap, the runtime
leaves it alone.<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><o:p class=""> </o:p></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class="">- Can I merge stack allocations that
are GC pointers? Can I re-use them? What
semantics do I get?<o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class="">- Do GC pointers to stack locations
have any different aliasing properties?<o:p
class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class="">- When the optimizer needs to create a
new stack allocation, what address space should
it be in?<o:p class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><o:p class=""> </o:p></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><span style="font-size: 11pt;
font-family: Calibri, sans-serif; color:
rgb(31, 73, 125);" class="">I’ll answer these
questions in my next email.<o:p class=""></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><o:p class=""> </o:p></div>
</div>
<div class="">
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class="">Ultimately, to make this change, you'll
also need to change a decent amount of code in
the optimizer that will blindly create stack
allocations in address space zero.<o:p class=""></o:p></div>
</div>
<div class="">
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class=""><o:p class=""> </o:p></div>
</div>
<div class="">
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class="">Without a better understanding of both
the motivation and the resulting consequences
such as what I've outlined in my questions
above, it is very hard for me to feel
comfortable with this kind of change.<o:p
class=""></o:p></div>
</div>
<blockquote style="border-style: none none none
solid; border-left-color: rgb(204, 204, 204);
border-left-width: 1pt; padding: 0in 0in 0in 6pt;
margin: 5pt 0in 5pt 4.8pt;" class="">
<div class="">
<div class="">
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class=""> <o:p class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class="">Thanks,<o:p
class=""></o:p></div>
<div style="margin: 0in 0in 0.0001pt;
font-size: 12pt; font-family: 'Times New
Roman', serif;" class="">Swaroop.<o:p
class=""></o:p></div>
</div>
</div>
<div style="margin: 0in 0in 0.0001pt; font-size:
12pt; font-family: 'Times New Roman', serif;"
class="">_______________________________________________<br
class="">
LLVM Developers mailing list<br class="">
<a moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org"
target="_blank" style="color: purple;
text-decoration: underline;" class="">llvm-dev@lists.llvm.org</a><br
class="">
<a moz-do-not-send="true"
href="https://urldefense.proofpoint.com/v2/url?u=https-3A__na01.safelinks.protection.outlook.com_-3Furl-3Dhttp-253a-252f-252flists.llvm.org-252fcgi-2Dbin-252fmailman-252flistinfo-252fllvm-2Ddev-26data-3D01-257c01-257cSwaroop.Sridhar-2540microsoft.com-257c58ded8bf3e5141b4884c08d2ae839898-257c72f988bf86f141af91ab2d7cd011db47-257c1-26sdata-3DxY2wWEhcEGdjQtcEqzSAXstTDgFW-252fxPl4RhJIDYQCCY-253d&d=BQMGaQ&c=eEvniauFctOgLOKGJOplqw&r=THu9ANfN9LYlQTYNQdmA7D-MsdMl2OioTAKXjMfn7i4&m=rPG5Brg7MCC-dk2NfmVIUdydnG-sBY4i5vxuuhfMjn4&s=JKA46T4ShURRYPiglJdaLfv4njMVPeb-zf_i0CiLfbw&e="
target="_blank" style="color: purple;
text-decoration: underline;" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><o:p
class=""></o:p></div>
</blockquote>
</div>
</div>
</div>
<span style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
float: none; display: inline !important;" class="">_______________________________________________</span><br
style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;"
class="">
<span style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
float: none; display: inline !important;" class="">LLVM
Developers mailing list</span><br style="font-family:
Helvetica; font-size: 12px; font-style: normal;
font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;"
class="">
<a moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org" style="color:
purple; text-decoration: underline; font-family:
Helvetica; font-size: 12px; font-style: normal;
font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;"
class="">llvm-dev@lists.llvm.org</a><br
style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;"
class="">
<a moz-do-not-send="true"
href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Ddev&d=BQIGaQ&c=eEvniauFctOgLOKGJOplqw&r=THu9ANfN9LYlQTYNQdmA7D-MsdMl2OioTAKXjMfn7i4&m=rPG5Brg7MCC-dk2NfmVIUdydnG-sBY4i5vxuuhfMjn4&s=GWkPE5c8T8RLUaT_ef53yhM_NZqIhsE2Kyze3P8Rf3s&e="
style="color: purple; text-decoration: underline;
font-family: Helvetica; font-size: 12px; font-style:
normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: normal; orphans:
auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;"
class="">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Ddev&d=BQIGaQ&c=eEvniauFctOgLOKGJOplqw&r=THu9ANfN9LYlQTYNQdmA7D-MsdMl2OioTAKXjMfn7i4&m=rPG5Brg7MCC-dk2NfmVIUdydnG-sBY4i5vxuuhfMjn4&s=GWkPE5c8T8RLUaT_ef53yhM_NZqIhsE2Kyze3P8Rf3s&e=</a><span
style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
float: none; display: inline !important;" class=""> </span><br
style="font-family: Helvetica; font-size: 12px;
font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: normal;
orphans: auto; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-stroke-width: 0px;"
class="">
</div>
</blockquote>
</div>
<br class="">
</div>
</blockquote>
<br>
</body>
</html>