<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class="">On May 21, 2018, at 7:30 AM, Manohara Hosakoppa Krishnamurt via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a>> wrote:</div><div class=""><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Hello Eric,</p><div style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Thank you for the reply.</p><div style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">If it is intentionally leaked, Is it freed at any later stage and who is responsible for cleanup?</p></div></blockquote><div><br class=""></div>Nothing; it's leaked under the assumption that normal memory allocations will be returned to the OS at exit.  This is a common technique used in language libraries and runtimes.  It's even considered good practice, at it allows the process to exit faster and eliminates a source of crashes during user-provided atexit() teardown.  If Tizen doesn't return process memory automatically, you will need to change the code when compiling for Tizen.</div><div><br class=""></div><div>John.</div><div><br class=""><blockquote type="cite" class=""><div class=""><div style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">In our case, below is the call sequence.</p><div style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">======================<strong class="">First Time(No Memory Leak)<span class="Apple-converted-space"> </span></strong>============================== <span class="Apple-converted-space"> </span><br class="">1. malloc()    // ALLOC1                                                              <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">2. malloc()    // ALLOC2                                                              <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">3. malloc()    // ALLOC3                                                              <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">4. pthread_create()       // pthread_create by std::thread                            <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class=""><strong class="">5. pthread_key_create()  // Key created                                              <span class="Apple-converted-space"> </span><br class="">                                                                                <span class="Apple-converted-space"> </span><br class="">6. _aeabi_atexit()        // static storage destructor register to atexit             <span class="Apple-converted-space"> </span></strong><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">7. free()      //ALLOC3 freed                                                         <br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">8. pthread_exit()                                                                     <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class=""><strong class="">9. std::__thread_specific_ptr<std::__thread_struct>::__at_thread_exit()               <span class="Apple-converted-space"> </span><br class="">        //Key destructor called                                                    <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">10. free()     //ALLOC2 freed                                                         <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">11. free()     //ALOOC1 freed                                                         <span class="Apple-converted-space"> </span></strong><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">12. std::__thread_specific_ptr<std::__thread_struct>::~__thread_specific_ptr           <span class="Apple-converted-space"> </span><br class="">        //thread_specific_ptr static storage destructor called                     <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">======================<strong class="">Second Time Onwards (Memory Leak)</strong>======================= <span class="Apple-converted-space"> </span><br class="">1. malloc()    // ALLOC1                                                              <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">2. malloc()    // ALLOC2                                                              <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">3. malloc()    // ALLOC3                                                              <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">4. pthread_create()       // pthread_create by std::thread                            <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">5. free()      //ALLOC3 free'd                                                        <span class="Apple-converted-space"> </span><br class="">                                                                                   <span class="Apple-converted-space"> </span><br class="">6. pthread_exit()  </p><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">   // ALLOC1 & ALLOC2 are not freed</p><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">   // No call to  __thread_specific_ptr destructor                                                                   <span class="Apple-converted-space"> </span><br class="">==============================================================================</p><div style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">If we observe in the leak case, thread key is not created and<strong class=""><span class="Apple-converted-space"> </span></strong>static storage destructor is not registered to atexit. Hence there is no<strong class="">  </strong>key destructor(::__at_thread_exit()) called during exit and ALLOC1 & ALLOC2  are not freed which were freed properly in the working case.</p><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Also there is no call to  __thread_specific_ptr destructor.</p><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Note : As TizenRT is a RTOS and works on flat memory model, global data space(data & bss) are not released when application exits. Hence any variables with global scope always persist till the device power off.</p><div style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Can you please suggest some methods to avoid these leaks.?</p><div style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Thanks,</p><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Manohar</p><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">---------<span class="Apple-converted-space"> </span><b class="">Original Message</b><span class="Apple-converted-space"> </span>---------</p><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><b class="">Sender</b><span class="Apple-converted-space"> </span>: Eric Fiselier <<a href="mailto:eric@efcs.ca" class="">eric@efcs.ca</a>></p><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><b class="">Date</b><span class="Apple-converted-space"> </span>: 2018-05-19 12:30 (GMT+5:30)</p><p style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><b class="">Title</b><span class="Apple-converted-space"> </span>: Re: [cfe-dev] [Libcxx/TizenRT]: Memory leak in std::thread</p><div style="margin-bottom: 5px; font-size: 13.333333015441895px; font-family: Arial, arial; margin-top: 5px; caret-color: rgb(0, 0, 0); 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""> <br class="webkit-block-placeholder"></div><div dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Arial, arial; font-size: 13.333333015441895px; 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""><div class="gmail_extra"><br class=""><div class="gmail_quote">On Fri, May 18, 2018 at 4:39 AM, Manohara Hosakoppa Krishnamurt via cfe-dev<span class="Apple-converted-space"> </span><span dir="ltr" class=""><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank" class="">cfe-dev@lists.llvm.org</a>></span><span class="Apple-converted-space"> </span>wrote:<br class=""><blockquote class="gmail_quote" style="padding-left: 1ex; margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204);"><div class=""><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">Hello Everyone,</p><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">We are using<span class="Apple-converted-space"> </span><strong class="">LLVM libc++<span class="Apple-converted-space"> </span></strong>in TizenRT IoT OS(<span class="Apple-converted-space"> </span><a href="https://github.com/Samsung/TizenRT" target="_blank" class="">https://github.com/Samsung/<wbr class="">TizenRT</a>). We observed<span class="Apple-converted-space"> </span><strong class="">memory leak while using std::thread</strong></p><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">About TizenRT:</p><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">LLVM libc++ source has been integrated to TizenRT and the whole platform(OS + libc + libcpp + App) is built into  a single elf executable.</p><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">TizenRT uses a FLAT memory model(physical memory), there is no virtual memory support and hence we cant run application executables (elf) directly.</p><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">First time when we create a thread using std::thread , there is no memory leak after thread exits.</p><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">But next time onwards, if we create a thread using std::thread and after thread exits there is a memory leak.</p><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">First time__thread_specific_ptr<__<wbr class="">thread_struct> is constructed in __thread_local_data()  and hence the pthread_key_create() and during exit key is destroyed.</p><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">But second time onwards, __thread_specific_ptr<__<wbr class="">thread_struct> is not getting constructed in __thread_local_data().</p><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">__thread_local_data()         <wbr class="">                              <wbr class="">                    <span class="Apple-converted-space"> </span><br class="">{                             <wbr class="">                              <wbr class="">                    <span class="Apple-converted-space"> </span><br class="">    static __thread_specific_ptr<__<wbr class="">thread_struct> __p;                          <span class="Apple-converted-space"> </span><br class="">    return __p;                          <wbr class="">                              <wbr class="">     <span class="Apple-converted-space"> </span><br class="">}</p><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">We suspect that the problem is with __thread_local_data(), and __thread_specific_ptr is getting constructed only once.</p><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">Because of this we feel "__thread_struct  and __thread_struct_impl " which are allocated earlier during thread create are not getting freed and there is a leak.</p></div></blockquote><div class=""><div style="font-size: small; font-family: arial, sans-serif; white-space: normal; word-spacing: 0px; text-transform: none; font-weight: 400; color: rgb(34, 34, 34); font-style: normal; letter-spacing: normal; background-color: rgb(255, 255, 255); text-indent: 0px; font-variant-ligatures: normal; font-variant-caps: normal;" class=""><br class="gmail-Apple-interchange-newline">__thread_specific_ptr intentionally leaks. See<span class="Apple-converted-space"> </span><a href="https://github.com/llvm-mirror/libcxx/blob/master/include/thread#L189" class="">https://github.com/llvm-mirror/libcxx/blob/master/include/thread#L189</a></div> </div><blockquote class="gmail_quote" style="padding-left: 1ex; margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204);"><div class=""><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">Please guide us with,  how can we deallocate these objects after or during thread exit.</p><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">Also  what is the expected behavior of thread_local_data instance?<br class="">1. One thread_local_data instance for a process/task and all of its threads(pthreads) share the same thread_local_data instance?</p><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">OR<br class="">2. Each thread(pthread) should have a separate thread_local_data instance?</p><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">Thanks,</p><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class="">Manohar</p><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div><table id="m_723327727297999446bannersignimg" class=""><tbody class=""><tr class=""><td style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""><div id="m_723327727297999446cafe-note-contents" style="font-size: 10pt; font-family: Arial; margin: 10px;" class=""><div style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""> <br class="webkit-block-placeholder"></div></div></td></tr></tbody></table><table id="m_723327727297999446confidentialsignimg" class=""><tbody class=""><tr class=""><td style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""><div id="m_723327727297999446cafe-note-contents" style="font-size: 10pt; font-family: Arial; margin: 10px;" class=""><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""><span id="cid:3IN37TXXDPBB@namo.co.kr"><201805211700708_LCGFY2AH.gif></span><br class=""></p></div></td></tr></tbody></table></div><br class="">______________________________<wbr class="">_________________<br class="">cfe-dev mailing list<br class=""><a href="mailto:cfe-dev@lists.llvm.org" class="">cfe-dev@lists.llvm.org</a><br class=""><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/<wbr class="">mailman/listinfo/cfe-dev</a><br class=""><br class=""></blockquote></div><br class=""></div></div><table id="confidentialsignimg" style="caret-color: rgb(0, 0, 0); font-family: Arial, arial; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><tbody class=""><tr class=""><td style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""><p style="margin-bottom: 5px; font-size: 10pt; font-family: Arial, arial; margin-top: 5px;" class=""><span id="cid:XOK0LK7CT9SZ@namo.co.kr"><201602111742151_N3WZA6X7.png></span></p></td></tr></tbody></table><span style="caret-color: rgb(0, 0, 0); font-family: Arial, arial; font-size: 13.333333015441895px; 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; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">_______________________________________________</span><br style="caret-color: rgb(0, 0, 0); font-family: Arial, arial; font-size: 13.333333015441895px; 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Arial, arial; font-size: 13.333333015441895px; 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; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">cfe-dev mailing list</span><br style="caret-color: rgb(0, 0, 0); font-family: Arial, arial; font-size: 13.333333015441895px; 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="mailto:cfe-dev@lists.llvm.org" style="font-family: Arial, arial; font-size: 13.333333015441895px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">cfe-dev@lists.llvm.org</a><br style="caret-color: rgb(0, 0, 0); font-family: Arial, arial; font-size: 13.333333015441895px; 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; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" style="font-family: Arial, arial; font-size: 13.333333015441895px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a></div></blockquote></div><br class=""></body></html>