<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Thanks Michael!<br>
      I'll figure out exactly which platforms are failing, disable the
      tests there and recommit the patch (then file a bug for each test
      failure so we can track them).</p>
    <p>- Marco.<br>
    </p>
    <br>
    <div class="moz-cite-prefix">Il 07/07/2018 02:28, Mikhail Zolotukhin
      ha scritto:<br>
    </div>
    <blockquote type="cite"
      cite="mid:687CEF91-D412-4018-A2ED-6710089C502C@apple.com">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <div class="">Hi Marco,</div>
      <div class=""><br class="">
      </div>
      I reverted the patch in r336474. Feel free to recommit the patch
      with tests fixed/disabled - I just wanted to unbreak bots to
      resume testing.
      <div class=""><br class="">
      </div>
      <div class="">Thanks,</div>
      <div class="">Michael<br class="">
        <div><br class="">
          <blockquote type="cite" class="">
            <div class="">On Jul 6, 2018, at 2:22 AM, Marco Castelluccio
              <<a href="mailto:mcastelluccio@mozilla.com" class=""
                moz-do-not-send="true">mcastelluccio@mozilla.com</a>>
              wrote:</div>
            <br class="Apple-interchange-newline">
            <div class="">
              <meta http-equiv="Content-Type" content="text/html;
                charset=utf-8" class="">
              <div text="#000000" bgcolor="#FFFFFF" class=""> Looking at
                the failures, I don't think the modified code is causing
                the failures, but rather the tests I added would not
                pass either before or after the modification.<br
                  class="">
                I'm OK with the patch being reverted, but probably the
                "fix" before relanding would just be disabling the tests
                until we can fix them on those platforms.<br class="">
                <br class="">
                Thanks,<br class="">
                Marco.<br class="">
                <p class=""><br class="">
                </p>
                <br class="">
                <div class="moz-cite-prefix">Il 06/07/2018 03:12, Sean
                  Fertile ha scritto:<br class="">
                </div>
                <blockquote type="cite"
cite="mid:OFC481472A.60B8ECDC-ON002582C2.000B4438-002582C2.000C1C38@notes.na.collabserv.com"
                  class="">
                  <div class="socmaildefaultfont" dir="ltr"
                    style="font-family:Arial, Helvetica,
                    sans-serif;font-size:10.5pt">
                    <div dir="ltr" class="">It might be tricky to
                      disable the failing tests since they pass on
                      little-endian ppc but fail on big-endian ppc.  I
                      would suggest reverting the patch for now. Zaara
                      is monitoring the Power build bots right now,
                      hopefully she can help you narrow down what is
                      breaking and we can get it fixed before
                      recommitting.</div>
                    <div dir="ltr" class=""> </div>
                    <div dir="ltr" class="">Thanks</div>
                    <div dir="ltr" class="">Sean</div>
                    <div dir="ltr" class=""> </div>
                    <blockquote data-history-content-modified="1"
                      dir="ltr" style="border-left:solid #aaaaaa 2px;
                      margin-left:5px; padding-left:5px; direction:ltr;
                      margin-right:0px" class="">----- Original message
                      -----<br class="">
                      From: Mikhail Zolotukhin <a
                        class="moz-txt-link-rfc2396E"
                        href="mailto:mzolotukhin@apple.com"
                        moz-do-not-send="true"><mzolotukhin@apple.com></a><br
                        class="">
                      To: Marco Castelluccio <a
                        class="moz-txt-link-rfc2396E"
                        href="mailto:mcastelluccio@mozilla.com"
                        moz-do-not-send="true"><mcastelluccio@mozilla.com></a><br
                        class="">
                      Cc: Sean Fertile <a class="moz-txt-link-rfc2396E"
                        href="mailto:sfertile@ca.ibm.com"
                        moz-do-not-send="true"><sfertile@ca.ibm.com></a>,
                      <a class="moz-txt-link-abbreviated"
                        href="mailto:llvm-commits@lists.llvm.org"
                        moz-do-not-send="true">llvm-commits@lists.llvm.org</a><br
                        class="">
                      Subject: Re: [compiler-rt] r336365 - Make
                      __gcov_flush flush counters for all shared
                      libraries<br class="">
                      Date: Thu, Jul 5, 2018 9:42 PM<br class="">
                       <br class="">
                      <!--Notes ACF
<meta http-equiv="Content-Type" content="text/html; " >-->It also broke <a
href="http://green.lab.llvm.org/green/job/clang-stage1-configure-RA/46970/consoleFull#-68865869049ba4694-19c4-4d7e-bec5-911270d8a58c"
                        target="_blank" moz-do-not-send="true" class="">green
                        dragon</a> (it’s macos). Could you please
                      fix/revert it to unbreak the bots?
                      <div class=""> </div>
                      <div class="">Thanks,</div>
                      <div class="">Michael
                        <div class=""> 
                          <blockquote type="cite" class="">
                            <div class="">On Jul 5, 2018, at 3:59 PM,
                              Marco Castelluccio via llvm-commits <<a
href="mailto:llvm-commits@lists.llvm.org" target="_blank"
                                moz-do-not-send="true" class="">llvm-commits@lists.llvm.org</a>>
                              wrote:</div>
                             
                            <div class=""><!--Notes ACF
<meta http-equiv="Content-Type" content="text/html; charset=utf8" class="" >-->
                              <div bgcolor="#FFFFFF" text="#000000"
                                class="">Hello Sean,<br class="">
                                yes, I've added some tests that are not
                                passing on that platform. Could we
                                disable them there?<br class="">
                                <br class="">
                                Thanks!<br class="">
                                - Marco.<br class="">
                                 
                                <div class="">Il 05/07/2018 21:21, Sean
                                  Fertile ha scritto:</div>
                                <blockquote
cite="mid:OF11C2764D.4B6AC62B-ON002582C1.006FA1F0-002582C1.006FD68C@notes.na.collabserv.com"
                                  type="cite" class="">
                                  <div dir="ltr"
                                    style="font-family:Arial, Helvetica,
                                    sans-serif;font-size:10.5pt"
                                    class="">
                                    <div dir="ltr" class="">Hi Marco, </div>
                                    <div dir="ltr" class=""> </div>
                                    <div dir="ltr" class="">I believe
                                      this commit broke <a
                                        href="http://lab.llvm.org:8011/builders/clang-ppc64be-linux"
                                        moz-do-not-send="true"
                                        target="_blank" class="">http://lab.llvm.org:8011/builders/clang-ppc64be-linux</a></div>
                                    <div dir="ltr" class=""> </div>
                                    <div dir="ltr" class="">Thanks</div>
                                    <div dir="ltr" class="">Sean</div>
                                    <div dir="ltr" class=""> </div>
                                    <blockquote
                                      data-history-content-modified="1"
                                      dir="ltr" style="border-left:solid
                                      #aaaaaa 2px; margin-left:5px;
                                      padding-left:5px; direction:ltr;
                                      margin-right:0px" class="">-----
                                      Original message -----<br class="">
                                      From: Marco Castelluccio via
                                      llvm-commits <a
                                        href="mailto:llvm-commits@lists.llvm.org"
                                        target="_blank"
                                        moz-do-not-send="true" class=""><llvm-commits@lists.llvm.org></a><br
                                        class="">
                                      Sent by: "llvm-commits" <a
                                        href="mailto:llvm-commits-bounces@lists.llvm.org"
                                        target="_blank"
                                        moz-do-not-send="true" class=""><llvm-commits-bounces@lists.llvm.org></a><br
                                        class="">
                                      To: <a
                                        href="mailto:llvm-commits@lists.llvm.org"
                                        target="_blank"
                                        moz-do-not-send="true" class="">llvm-commits@lists.llvm.org</a><br
                                        class="">
                                      Cc:<br class="">
                                      Subject: [compiler-rt] r336365 -
                                      Make __gcov_flush flush counters
                                      for all shared libraries<br
                                        class="">
                                      Date: Thu, Jul 5, 2018 11:57 AM<br
                                        class="">
                                       
                                      <div class=""><font class=""
                                          size="2" face="Default
                                          Monospace,Courier
                                          New,Courier,monospace">Author:
                                          marco<br class="">
                                          Date: Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          New Revision: 336365<br
                                            class="">
                                          <br class="">
                                          URL: <a
                                            href="http://llvm.org/viewvc/llvm-project?rev=336365&view=rev"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=336365&view=rev</a><br
                                            class="">
                                          Log:<br class="">
                                          Make __gcov_flush flush
                                          counters for all shared
                                          libraries<br class="">
                                          <br class="">
                                          Summary:<br class="">
                                          This will make the behavior of
                                          __gcov_flush match the GCC
                                          behavior.<br class="">
                                          <br class="">
                                          I would like to rename
                                          __gcov_flush to
                                          __llvm_gcov_flush (in case of
                                          programs linking to libraries
                                          built with different
                                          compilers), but I guess we
                                          can't for compatibility
                                          reasons.<br class="">
                                          <br class="">
                                          Reviewers: davidxl<br class="">
                                          <br class="">
                                          Reviewed By: davidxl<br
                                            class="">
                                          <br class="">
                                          Subscribers: samsonov,
                                          vitalybuka, pcc, kcc, junbuml,
                                          glider, fhahn, eugenis,
                                          dvyukov, davidxl, srhines,
                                          chh, llvm-commits, #sanitizers<br
                                            class="">
                                          <br class="">
                                          Differential Revision: <a
                                            href="https://reviews.llvm.org/D48538"
                                            moz-do-not-send="true"
                                            target="_blank" class="">https://reviews.llvm.org/D48538</a><br
                                            class="">
                                          <br class="">
                                          Added:<br class="">
                                            
 compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main.c.gcov<br
                                            class="">
                                            
 compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main_three-libs.c.gcov<br
                                            class="">
                                            
                                           compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func.c.gcov<br
                                            class="">
                                            
                                           compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func2.c.gcov<br
                                            class="">
                                            
                                           compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func3.c<br
                                            class="">
                                            
                                           compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func3.c.gcov<br
                                            class="">
                                            
                                           compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib.c.gcov<br
                                            class="">
                                            
 compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib_called-twice.c.gcov<br
                                            class="">
                                            
 compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib_in-loop.c.gcov<br
                                            class="">
                                            
 compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush.c<br
                                            class="">
                                            
 compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_no-writeout.c.gcov<br
                                            class="">
                                            
 compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-after.c.gcov<br
                                            class="">
                                            
 compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-before-after.c.gcov<br
                                            class="">
                                            
 compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-before.c.gcov<br
                                            class="">
                                            
                                           compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main.c.gcov<br
                                            class="">
                                            
                                           compiler-rt/trunk/test/profile/instrprof-gcov-two-objects.test<br
                                            class="">
                                            
                                           compiler-rt/trunk/test/profile/instrprof-shared-gcov-flush.test<br
                                            class="">
                                          Modified:<br class="">
                                            
                                           compiler-rt/trunk/lib/profile/GCDAProfiling.c<br
                                            class="">
                                            
                                           compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main.c<br
                                            class="">
                                            
                                           compiler-rt/trunk/test/profile/instrprof-dlopen-dlclose-gcov.test<br
                                            class="">
                                          <br class="">
                                          Modified:
                                          compiler-rt/trunk/lib/profile/GCDAProfiling.c<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/GCDAProfiling.c?rev=336365&r1=336364&r2=336365&view=diff"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/GCDAProfiling.c?rev=336365&r1=336364&r2=336365&view=diff</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
                                          compiler-rt/trunk/lib/profile/GCDAProfiling.c
                                          (original)<br class="">
                                          +++
                                          compiler-rt/trunk/lib/profile/GCDAProfiling.c
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -86,31 +86,76 @@ static
                                          uint64_t file_size = 0;<br
                                            class="">
                                           static int new_file = 0;<br
                                            class="">
                                           static int fd = -1;<br
                                            class="">
                                           <br class="">
                                          -/*<br class="">
                                          - * A list of functions to
                                          write out the data.<br
                                            class="">
                                          - */<br class="">
                                          -typedef void
                                          (*writeout_fn)();<br class="">
                                          +typedef void (*fn_ptr)();<br
                                            class="">
                                           <br class="">
                                          -struct writeout_fn_node {<br
                                            class="">
                                          -  writeout_fn fn;<br class="">
                                          -  struct writeout_fn_node
                                          *next;<br class="">
                                          +typedef void*
                                          dynamic_object_id;<br class="">
                                          +// The address of this
                                          variable identifies a given
                                          dynamic object.<br class="">
                                          +static dynamic_object_id
                                          current_id;<br class="">
                                          +#define CURRENT_ID
                                          (&current_id)<br class="">
                                          +<br class="">
                                          +struct fn_node {<br class="">
                                          +  dynamic_object_id id;<br
                                            class="">
                                          +  fn_ptr fn;<br class="">
                                          +  struct fn_node* next;<br
                                            class="">
                                           };<br class="">
                                           <br class="">
                                          -static struct
                                          writeout_fn_node
                                          *writeout_fn_head = NULL;<br
                                            class="">
                                          -static struct
                                          writeout_fn_node
                                          *writeout_fn_tail = NULL;<br
                                            class="">
                                          +struct fn_list {<br class="">
                                          +  struct fn_node *head,
                                          *tail;<br class="">
                                          +};<br class="">
                                           <br class="">
                                           /*<br class="">
                                          - *  A list of flush functions
                                          that our __gcov_flush()
                                          function should call.<br
                                            class="">
                                          + * A list of functions to
                                          write out the data, shared
                                          between all dynamic objects.<br
                                            class="">
                                            */<br class="">
                                          -typedef void (*flush_fn)();<br
                                            class="">
                                          +struct fn_list
                                          writeout_fn_list;<br class="">
                                           <br class="">
                                          -struct flush_fn_node {<br
                                            class="">
                                          -  flush_fn fn;<br class="">
                                          -  struct flush_fn_node *next;<br
                                            class="">
                                          -};<br class="">
                                          +/*<br class="">
                                          + *  A list of flush functions
                                          that our __gcov_flush()
                                          function should call, shared
                                          between all dynamic objects.<br
                                            class="">
                                          + */<br class="">
                                          +struct fn_list flush_fn_list;<br
                                            class="">
                                          +<br class="">
                                          +static void
                                          fn_list_insert(struct fn_list*
                                          list, fn_ptr fn) {<br class="">
                                          +  struct fn_node* new_node =
                                          malloc(sizeof(struct
                                          fn_node));<br class="">
                                          +  new_node->fn = fn;<br
                                            class="">
                                          +  new_node->next = NULL;<br
                                            class="">
                                          +  new_node->id =
                                          CURRENT_ID;<br class="">
                                          +<br class="">
                                          +  if (!list->head) {<br
                                            class="">
                                          +    list->head =
                                          list->tail = new_node;<br
                                            class="">
                                          +  } else {<br class="">
                                          +    list->tail->next =
                                          new_node;<br class="">
                                          +    list->tail = new_node;<br
                                            class="">
                                          +  }<br class="">
                                          +}<br class="">
                                          +<br class="">
                                          +static void
                                          fn_list_remove(struct fn_list*
                                          list) {<br class="">
                                          +  struct fn_node* curr =
                                          list->head;<br class="">
                                          +  struct fn_node* prev =
                                          NULL;<br class="">
                                          +  struct fn_node* next =
                                          NULL;<br class="">
                                          +<br class="">
                                          +  while (curr) {<br class="">
                                          +    next = curr->next;<br
                                            class="">
                                          +<br class="">
                                          +    if (curr->id ==
                                          CURRENT_ID) {<br class="">
                                          +      if (curr ==
                                          list->head) {<br class="">
                                          +        list->head = next;<br
                                            class="">
                                          +      }<br class="">
                                          +<br class="">
                                          +      if (curr ==
                                          list->tail) {<br class="">
                                          +        list->tail = prev;<br
                                            class="">
                                          +      }<br class="">
                                          +<br class="">
                                          +      if (prev) {<br class="">
                                          +        prev->next = next;<br
                                            class="">
                                          +      }<br class="">
                                          +<br class="">
                                          +      free(curr);<br class="">
                                          +    } else {<br class="">
                                          +      prev = curr;<br
                                            class="">
                                          +    }<br class="">
                                           <br class="">
                                          -static struct flush_fn_node
                                          *flush_fn_head = NULL;<br
                                            class="">
                                          -static struct flush_fn_node
                                          *flush_fn_tail = NULL;<br
                                            class="">
                                          +    curr = next;<br class="">
                                          +  }<br class="">
                                          +}<br class="">
                                           <br class="">
                                           static void
                                          resize_write_buffer(uint64_t
                                          size) {<br class="">
                                             if (!new_file) return;<br
                                            class="">
                                          @@ -403,6 +448,7 @@ void
                                          llvm_gcda_summary_info() {<br
                                            class="">
                                             const uint32_t
                                          obj_summary_len = 9; /* Length
                                          for gcov compatibility. */<br
                                            class="">
                                             uint32_t i;<br class="">
                                             uint32_t runs = 1;<br
                                            class="">
                                          +  static uint32_t run_counted
                                          = 0; // We only want to
                                          increase the run count once.<br
                                            class="">
                                             uint32_t val = 0;<br
                                            class="">
                                             uint64_t save_cur_pos =
                                          cur_pos;<br class="">
                                           <br class="">
                                          @@ -429,7 +475,9 @@ void
                                          llvm_gcda_summary_info() {<br
                                            class="">
                                           <br class="">
                                               read_32bit_value(); /*
                                          checksum, unused */<br
                                            class="">
                                               read_32bit_value(); /*
                                          num, unused */<br class="">
                                          -    runs +=
                                          read_32bit_value(); /* Add
                                          previous run count to new
                                          counter. */<br class="">
                                          +    uint32_t prev_runs =
                                          read_32bit_value();<br
                                            class="">
                                          +    /* Add previous run count
                                          to new counter, if not already
                                          counted before. */<br class="">
                                          +    runs = run_counted ?
                                          prev_runs : prev_runs + 1;<br
                                            class="">
                                             }<br class="">
                                           <br class="">
                                             cur_pos = save_cur_pos;<br
                                            class="">
                                          @@ -447,6 +495,8 @@ void
                                          llvm_gcda_summary_info() {<br
                                            class="">
                                             write_bytes("\0\0\0\xa3",
                                          4); /* tag indicates 1 program
                                          */<br class="">
                                             write_32bit_value(0); /* 0
                                          length */<br class="">
                                           <br class="">
                                          +  run_counted = 1;<br
                                            class="">
                                          +<br class="">
                                           #ifdef DEBUG_GCDAPROFILING<br
                                            class="">
                                             fprintf(stderr, "llvmgcda:
                                            %u runs\n", runs);<br
                                            class="">
                                           #endif<br class="">
                                          @@ -479,61 +529,34 @@ void
                                          llvm_gcda_end_file() {<br
                                            class="">
                                           }<br class="">
                                           <br class="">
                                           COMPILER_RT_VISIBILITY<br
                                            class="">
                                          -void
                                          llvm_register_writeout_function(writeout_fn
                                          fn) {<br class="">
                                          -  struct writeout_fn_node
                                          *new_node =
                                          malloc(sizeof(struct
                                          writeout_fn_node));<br
                                            class="">
                                          -  new_node->fn = fn;<br
                                            class="">
                                          -  new_node->next = NULL;<br
                                            class="">
                                          -<br class="">
                                          -  if (!writeout_fn_head) {<br
                                            class="">
                                          -    writeout_fn_head =
                                          writeout_fn_tail = new_node;<br
                                            class="">
                                          -  } else {<br class="">
                                          -    writeout_fn_tail->next
                                          = new_node;<br class="">
                                          -    writeout_fn_tail =
                                          new_node;<br class="">
                                          -  }<br class="">
                                          +void
                                          llvm_register_writeout_function(fn_ptr
                                          fn) {<br class="">
                                          +
                                           fn_list_insert(&writeout_fn_list,
                                          fn);<br class="">
                                           }<br class="">
                                           <br class="">
                                           COMPILER_RT_VISIBILITY<br
                                            class="">
                                           void
                                          llvm_writeout_files(void) {<br
                                            class="">
                                          -  struct writeout_fn_node
                                          *curr = writeout_fn_head;<br
                                            class="">
                                          +  struct fn_node *curr =
                                          writeout_fn_list.head;<br
                                            class="">
                                           <br class="">
                                             while (curr) {<br class="">
                                          -    curr->fn();<br
                                            class="">
                                          +    if (curr->id ==
                                          CURRENT_ID) {<br class="">
                                          +      curr->fn();<br
                                            class="">
                                          +    }<br class="">
                                               curr = curr->next;<br
                                            class="">
                                             }<br class="">
                                           }<br class="">
                                           <br class="">
                                           COMPILER_RT_VISIBILITY<br
                                            class="">
                                           void
                                          llvm_delete_writeout_function_list(void)
                                          {<br class="">
                                          -  while (writeout_fn_head) {<br
                                            class="">
                                          -    struct writeout_fn_node
                                          *node = writeout_fn_head;<br
                                            class="">
                                          -    writeout_fn_head =
                                          writeout_fn_head->next;<br
                                            class="">
                                          -    free(node);<br class="">
                                          -  }<br class="">
                                          -  <br class="">
                                          -  writeout_fn_head =
                                          writeout_fn_tail = NULL;<br
                                            class="">
                                          +
                                           fn_list_remove(&writeout_fn_list);<br
                                            class="">
                                           }<br class="">
                                           <br class="">
                                           COMPILER_RT_VISIBILITY<br
                                            class="">
                                          -void
                                          llvm_register_flush_function(flush_fn
                                          fn) {<br class="">
                                          -  struct flush_fn_node
                                          *new_node =
                                          malloc(sizeof(struct
                                          flush_fn_node));<br class="">
                                          -  new_node->fn = fn;<br
                                            class="">
                                          -  new_node->next = NULL;<br
                                            class="">
                                          -<br class="">
                                          -  if (!flush_fn_head) {<br
                                            class="">
                                          -    flush_fn_head =
                                          flush_fn_tail = new_node;<br
                                            class="">
                                          -  } else {<br class="">
                                          -    flush_fn_tail->next =
                                          new_node;<br class="">
                                          -    flush_fn_tail = new_node;<br
                                            class="">
                                          -  }<br class="">
                                          +void
                                          llvm_register_flush_function(fn_ptr
                                          fn) {<br class="">
                                          +
                                           fn_list_insert(&flush_fn_list,
                                          fn);<br class="">
                                           }<br class="">
                                           <br class="">
                                          -// __gcov_flush is hidden.
                                          When called in a .so file,<br
                                            class="">
                                          -// it dumps profile data of
                                          the calling .so file.<br
                                            class="">
                                          -// If a main program needs to
                                          dump profile data of each
                                          linked<br class="">
                                          -// .so files, it should use
                                          dlsym to find and call
                                          llvm_gcov_flush.<br class="">
                                          -COMPILER_RT_VISIBILITY<br
                                            class="">
                                           void __gcov_flush() {<br
                                            class="">
                                          -  struct flush_fn_node *curr
                                          = flush_fn_head;<br class="">
                                          +  struct fn_node* curr =
                                          flush_fn_list.head;<br
                                            class="">
                                           <br class="">
                                             while (curr) {<br class="">
                                               curr->fn();<br
                                            class="">
                                          @@ -541,25 +564,13 @@ void
                                          __gcov_flush() {<br class="">
                                             }<br class="">
                                           }<br class="">
                                           <br class="">
                                          -// llvm_gcov_flush is not
                                          hidden for a program to use
                                          dlsym to<br class="">
                                          -// find and call for any
                                          linked .so file.<br class="">
                                          -void llvm_gcov_flush() {<br
                                            class="">
                                          -  __gcov_flush();<br class="">
                                          -}<br class="">
                                          -<br class="">
                                           COMPILER_RT_VISIBILITY<br
                                            class="">
                                           void
                                          llvm_delete_flush_function_list(void)
                                          {<br class="">
                                          -  while (flush_fn_head) {<br
                                            class="">
                                          -    struct flush_fn_node
                                          *node = flush_fn_head;<br
                                            class="">
                                          -    flush_fn_head =
                                          flush_fn_head->next;<br
                                            class="">
                                          -    free(node);<br class="">
                                          -  }<br class="">
                                          -<br class="">
                                          -  flush_fn_head =
                                          flush_fn_tail = NULL;<br
                                            class="">
                                          +
                                           fn_list_remove(&flush_fn_list);<br
                                            class="">
                                           }<br class="">
                                           <br class="">
                                           COMPILER_RT_VISIBILITY<br
                                            class="">
                                          -void
                                          llvm_gcov_init(writeout_fn
                                          wfn, flush_fn ffn) {<br
                                            class="">
                                          +void llvm_gcov_init(fn_ptr
                                          wfn, fn_ptr ffn) {<br class="">
                                             static int atexit_ran = 0;<br
                                            class="">
                                           <br class="">
                                             if (wfn)<br class="">
                                          <br class="">
                                          Modified:
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main.c<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main.c?rev=336365&r1=336364&r2=336365&view=diff"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main.c?rev=336365&r1=336364&r2=336365&view=diff</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main.c
                                          (original)<br class="">
                                          +++
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main.c
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -10,6 +10,12 @@ int
                                          main(int argc, char *argv[]) {<br
                                            class="">
                                               return EXIT_FAILURE;<br
                                            class="">
                                             }<br class="">
                                           <br class="">
                                          +  void (*func)(void) = (void
                                          (*)(void))dlsym(f1_handle,
                                          "func");<br class="">
                                          +  if (func == NULL) {<br
                                            class="">
                                          +    fprintf(stderr, "unable
                                          to lookup symbol 'func':
                                          %s\n", dlerror());<br class="">
                                          +    return EXIT_FAILURE;<br
                                            class="">
                                          +  }<br class="">
                                          +<br class="">
                                             dlerror();<br class="">
                                             void *f2_handle =
                                          dlopen("func2.shared",
                                          RTLD_LAZY | RTLD_GLOBAL);<br
                                            class="">
                                             if (f2_handle == NULL) {<br
                                            class="">
                                          @@ -17,31 +23,44 @@ int
                                          main(int argc, char *argv[]) {<br
                                            class="">
                                               return EXIT_FAILURE;<br
                                            class="">
                                             }<br class="">
                                           <br class="">
                                          -  dlerror();<br class="">
                                          -  void (*gcov_flush)() =
                                          (void (*)())dlsym(f1_handle,
                                          "__gcov_flush");<br class="">
                                          -  if (gcov_flush != NULL ||
                                          dlerror() == NULL) {<br
                                            class="">
                                          -    fprintf(stderr,
                                          "__gcov_flush should not be
                                          visible in func.shared'\n");<br
                                            class="">
                                          +  void (*func2)(void) = (void
                                          (*)(void))dlsym(f2_handle,
                                          "func2");<br class="">
                                          +  if (func2 == NULL) {<br
                                            class="">
                                          +    fprintf(stderr, "unable
                                          to lookup symbol 'func2':
                                          %s\n", dlerror());<br class="">
                                          +    return EXIT_FAILURE;<br
                                            class="">
                                          +  }<br class="">
                                          +  func2();<br class="">
                                          +<br class="">
                                          +#ifdef USE_LIB3<br class="">
                                          +  void *f3_handle =
                                          dlopen("func3.shared",
                                          RTLD_LAZY | RTLD_GLOBAL);<br
                                            class="">
                                          +  if (f3_handle == NULL) {<br
                                            class="">
                                          +    fprintf(stderr, "unable
                                          to open 'func3.shared': %s\n",
                                          dlerror());<br class="">
                                          +    return EXIT_FAILURE;<br
                                            class="">
                                          +  }<br class="">
                                          +<br class="">
                                          +  void (*func3)(void) = (void
                                          (*)(void))dlsym(f3_handle,
                                          "func3");<br class="">
                                          +  if (func3 == NULL) {<br
                                            class="">
                                          +    fprintf(stderr, "unable
                                          to lookup symbol 'func3':
                                          %s\n", dlerror());<br class="">
                                               return EXIT_FAILURE;<br
                                            class="">
                                             }<br class="">
                                          +  func3();<br class="">
                                          +#endif<br class="">
                                           <br class="">
                                             dlerror();<br class="">
                                          -  void (*f1_flush)() = (void
                                          (*)())dlsym(f1_handle,
                                          "llvm_gcov_flush");<br
                                            class="">
                                          -  if (f1_flush == NULL) {<br
                                            class="">
                                          -    fprintf(stderr, "unable
                                          to find llvm_gcov_flush in
                                          func.shared': %s\n",
                                          dlerror());<br class="">
                                          +  void (*gcov_flush1)() =
                                          (void (*)())dlsym(f1_handle,
                                          "__gcov_flush");<br class="">
                                          +  if (gcov_flush1 == NULL) {<br
                                            class="">
                                          +    fprintf(stderr, "unable
                                          to find __gcov_flush in
                                          func.shared': %s\n",
                                          dlerror());<br class="">
                                               return EXIT_FAILURE;<br
                                            class="">
                                             }<br class="">
                                          -  f1_flush();<br class="">
                                           <br class="">
                                             dlerror();<br class="">
                                          -  void (*f2_flush)() = (void
                                          (*)())dlsym(f2_handle,
                                          "llvm_gcov_flush");<br
                                            class="">
                                          -  if (f2_flush == NULL) {<br
                                            class="">
                                          -    fprintf(stderr, "unable
                                          to find llvm_gcov_flush in
                                          func2.shared': %s\n",
                                          dlerror());<br class="">
                                          +  void (*gcov_flush2)() =
                                          (void (*)())dlsym(f2_handle,
                                          "__gcov_flush");<br class="">
                                          +  if (gcov_flush2 == NULL) {<br
                                            class="">
                                          +    fprintf(stderr, "unable
                                          to find __gcov_flush in
                                          func2.shared': %s\n",
                                          dlerror());<br class="">
                                               return EXIT_FAILURE;<br
                                            class="">
                                             }<br class="">
                                          -  f2_flush();<br class="">
                                           <br class="">
                                          -  if (f1_flush == f2_flush) {<br
                                            class="">
                                          -    fprintf(stderr, "Same
                                          llvm_gcov_flush found in
                                          func.shared and
                                          func2.shared\n");<br class="">
                                          +  if (gcov_flush1 ==
                                          gcov_flush2) {<br class="">
                                          +    fprintf(stderr, "Same
                                          __gcov_flush found in
                                          func.shared and
                                          func2.shared\n");<br class="">
                                               return EXIT_FAILURE;<br
                                            class="">
                                             }<br class="">
                                           <br class="">
                                          @@ -51,6 +70,17 @@ int
                                          main(int argc, char *argv[]) {<br
                                            class="">
                                               return EXIT_FAILURE;<br
                                            class="">
                                             }<br class="">
                                           <br class="">
                                          +  func();<br class="">
                                          +<br class="">
                                          +  int g1 = 0;<br class="">
                                          +  int g2 = 0;<br class="">
                                          +  int n = 10;<br class="">
                                          +<br class="">
                                          +  if (n % 5 == 0)<br class="">
                                          +    g1++;<br class="">
                                          +  else<br class="">
                                          +    g2++;<br class="">
                                          +<br class="">
                                             return EXIT_SUCCESS;<br
                                            class="">
                                           }<br class="">
                                           <br class="">
                                          <br class="">
                                          Added:
compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main.c.gcov
                                          (added)<br class="">
                                          +++
compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,91 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-dlopen-dlclose-main.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-dlopen-dlclose-main.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-dlopen-dlclose-main.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           1:#include <dlfcn.h><br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           2:#include <stdio.h><br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           3:#include <stdlib.h><br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           4:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           5:int main(int argc, char
                                          *argv[]) {<br class="">
                                          +// CHECK-NEXT:        1:  
                                           6:  dlerror();<br class="">
                                          +// CHECK-NEXT:        1:  
                                           7:  void *f1_handle =
                                          dlopen("func.shared",
                                          RTLD_LAZY | RTLD_GLOBAL);<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                           8:  if (f1_handle == NULL) {<br
                                            class="">
                                          +// CHECK-NEXT:    #####:  
                                           9:    fprintf(stderr, "unable
                                          to open 'func.shared': %s\n",
                                          dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          10:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          11:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          12:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          13:  void (*func)(void) =
                                          (void
                                          (*)(void))dlsym(f1_handle,
                                          "func");<br class="">
                                          +// CHECK-NEXT:        1:  
                                          14:  if (func == NULL) {<br
                                            class="">
                                          +// CHECK-NEXT:    #####:  
                                          15:    fprintf(stderr, "unable
                                          to lookup symbol 'func':
                                          %s\n", dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          16:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          17:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          18:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          19:  dlerror();<br class="">
                                          +// CHECK-NEXT:        1:  
                                          20:  void *f2_handle =
                                          dlopen("func2.shared",
                                          RTLD_LAZY | RTLD_GLOBAL);<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          21:  if (f2_handle == NULL) {<br
                                            class="">
                                          +// CHECK-NEXT:    #####:  
                                          22:    fprintf(stderr, "unable
                                          to open 'func2.shared': %s\n",
                                          dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          23:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          24:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          25:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          26:  void (*func2)(void) =
                                          (void
                                          (*)(void))dlsym(f2_handle,
                                          "func2");<br class="">
                                          +// CHECK-NEXT:        1:  
                                          27:  if (func2 == NULL) {<br
                                            class="">
                                          +// CHECK-NEXT:    #####:  
                                          28:    fprintf(stderr, "unable
                                          to lookup symbol 'func2':
                                          %s\n", dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          29:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          30:  }<br class="">
                                          +// CHECK-NEXT:        1:  
                                          31:  func2();<br class="">
                                          +// CHECK-NEXT:        -:  
                                          32:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          33:#ifdef USE_LIB3<br class="">
                                          +// CHECK-NEXT:        -:  
                                          34:  void *f3_handle =
                                          dlopen("func3.shared",
                                          RTLD_LAZY | RTLD_GLOBAL);<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          35:  if (f3_handle == NULL) {<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          36:    fprintf(stderr, "unable
                                          to open 'func3.shared': %s\n",
                                          dlerror());<br class="">
                                          +// CHECK-NEXT:        -:  
                                          37:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          38:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          39:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          40:  void (*func3)(void) =
                                          (void
                                          (*)(void))dlsym(f3_handle,
                                          "func3");<br class="">
                                          +// CHECK-NEXT:        -:  
                                          41:  if (func3 == NULL) {<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          42:    fprintf(stderr, "unable
                                          to lookup symbol 'func3':
                                          %s\n", dlerror());<br class="">
                                          +// CHECK-NEXT:        -:  
                                          43:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          44:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          45:  func3();<br class="">
                                          +// CHECK-NEXT:        -:  
                                          46:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          47:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          48:  dlerror();<br class="">
                                          +// CHECK-NEXT:        1:  
                                          49:  void (*gcov_flush1)() =
                                          (void (*)())dlsym(f1_handle,
                                          "__gcov_flush");<br class="">
                                          +// CHECK-NEXT:        1:  
                                          50:  if (gcov_flush1 == NULL)
                                          {<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          51:    fprintf(stderr, "unable
                                          to find __gcov_flush in
                                          func.shared': %s\n",
                                          dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          52:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          53:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          54:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          55:  dlerror();<br class="">
                                          +// CHECK-NEXT:        1:  
                                          56:  void (*gcov_flush2)() =
                                          (void (*)())dlsym(f2_handle,
                                          "__gcov_flush");<br class="">
                                          +// CHECK-NEXT:        1:  
                                          57:  if (gcov_flush2 == NULL)
                                          {<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          58:    fprintf(stderr, "unable
                                          to find __gcov_flush in
                                          func2.shared': %s\n",
                                          dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          59:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          60:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          61:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          62:  if (gcov_flush1 ==
                                          gcov_flush2) {<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          63:    fprintf(stderr, "Same
                                          __gcov_flush found in
                                          func.shared and
                                          func2.shared\n");<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          64:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          65:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          66:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          67:  dlerror();<br class="">
                                          +// CHECK-NEXT:        1:  
                                          68:  if (dlclose(f2_handle) !=
                                          0) {<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          69:    fprintf(stderr, "unable
                                          to close 'func2.shared':
                                          %s\n", dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          70:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          71:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          72:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          73:  func();<br class="">
                                          +// CHECK-NEXT:        -:  
                                          74:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          75:  int g1 = 0;<br class="">
                                          +// CHECK-NEXT:        1:  
                                          76:  int g2 = 0;<br class="">
                                          +// CHECK-NEXT:        1:  
                                          77:  int n = 10;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          78:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          79:  if (n % 5 == 0)<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          80:    g1++;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          81:  else<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          82:    g2++;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          83:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          84:  return EXIT_SUCCESS;<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          85:}<br class="">
                                          +// CHECK-NEXT:        -:  
                                          86:<br class="">
                                          <br class="">
                                          Added:
compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main_three-libs.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main_three-libs.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main_three-libs.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main_three-libs.c.gcov
                                          (added)<br class="">
                                          +++
compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-dlclose-main_three-libs.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,91 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-dlopen-dlclose-main.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-dlopen-dlclose-main.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-dlopen-dlclose-main.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           1:#include <dlfcn.h><br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           2:#include <stdio.h><br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           3:#include <stdlib.h><br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           4:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           5:int main(int argc, char
                                          *argv[]) {<br class="">
                                          +// CHECK-NEXT:        1:  
                                           6:  dlerror();<br class="">
                                          +// CHECK-NEXT:        1:  
                                           7:  void *f1_handle =
                                          dlopen("func.shared",
                                          RTLD_LAZY | RTLD_GLOBAL);<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                           8:  if (f1_handle == NULL) {<br
                                            class="">
                                          +// CHECK-NEXT:    #####:  
                                           9:    fprintf(stderr, "unable
                                          to open 'func.shared': %s\n",
                                          dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          10:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          11:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          12:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          13:  void (*func)(void) =
                                          (void
                                          (*)(void))dlsym(f1_handle,
                                          "func");<br class="">
                                          +// CHECK-NEXT:        1:  
                                          14:  if (func == NULL) {<br
                                            class="">
                                          +// CHECK-NEXT:    #####:  
                                          15:    fprintf(stderr, "unable
                                          to lookup symbol 'func':
                                          %s\n", dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          16:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          17:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          18:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          19:  dlerror();<br class="">
                                          +// CHECK-NEXT:        1:  
                                          20:  void *f2_handle =
                                          dlopen("func2.shared",
                                          RTLD_LAZY | RTLD_GLOBAL);<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          21:  if (f2_handle == NULL) {<br
                                            class="">
                                          +// CHECK-NEXT:    #####:  
                                          22:    fprintf(stderr, "unable
                                          to open 'func2.shared': %s\n",
                                          dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          23:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          24:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          25:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          26:  void (*func2)(void) =
                                          (void
                                          (*)(void))dlsym(f2_handle,
                                          "func2");<br class="">
                                          +// CHECK-NEXT:        1:  
                                          27:  if (func2 == NULL) {<br
                                            class="">
                                          +// CHECK-NEXT:    #####:  
                                          28:    fprintf(stderr, "unable
                                          to lookup symbol 'func2':
                                          %s\n", dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          29:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          30:  }<br class="">
                                          +// CHECK-NEXT:        1:  
                                          31:  func2();<br class="">
                                          +// CHECK-NEXT:        -:  
                                          32:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          33:#ifdef USE_LIB3<br class="">
                                          +// CHECK-NEXT:        1:  
                                          34:  void *f3_handle =
                                          dlopen("func3.shared",
                                          RTLD_LAZY | RTLD_GLOBAL);<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          35:  if (f3_handle == NULL) {<br
                                            class="">
                                          +// CHECK-NEXT:    #####:  
                                          36:    fprintf(stderr, "unable
                                          to open 'func3.shared': %s\n",
                                          dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          37:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          38:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          39:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          40:  void (*func3)(void) =
                                          (void
                                          (*)(void))dlsym(f3_handle,
                                          "func3");<br class="">
                                          +// CHECK-NEXT:        1:  
                                          41:  if (func3 == NULL) {<br
                                            class="">
                                          +// CHECK-NEXT:    #####:  
                                          42:    fprintf(stderr, "unable
                                          to lookup symbol 'func3':
                                          %s\n", dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          43:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          44:  }<br class="">
                                          +// CHECK-NEXT:        1:  
                                          45:  func3();<br class="">
                                          +// CHECK-NEXT:        -:  
                                          46:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          47:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          48:  dlerror();<br class="">
                                          +// CHECK-NEXT:        1:  
                                          49:  void (*gcov_flush1)() =
                                          (void (*)())dlsym(f1_handle,
                                          "__gcov_flush");<br class="">
                                          +// CHECK-NEXT:        1:  
                                          50:  if (gcov_flush1 == NULL)
                                          {<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          51:    fprintf(stderr, "unable
                                          to find __gcov_flush in
                                          func.shared': %s\n",
                                          dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          52:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          53:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          54:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          55:  dlerror();<br class="">
                                          +// CHECK-NEXT:        1:  
                                          56:  void (*gcov_flush2)() =
                                          (void (*)())dlsym(f2_handle,
                                          "__gcov_flush");<br class="">
                                          +// CHECK-NEXT:        1:  
                                          57:  if (gcov_flush2 == NULL)
                                          {<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          58:    fprintf(stderr, "unable
                                          to find __gcov_flush in
                                          func2.shared': %s\n",
                                          dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          59:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          60:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          61:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          62:  if (gcov_flush1 ==
                                          gcov_flush2) {<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          63:    fprintf(stderr, "Same
                                          __gcov_flush found in
                                          func.shared and
                                          func2.shared\n");<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          64:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          65:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          66:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          67:  dlerror();<br class="">
                                          +// CHECK-NEXT:        1:  
                                          68:  if (dlclose(f2_handle) !=
                                          0) {<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          69:    fprintf(stderr, "unable
                                          to close 'func2.shared':
                                          %s\n", dlerror());<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          70:    return EXIT_FAILURE;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          71:  }<br class="">
                                          +// CHECK-NEXT:        -:  
                                          72:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          73:  func();<br class="">
                                          +// CHECK-NEXT:        -:  
                                          74:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          75:  int g1 = 0;<br class="">
                                          +// CHECK-NEXT:        1:  
                                          76:  int g2 = 0;<br class="">
                                          +// CHECK-NEXT:        1:  
                                          77:  int n = 10;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          78:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          79:  if (n % 5 == 0)<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          80:    g1++;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          81:  else<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          82:    g2++;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          83:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          84:  return EXIT_SUCCESS;<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          85:}<br class="">
                                          +// CHECK-NEXT:        -:  
                                          86:<br class="">
                                          <br class="">
                                          Added:
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func.c.gcov
                                          (added)<br class="">
                                          +++
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,6 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-dlopen-func.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-dlopen-func.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-dlopen-func.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        3:  
                                           1:void func(int K) { if (K)
                                          {} }<br class="">
                                          <br class="">
                                          Added:
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func2.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func2.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func2.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func2.c.gcov
                                          (added)<br class="">
                                          +++
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func2.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,6 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-dlopen-func2.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-dlopen-func2.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-dlopen-func2.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        3:  
                                           1:void func2(int K) { if (K)
                                          {} }<br class="">
                                          <br class="">
                                          Added:
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func3.c<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func3.c?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func3.c?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func3.c
                                          (added)<br class="">
                                          +++
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func3.c
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1 @@<br class="">
                                          +void func3(int K) { if (K) {}
                                          }<br class="">
                                          <br class="">
                                          Added:
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func3.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func3.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func3.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func3.c.gcov
                                          (added)<br class="">
                                          +++
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-dlopen-func3.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,6 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-dlopen-func2.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-dlopen-func2.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-dlopen-func2.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        3:  
                                           1:void func2(int K) { if (K)
                                          {} }<br class="">
                                          <br class="">
                                          Added:
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib.c.gcov
                                          (added)<br class="">
                                          +++
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,14 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-shared-lib.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-shared-lib.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-shared-lib.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           1:int g1 = 0;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           2:int g2 = 1;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           3:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           4:void foo(int n) {<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                           5:  if (n % 5 == 0)<br
                                            class="">
                                          +// CHECK-NEXT:    #####:  
                                           6:    g1++;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           7:  else<br class="">
                                          +// CHECK-NEXT:        1:  
                                           8:    g2++;<br class="">
                                          +// CHECK-NEXT:        1:  
                                           9:}<br class="">
                                          <br class="">
                                          Added:
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib_called-twice.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib_called-twice.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib_called-twice.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib_called-twice.c.gcov
                                          (added)<br class="">
                                          +++
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib_called-twice.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,14 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-shared-lib.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-shared-lib.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-shared-lib.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           1:int g1 = 0;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           2:int g2 = 1;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           3:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           4:void foo(int n) {<br
                                            class="">
                                          +// CHECK-NEXT:        2:  
                                           5:  if (n % 5 == 0)<br
                                            class="">
                                          +// CHECK-NEXT:    #####:  
                                           6:    g1++;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           7:  else<br class="">
                                          +// CHECK-NEXT:        2:  
                                           8:    g2++;<br class="">
                                          +// CHECK-NEXT:        2:  
                                           9:}<br class="">
                                          <br class="">
                                          Added:
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib_in-loop.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib_in-loop.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib_in-loop.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib_in-loop.c.gcov
                                          (added)<br class="">
                                          +++
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-lib_in-loop.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,14 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-shared-lib.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-shared-lib.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-shared-lib.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           1:int g1 = 0;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           2:int g2 = 1;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           3:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           4:void foo(int n) {<br
                                            class="">
                                          +// CHECK-NEXT:  1000000:  
                                           5:  if (n % 5 == 0)<br
                                            class="">
                                          +// CHECK-NEXT:   360000:  
                                           6:    g1++;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           7:  else<br class="">
                                          +// CHECK-NEXT:   640000:  
                                           8:    g2++;<br class="">
                                          +// CHECK-NEXT:  1000000:  
                                           9:}<br class="">
                                          <br class="">
                                          Added:
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush.c<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush.c?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush.c?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush.c
                                          (added)<br class="">
                                          +++
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush.c
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,36 @@<br class="">
                                          +extern void foo(int n);<br
                                            class="">
                                          +extern void
                                          __gcov_flush(void);<br
                                            class="">
                                          +<br class="">
                                          +int bar1 = 0;<br class="">
                                          +int bar2 = 1;<br class="">
                                          +<br class="">
                                          +void bar(int n) {<br class="">
                                          +  if (n % 5 == 0)<br class="">
                                          +    bar1++;<br class="">
                                          +  else<br class="">
                                          +    bar2++;<br class="">
                                          +}<br class="">
                                          +<br class="">
                                          +int main(int argc, char
                                          *argv[]) {<br class="">
                                          +#ifdef
                                          SHARED_CALL_BEFORE_GCOV_FLUSH<br
                                            class="">
                                          +  foo(1);<br class="">
                                          +#endif<br class="">
                                          +<br class="">
                                          +  bar(5);<br class="">
                                          +<br class="">
                                          +  __gcov_flush();<br class="">
                                          +<br class="">
                                          +  bar(5);<br class="">
                                          +<br class="">
                                          +#ifdef
                                          SHARED_CALL_AFTER_GCOV_FLUSH<br
                                            class="">
                                          +  foo(1);<br class="">
                                          +#endif<br class="">
                                          +<br class="">
                                          +#ifdef EXIT_ABRUPTLY<br
                                            class="">
                                          +  _exit(0);<br class="">
                                          +#endif<br class="">
                                          +<br class="">
                                          +  bar(5);<br class="">
                                          +<br class="">
                                          +  return 0;<br class="">
                                          +}<br class="">
                                          <br class="">
                                          Added:
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_no-writeout.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_no-writeout.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_no-writeout.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_no-writeout.c.gcov
                                          (added)<br class="">
                                          +++
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_no-writeout.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,41 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-shared-main-gcov-flush.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-shared-main-gcov-flush.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-shared-main-gcov-flush.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           1:extern void foo(int n);<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           2:extern void
                                          __gcov_flush(void);<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           3:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           4:int bar1 = 0;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           5:int bar2 = 1;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           6:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           7:void bar(int n) {<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                           8:  if (n % 5 == 0)<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                           9:    bar1++;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          10:  else<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          11:    bar2++;<br class="">
                                          +// CHECK-NEXT:        1:  
                                          12:}<br class="">
                                          +// CHECK-NEXT:        -:  
                                          13:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          14:int main(int argc, char
                                          *argv[]) {<br class="">
                                          +// CHECK-NEXT:        -:  
                                          15:#ifdef
                                          SHARED_CALL_BEFORE_GCOV_FLUSH<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          16:  foo(1);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          17:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          18:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          19:  bar(5);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          20:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          21:  __gcov_flush();<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          22:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          23:  bar(5);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          24:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          25:#ifdef
                                          SHARED_CALL_AFTER_GCOV_FLUSH<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          26:  foo(1);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          27:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          28:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          29:#ifdef EXIT_ABRUPTLY<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          30:  _exit(0);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          31:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          32:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          33:  bar(5);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          34:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          35:  return 0;<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          36:}<br class="">
                                          <br class="">
                                          Added:
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-after.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-after.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-after.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-after.c.gcov
                                          (added)<br class="">
                                          +++
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-after.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,41 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-shared-main-gcov-flush.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-shared-main-gcov-flush.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-shared-main-gcov-flush.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           1:extern void foo(int n);<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           2:extern void
                                          __gcov_flush(void);<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           3:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           4:int bar1 = 0;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           5:int bar2 = 1;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           6:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           7:void bar(int n) {<br
                                            class="">
                                          +// CHECK-NEXT:        3:  
                                           8:  if (n % 5 == 0)<br
                                            class="">
                                          +// CHECK-NEXT:        3:  
                                           9:    bar1++;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          10:  else<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          11:    bar2++;<br class="">
                                          +// CHECK-NEXT:        3:  
                                          12:}<br class="">
                                          +// CHECK-NEXT:        -:  
                                          13:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          14:int main(int argc, char
                                          *argv[]) {<br class="">
                                          +// CHECK-NEXT:        -:  
                                          15:#ifdef
                                          SHARED_CALL_BEFORE_GCOV_FLUSH<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          16:  foo(1);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          17:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          18:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          19:  bar(5);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          20:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          21:  __gcov_flush();<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          22:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          23:  bar(5);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          24:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          25:#ifdef
                                          SHARED_CALL_AFTER_GCOV_FLUSH<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          26:  foo(1);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          27:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          28:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          29:#ifdef EXIT_ABRUPTLY<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          30:  _exit(0);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          31:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          32:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          33:  bar(5);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          34:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          35:  return 0;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          36:}<br class="">
                                          <br class="">
                                          Added:
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-before-after.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-before-after.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-before-after.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-before-after.c.gcov
                                          (added)<br class="">
                                          +++
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-before-after.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,41 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-shared-main-gcov-flush.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-shared-main-gcov-flush.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-shared-main-gcov-flush.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           1:extern void foo(int n);<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           2:extern void
                                          __gcov_flush(void);<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           3:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           4:int bar1 = 0;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           5:int bar2 = 1;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           6:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           7:void bar(int n) {<br
                                            class="">
                                          +// CHECK-NEXT:        3:  
                                           8:  if (n % 5 == 0)<br
                                            class="">
                                          +// CHECK-NEXT:        3:  
                                           9:    bar1++;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          10:  else<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          11:    bar2++;<br class="">
                                          +// CHECK-NEXT:        3:  
                                          12:}<br class="">
                                          +// CHECK-NEXT:        -:  
                                          13:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          14:int main(int argc, char
                                          *argv[]) {<br class="">
                                          +// CHECK-NEXT:        -:  
                                          15:#ifdef
                                          SHARED_CALL_BEFORE_GCOV_FLUSH<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          16:  foo(1);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          17:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          18:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          19:  bar(5);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          20:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          21:  __gcov_flush();<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          22:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          23:  bar(5);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          24:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          25:#ifdef
                                          SHARED_CALL_AFTER_GCOV_FLUSH<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          26:  foo(1);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          27:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          28:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          29:#ifdef EXIT_ABRUPTLY<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          30:  _exit(0);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          31:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          32:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          33:  bar(5);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          34:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          35:  return 0;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          36:}<br class="">
                                          <br class="">
                                          Added:
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-before.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-before.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-before.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-before.c.gcov
                                          (added)<br class="">
                                          +++
compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main-gcov-flush_shared-call-before.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,41 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-shared-main-gcov-flush.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-shared-main-gcov-flush.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-shared-main-gcov-flush.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           1:extern void foo(int n);<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           2:extern void
                                          __gcov_flush(void);<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           3:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           4:int bar1 = 0;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           5:int bar2 = 1;<br class="">
                                          +// CHECK-NEXT:        -:  
                                           6:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           7:void bar(int n) {<br
                                            class="">
                                          +// CHECK-NEXT:        3:  
                                           8:  if (n % 5 == 0)<br
                                            class="">
                                          +// CHECK-NEXT:        3:  
                                           9:    bar1++;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          10:  else<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          11:    bar2++;<br class="">
                                          +// CHECK-NEXT:        3:  
                                          12:}<br class="">
                                          +// CHECK-NEXT:        -:  
                                          13:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          14:int main(int argc, char
                                          *argv[]) {<br class="">
                                          +// CHECK-NEXT:        -:  
                                          15:#ifdef
                                          SHARED_CALL_BEFORE_GCOV_FLUSH<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          16:  foo(1);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          17:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          18:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          19:  bar(5);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          20:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          21:  __gcov_flush();<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          22:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          23:  bar(5);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          24:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          25:#ifdef
                                          SHARED_CALL_AFTER_GCOV_FLUSH<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          26:  foo(1);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          27:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          28:<br class="">
                                          +// CHECK-NEXT:        -:  
                                          29:#ifdef EXIT_ABRUPTLY<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                          30:  _exit(0);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          31:#endif<br class="">
                                          +// CHECK-NEXT:        -:  
                                          32:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          33:  bar(5);<br class="">
                                          +// CHECK-NEXT:        -:  
                                          34:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          35:  return 0;<br class="">
                                          +// CHECK-NEXT:        -:  
                                          36:}<br class="">
                                          <br class="">
                                          Added:
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main.c.gcov<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main.c.gcov?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main.c.gcov?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main.c.gcov
                                          (added)<br class="">
                                          +++
                                          compiler-rt/trunk/test/profile/Inputs/instrprof-shared-main.c.gcov
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,18 @@<br class="">
                                          +// CHECK:        -:  
                                           0:Source:{{.*}}Inputs/instrprof-shared-main.c<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Graph:instrprof-shared-main.gcno<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Data:instrprof-shared-main.gcda<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Runs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           0:Programs:1<br class="">
                                          +// CHECK-NEXT:        -:  
                                           1:extern int g1, g2;<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           2:extern void foo(int n);<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           3:<br class="">
                                          +// CHECK-NEXT:        -:  
                                           4:int main() {<br class="">
                                          +// CHECK-NEXT:        -:  
                                           5:  int i, j;<br class="">
                                          +// CHECK-NEXT:     2002:  
                                           6:  for (i = 0; i < 1000;
                                          i++)<br class="">
                                          +// CHECK-NEXT:  2002000:  
                                           7:    for (j = 0; j <
                                          1000; j++)<br class="">
                                          +// CHECK-NEXT:  1001000:  
                                           8:      foo(i * j);<br
                                            class="">
                                          +// CHECK-NEXT:        -:  
                                           9:<br class="">
                                          +// CHECK-NEXT:        1:  
                                          10:  if (g2 - g1 == 280001)<br
                                            class="">
                                          +// CHECK-NEXT:        1:  
                                          11:    return 0;<br class="">
                                          +// CHECK-NEXT:    #####:  
                                          12:  return 1;<br class="">
                                          +// CHECK-NEXT:        1:  
                                          13:}<br class="">
                                          <br class="">
                                          Modified:
                                          compiler-rt/trunk/test/profile/instrprof-dlopen-dlclose-gcov.test<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/instrprof-dlopen-dlclose-gcov.test?rev=336365&r1=336364&r2=336365&view=diff"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/instrprof-dlopen-dlclose-gcov.test?rev=336365&r1=336364&r2=336365&view=diff</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
                                          compiler-rt/trunk/test/profile/instrprof-dlopen-dlclose-gcov.test
                                          (original)<br class="">
                                          +++
                                          compiler-rt/trunk/test/profile/instrprof-dlopen-dlclose-gcov.test
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -1,6 +1,30 @@<br class="">
                                           RUN: mkdir -p %t.d<br
                                            class="">
                                          -RUN: %clang --coverage -o
                                          %t.d/func.shared -fPIC -shared
%S/Inputs/instrprof-dlopen-func.c<br class="">
                                          -RUN: %clang --coverage -o
                                          %t.d/func2.shared -fPIC
                                          -shared
                                          %S/Inputs/instrprof-dlopen-func2.c<br
                                            class="">
                                          +RUN: cd %t.d<br class="">
                                          +<br class="">
                                          +RUN: %clang --coverage -o
                                          func.shared -fPIC -shared
                                          %S/Inputs/instrprof-dlopen-func.c<br
                                            class="">
                                          +RUN: %clang --coverage -o
                                          func2.shared -fPIC -shared
                                          %S/Inputs/instrprof-dlopen-func2.c<br
                                            class="">
                                          +RUN: %clang --coverage -o
                                          func3.shared -fPIC -shared
                                          %S/Inputs/instrprof-dlopen-func3.c<br
                                            class="">
                                           RUN: %clang --coverage -o %t
                                          -fPIC -rpath %t.d
                                          %S/Inputs/instrprof-dlopen-dlclose-main.c<br
                                            class="">
                                           <br class="">
                                          +# Test with two dlopened
                                          libraries.<br class="">
                                          +RUN: %run %t<br class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-dlopen-dlclose-main.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-dlopen-dlclose-main.c.gcov
%S/Inputs/instrprof-dlopen-dlclose-main.c.gcov<br class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-dlopen-func.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-dlopen-func.c.gcov
                                          %S/Inputs/instrprof-dlopen-func.c.gcov<br
                                            class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-dlopen-func2.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-dlopen-func2.c.gcov
%S/Inputs/instrprof-dlopen-func2.c.gcov<br class="">
                                          +RUN: rm
                                          instrprof-dlopen-dlclose-main.gcda
                                          instrprof-dlopen-func.gcda
                                          instrprof-dlopen-func2.gcda<br
                                            class="">
                                          +<br class="">
                                          +# Test with three dlopened
                                          libraries.<br class="">
                                          +RUN: %clang -DUSE_LIB3
                                          --coverage -o %t -fPIC -rpath
                                          %t.d
                                          %S/Inputs/instrprof-dlopen-dlclose-main.c<br
                                            class="">
                                           RUN: %run %t<br class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-dlopen-dlclose-main.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-dlopen-dlclose-main.c.gcov
%S/Inputs/instrprof-dlopen-dlclose-main_three-libs.c.gcov<br class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-dlopen-func.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-dlopen-func.c.gcov
                                          %S/Inputs/instrprof-dlopen-func.c.gcov<br
                                            class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-dlopen-func2.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-dlopen-func2.c.gcov
%S/Inputs/instrprof-dlopen-func2.c.gcov<br class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-dlopen-func3.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-dlopen-func2.c.gcov
%S/Inputs/instrprof-dlopen-func3.c.gcov<br class="">
                                          +RUN: rm
                                          instrprof-dlopen-dlclose-main.gcda
                                          instrprof-dlopen-func.gcda
                                          instrprof-dlopen-func2.gcda
                                          instrprof-dlopen-func3.gcda<br
                                            class="">
                                          <br class="">
                                          Added:
                                          compiler-rt/trunk/test/profile/instrprof-gcov-two-objects.test<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/instrprof-gcov-two-objects.test?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/instrprof-gcov-two-objects.test?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
                                          compiler-rt/trunk/test/profile/instrprof-gcov-two-objects.test
                                          (added)<br class="">
                                          +++
                                          compiler-rt/trunk/test/profile/instrprof-gcov-two-objects.test
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,18 @@<br class="">
                                          +RUN: mkdir -p %t.d<br
                                            class="">
                                          +RUN: cd %t.d<br class="">
                                          +<br class="">
                                          +RUN: %clang --coverage -o
                                          instrprof-shared-lib.o -c
                                          %S/Inputs/instrprof-shared-lib.c<br
                                            class="">
                                          +RUN: test -f
                                          instrprof-shared-lib.gcno<br
                                            class="">
                                          +<br class="">
                                          +RUN: %clang --coverage -o
                                          instrprof-shared-main.o -c
                                          %S/Inputs/instrprof-shared-main.c<br
                                            class="">
                                          +RUN: test -f
                                          instrprof-shared-main.gcno<br
                                            class="">
                                          +<br class="">
                                          +RUN: %clang --coverage -o %t
                                          instrprof-shared-main.o
                                          instrprof-shared-lib.o<br
                                            class="">
                                          +RUN: test -f %t<br class="">
                                          +<br class="">
                                          +RUN: %run %t<br class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-shared-main.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-shared-main.c.gcov
                                          %S/Inputs/instrprof-shared-main.c.gcov<br
                                            class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-shared-lib.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-shared-lib.c.gcov
                                          %S/Inputs/instrprof-shared-lib_in-loop.c.gcov<br
                                            class="">
                                          +RUN: rm
                                          instrprof-shared-main.gcda
                                          instrprof-shared-lib.gcda<br
                                            class="">
                                          <br class="">
                                          Added:
                                          compiler-rt/trunk/test/profile/instrprof-shared-gcov-flush.test<br
                                            class="">
                                          URL: <a
href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/instrprof-shared-gcov-flush.test?rev=336365&view=auto"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/instrprof-shared-gcov-flush.test?rev=336365&view=auto</a><br
                                            class="">
==============================================================================<br
                                            class="">
                                          ---
                                          compiler-rt/trunk/test/profile/instrprof-shared-gcov-flush.test
                                          (added)<br class="">
                                          +++
                                          compiler-rt/trunk/test/profile/instrprof-shared-gcov-flush.test
                                          Thu Jul  5 08:52:59 2018<br
                                            class="">
                                          @@ -0,0 +1,49 @@<br class="">
                                          +RUN: mkdir -p %t.d<br
                                            class="">
                                          +RUN: cd %t.d<br class="">
                                          +<br class="">
                                          +RUN: %clang --coverage -o
                                          libfunc.so -fPIC -shared
                                          %S/Inputs/instrprof-shared-lib.c<br
                                            class="">
                                          +RUN: test -f
                                          instrprof-shared-lib.gcno<br
                                            class="">
                                          +<br class="">
                                          +# Test the case where we exit
                                          abruptly after calling
                                          __gcov_flush, which means we
                                          don't write out the counters
                                          at exit.<br class="">
                                          +RUN: %clang -DEXIT_ABRUPTLY
                                          -DSHARED_CALL_BEFORE_GCOV_FLUSH
                                          -DSHARED_CALL_AFTER_GCOV_FLUSH
                                          --coverage -o %t -L%t.d -rpath
                                          %t.d -lfunc
                                          %S/Inputs/instrprof-shared-main-gcov-flush.c<br
                                            class="">
                                          +RUN: test -f
                                          instrprof-shared-main-gcov-flush.gcno<br
                                            class="">
                                          +<br class="">
                                          +RUN: %run %t<br class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-shared-main-gcov-flush.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-shared-main-gcov-flush.c.gcov
%S/Inputs/instrprof-shared-main-gcov-flush_no-writeout.c.gcov<br
                                            class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-shared-lib.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-shared-lib.c.gcov
                                          %S/Inputs/instrprof-shared-lib.c.gcov<br
                                            class="">
                                          +RUN: rm
                                          instrprof-shared-main-gcov-flush.gcda
                                          instrprof-shared-lib.gcda<br
                                            class="">
                                          +<br class="">
                                          +# Test the case where we exit
                                          normally and we have a call to
                                          the shared library function
                                          before __gcov_flush.<br
                                            class="">
                                          +RUN: %clang
                                          -DSHARED_CALL_BEFORE_GCOV_FLUSH
                                          --coverage -o %t -L%t.d -rpath
                                          %t.d -lfunc
                                          %S/Inputs/instrprof-shared-main-gcov-flush.c<br
                                            class="">
                                          +RUN: test -f
                                          instrprof-shared-main-gcov-flush.gcno<br
                                            class="">
                                          +<br class="">
                                          +RUN: %run %t<br class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-shared-main-gcov-flush.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-shared-main-gcov-flush.c.gcov
%S/Inputs/instrprof-shared-main-gcov-flush_shared-call-before.c.gcov<br
                                            class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-shared-lib.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-shared-lib.c.gcov
                                          %S/Inputs/instrprof-shared-lib.c.gcov<br
                                            class="">
                                          +RUN: rm
                                          instrprof-shared-main-gcov-flush.gcda
                                          instrprof-shared-lib.gcda<br
                                            class="">
                                          +<br class="">
                                          +# Test the case where we exit
                                          normally and we have a call to
                                          the shared library function
                                          after __gcov_flush.<br
                                            class="">
                                          +RUN: %clang
                                          -DSHARED_CALL_AFTER_GCOV_FLUSH
                                          --coverage -o %t -L%t.d -rpath
                                          %t.d -lfunc
                                          %S/Inputs/instrprof-shared-main-gcov-flush.c<br
                                            class="">
                                          +RUN: test -f
                                          instrprof-shared-main-gcov-flush.gcno<br
                                            class="">
                                          +<br class="">
                                          +RUN: %run %t<br class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-shared-main-gcov-flush.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-shared-main-gcov-flush.c.gcov
%S/Inputs/instrprof-shared-main-gcov-flush_shared-call-after.c.gcov<br
                                            class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-shared-lib.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-shared-lib.c.gcov
                                          %S/Inputs/instrprof-shared-lib.c.gcov<br
                                            class="">
                                          +RUN: rm
                                          instrprof-shared-main-gcov-flush.gcda
                                          instrprof-shared-lib.gcda<br
                                            class="">
                                          +<br class="">
                                          +# Test the case where we exit
                                          normally and we have calls to
                                          the shared library function
                                          before and after __gcov_flush.<br
                                            class="">
                                          +RUN: %clang
                                          -DSHARED_CALL_BEFORE_GCOV_FLUSH
                                          -DSHARED_CALL_AFTER_GCOV_FLUSH
                                          --coverage -o %t -L%t.d -rpath
                                          %t.d -lfunc
                                          %S/Inputs/instrprof-shared-main-gcov-flush.c<br
                                            class="">
                                          +RUN: test -f
                                          instrprof-shared-main-gcov-flush.gcno<br
                                            class="">
                                          +<br class="">
                                          +RUN: %run %t<br class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-shared-main-gcov-flush.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-shared-main-gcov-flush.c.gcov
%S/Inputs/instrprof-shared-main-gcov-flush_shared-call-before-after.c.gcov<br
                                            class="">
                                          +RUN: llvm-cov gcov
                                          instrprof-shared-lib.gcda<br
                                            class="">
                                          +RUN: FileCheck
                                          --match-full-lines
                                          --strict-whitespace
                                          --input-file
                                          instrprof-shared-lib.c.gcov
                                          %S/Inputs/instrprof-shared-lib_called-twice.c.gcov<br
                                            class="">
                                          +RUN: rm
                                          instrprof-shared-main-gcov-flush.gcda
                                          instrprof-shared-lib.gcda<br
                                            class="">
                                          <br class="">
                                          <br class="">
_______________________________________________<br class="">
                                          llvm-commits mailing list<br
                                            class="">
                                          <a
                                            href="mailto:llvm-commits@lists.llvm.org"
                                            target="_blank"
                                            moz-do-not-send="true"
                                            class="">llvm-commits@lists.llvm.org</a><br
                                            class="">
                                          <a
                                            href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits"
                                            moz-do-not-send="true"
                                            target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a></font><br
                                          class="">
                                         </div>
                                    </blockquote>
                                    <div dir="ltr" class=""> </div>
                                  </div>
                                </blockquote>
                              </div>
_______________________________________________<br class="">
                              llvm-commits mailing list<br class="">
                              <a
                                href="mailto:llvm-commits@lists.llvm.org"
                                target="_blank" moz-do-not-send="true"
                                class="">llvm-commits@lists.llvm.org</a><br
                                class="">
                              <span class=""><a
                                  href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits"
                                  target="_blank" moz-do-not-send="true"
                                  class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a></span></div>
                          </blockquote>
                        </div>
                      </div>
                    </blockquote>
                    <div dir="ltr" class=""> </div>
                  </div>
                  <br class="">
                </blockquote>
                <br class="">
              </div>
            </div>
          </blockquote>
        </div>
        <br class="">
      </div>
    </blockquote>
    <br>
  </body>
</html>