<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
(¤t_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>