<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, "EmojiFont", "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
<p style="margin-top:0;margin-bottom:0">Hi Richard,</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">Thanks for sending this interesting reference. I will look look at it in more details and try to see if it covers our requirements for address spaces. At the same time if there are other ideas that make sense and can
work better, I guess it's worth exploring the options.</p>
<p style="margin-top:0;margin-bottom:0"><br>
</p>
<p style="margin-top:0;margin-bottom:0">Cheers,</p>
<p style="margin-top:0;margin-bottom:0">Anastasia<br>
</p>
<br>
<br>
<div style="color: rgb(0, 0, 0);">
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" face="Calibri, sans-serif" color="#000000"><b>From:</b> Richard Smith <richard@metafoo.co.uk><br>
<b>Sent:</b> 06 December 2018 17:54<br>
<b>To:</b> JF Bastien<br>
<b>Cc:</b> Anastasia Stulova; nd; cfe-dev<br>
<b>Subject:</b> Re: [cfe-dev] [RFC] Solution for preserving the address space of ‘this’ in C++ methods</font>
<div> </div>
</div>
<div>
<div dir="auto">
<div>I think the code duplication at the object code level is unavoidable -- we need to generate different code for the different overloads here. To solve the problem of a duplication at the source level, I think we should wait for <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0847r1.html">http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0847r1.html</a>
rather than inventing our own thing.<br>
<br>
<div class="x_gmail_quote">
<div dir="ltr">On Thu, 6 Dec 2018, 09:42 JF Bastien via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a> wrote:<br>
</div>
<blockquote class="x_gmail_quote" style="margin:0 0 0 .8ex; border-left:1px #ccc solid; padding-left:1ex">
<div style="word-wrap:break-word; line-break:after-white-space">Hi Anastasia,
<div><br>
</div>
<div>I find this terrifying. Using const method qualifiers correctly already leads to silly code repetition. I’d like to entirely remove volatile qualified methods from C++ (see <a href="http://wg21.link/p1152" target="_blank" rel="noreferrer">wg21.link/p1152</a>).
Your proposal adds an unbounded number of qualifiers, and the code duplication this entails seems nonsensical.</div>
<div><br>
</div>
<div>Do you foresee user code ever changing meaningfully based on address space?</div>
<div>Or is this just a trick to get different codegen around `this`?</div>
<div><br>
</div>
<div>I suspect you’re trying to achieve the later. If so, qualifiers on methods just don’t seem like the right language-level solution.</div>
<div><br>
</div>
<div>Address spaces on variables seem totally sane, and I agree that you want encapsulation, and somehow tracking address space on `this` makes sense. So I’m not saying I disagree with your goal. I’m saying method qualifiers seem like a terrible fit.</div>
<div><br>
</div>
<div>I think we need a completely different language solution which allows the same C++ code to codegen differently based on variable address space.</div>
<div><br>
</div>
<div>JF</div>
<div><br>
<div><br>
<blockquote type="cite">
<div>On Dec 6, 2018, at 3:41 AM, Anastasia Stulova via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank" rel="noreferrer">cfe-dev@lists.llvm.org</a>> wrote:</div>
<br class="x_m_2633956919659216327Apple-interchange-newline">
<div>
<div id="x_m_2633956919659216327divtagdefaultwrapper" dir="ltr" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; font-size: 12pt; font-family: Calibri, Helvetica, sans-serif, "EmojiFont", "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<p style="margin-top:0px; margin-bottom:0px"></p>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">Hello,</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"><br>
</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">I
am trying to sort out the use of address spaces in C++ classes in Clang, and I would like to get your feedback about the following problem.</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"><br>
</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">Every
C++ method implicitly contains a pointer to an object that invokes the method (aka ‘this’). It is implicitly added by Clang during parsing of a class. On architectures that use address spaces, objects might be instantiated in different address spaces. For
example, in OpenCL we may wish to construct objects in a specific address space, e.g. __local, that is shared between a group of threads; there is no syntax in core C++ that allows specifying the address space of ‘this’ and, therefore, the compiler can’t provide
an implementation that preserves the address space of an object.</span></div>
<br>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">I
would like to implement an extension that would allow specifying address space qualifier on methods to signal that the method is to be used with objects constructed in that address space.</span></div>
<br>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">Here
is an example:</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"><br>
</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">1
struct C {</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">2
void foo() __attribute__((address_space(1)));</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">3
void foo();</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">4
};</span></div>
<br>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">If
an instance ‘obj’ of struct ‘C’ is allocated in address space ‘1’ a call to ‘obj.foo()’ will resolve to the method on line 2; if ‘obj’ is not allocated in a specific address space then the implementation on line 3 will be used. In essence this is overloading
based on the address space qualifiers of a method.</span></div>
<br>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">For
languages with explicit address space semantics, like OpenCL, it would look like:</span></div>
<p dir="ltr" style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"></span></p>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">struct
C {</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"> void
foo() __local;</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"> void
foo();</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"> };</span></div>
<br>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">This
approach has one problem, however, if the implementation of a method does not differ for different address spaces, i.e. the qualification is only done to preserve the address space of ‘this’, multiple copies of the same method will have to be defined. Example:</span></div>
<br>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"> struct
C {</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"> int
a;</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"> int
geta() __attribute__((address_space(1))) {return a;}</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"> int
geta() {return a;}</span></div>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"> };</span></div>
<br>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">A
better solution, suggested by John McCall [2], that can extend the template syntax for methods with an address space of ‘this’ would require a larger language change and would require longer time before it would become available to users of Clang.</span></div>
<br>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">The
current plan is as follows:</span></div>
<br>
<ol style="margin-top:0pt; margin-bottom:0pt">
<li dir="ltr" style="list-style-type:decimal; font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">Implement
the aforementioned language extension to allow the overloading of methods qualified with an address space. A prototype implementation of this is available in [1]. If there are no objections here I am happy to work on the patch for this. I am quite confident
it can be progressed quickly considering that the general overloading mechanism with method qualifiers is already in place. Let me know if I might have missed something though.</span></div>
</li></ol>
<br>
<ol start="2" style="margin-top:0pt; margin-bottom:0pt">
<li dir="ltr" style="list-style-type:decimal; font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">Work
towards a longer term solution, potentially utilizing templates to reduce code repetition and make address spaces in C++ a more usable feature. I would appreciate some assistance either with ideas on language design or with prototyping/drafting the language
spec proposal.</span></div>
</li></ol>
<br>
<br>
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">Feedback
request:</span></div>
<br>
<ul style="margin-top:0pt; margin-bottom:0pt">
<li dir="ltr" style="list-style-type:disc; font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">Please
let me know if there are any objections to implementing option 1 and if you have any details to be considered.</span></div>
</li></ul>
<br>
<ul style="margin-top:0pt; margin-bottom:0pt">
<li dir="ltr" style="list-style-type:disc; font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">
<div style="margin-top:0pt; margin-bottom:0pt; line-height:1.38"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">Please
let me know if you are interested in being involved with the language design for option 2. I would particularly be interested to get some people from the general C++ community that use address spaces, or not!, as currently my main background is mainly in GPU/OpenCL
area.</span></div>
</li></ul>
<span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"></span><br>
<div><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"></span><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">[1]
</span><a href="https://github.com/KhronosGroup/SPIR/commit/0cfb6f7533d42ae3398a8574efd8abbdac88ac44" title="Ctrl+Click or tap to follow the link" target="_blank" rel="noreferrer" style="text-decoration:none"><span style="font-size:11pt; font-family:Arial; color:rgb(17,85,204); background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:underline; vertical-align:baseline; white-space:pre-wrap">https://github.com/KhronosGroup/SPIR/commit/0cfb6f7533d42ae3398a8574efd8abbdac88ac44</span></a><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap"><br>
</span></div>
<div><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">[2]
</span><a href="https://reviews.llvm.org/D54862#1308125" title="Ctrl+Click or tap to follow the link" target="_blank" rel="noreferrer" style="text-decoration:none"><span style="font-size:11pt; font-family:Arial; color:rgb(17,85,204); background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:underline; vertical-align:baseline; white-space:pre-wrap">https://reviews.llvm.org/D54862#1308125</span></a></div>
<div><br>
</div>
<div>
<div style="margin-top:0px; margin-bottom:0px"><span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">Thanks
in advance,</span></div>
<span style="font-size:11pt; font-family:Arial; background-color:transparent; font-weight:400; font-style:normal; font-variant-ligatures:normal; font-variant-caps:normal; font-variant-east-asian:normal; text-decoration:none; vertical-align:baseline; white-space:pre-wrap">Anastasia</span><br>
</div>
<br>
<p style="margin-top:0px; margin-bottom:0px"></p>
</div>
<span style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; float:none; display:inline!important">_______________________________________________</span><br style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<span style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; float:none; display:inline!important">cfe-dev
mailing list</span><br style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank" rel="noreferrer" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px">cfe-dev@lists.llvm.org</a><br style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" target="_blank" rel="noreferrer" style="font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a></div>
</blockquote>
</div>
<br>
</div>
</div>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank" rel="noreferrer">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>