<div dir="ltr">Hello, Bill!<div><br></div><div>I'm sorry, but this commit seems having break clang-x86_64-debian-fast  buildbot.</div><div>(<a href="http://lab.llvm.org:8011/builders/clang-x86_64-debian-fast/builds/2934">http://lab.llvm.org:8011/builders/clang-x86_64-debian-fast/builds/2934</a>)<br>

</div><div><div>/home/llvmbb/llvm-build-dir/clang-x86_64-debian-fast/llvm.src/projects/compiler-rt/lib/profile/GCDAProfiling.c:398:5: error: implicit declaration of function 'atexit' is invalid in C99 [-Werror,-Wimplicit-function-declaration]</div>

<div>    atexit(llvm_delete_flush_function_list);</div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 20 March 2013 23:11, Bill Wendling <span dir="ltr"><<a href="mailto:isanbard@gmail.com" target="_blank">isanbard@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: void<br>
Date: Wed Mar 20 16:11:47 2013<br>
New Revision: 177578<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=177578&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=177578&view=rev</a><br>
Log:<br>
Create a coverage initialization function.<br>
<br>
This function replaces the call of `atexit' from being generated in the compile<br>
units. Basically, it registers the "writeout" and "flush" functions (if<br>
present). It will generate calls to the `atexit' function for cleanups and final<br>
writeout functions, but only once. This is better than checking for `main',<br>
because a library may not have a `main' function in it.<br>
<rdar://problem/12439551><br>
<br>
Modified:<br>
    compiler-rt/trunk/SDKs/darwin/usr/include/stdlib.h<br>
    compiler-rt/trunk/lib/profile/GCDAProfiling.c<br>
<br>
Modified: compiler-rt/trunk/SDKs/darwin/usr/include/stdlib.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/SDKs/darwin/usr/include/stdlib.h?rev=177578&r1=177577&r2=177578&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/SDKs/darwin/usr/include/stdlib.h?rev=177578&r1=177577&r2=177578&view=diff</a><br>


==============================================================================<br>
--- compiler-rt/trunk/SDKs/darwin/usr/include/stdlib.h (original)<br>
+++ compiler-rt/trunk/SDKs/darwin/usr/include/stdlib.h Wed Mar 20 16:11:47 2013<br>
@@ -22,6 +22,7 @@<br>
 typedef __SIZE_TYPE__ size_t;<br>
<br>
 void abort(void) __attribute__((__noreturn__));<br>
+int atexit(void (*)(void));<br>
 int atoi(const char *);<br>
 void free(void *);<br>
 char *getenv(const char *);<br>
<br>
Modified: compiler-rt/trunk/lib/profile/GCDAProfiling.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/GCDAProfiling.c?rev=177578&r1=177577&r2=177578&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/profile/GCDAProfiling.c?rev=177578&r1=177577&r2=177578&view=diff</a><br>


==============================================================================<br>
--- compiler-rt/trunk/lib/profile/GCDAProfiling.c (original)<br>
+++ compiler-rt/trunk/lib/profile/GCDAProfiling.c Wed Mar 20 16:11:47 2013<br>
@@ -331,7 +331,7 @@ void llvm_register_writeout_function(wri<br>
   }<br>
 }<br>
<br>
-void __llvm_writeout_files() {<br>
+void llvm_writeout_files() {<br>
   struct writeout_fn_node *curr = writeout_fn_head;<br>
<br>
   while (curr) {<br>
@@ -381,3 +381,22 @@ void llvm_delete_flush_function_list() {<br>
<br>
   flush_fn_head = flush_fn_tail = NULL;<br>
 }<br>
+<br>
+void llvm_gcov_init(writeout_fn wfn, flush_fn ffn) {<br>
+  static int atexit_ran = 0;<br>
+<br>
+  if (wfn)<br>
+    llvm_register_writeout_function(wfn);<br>
+<br>
+  if (ffn)<br>
+    llvm_register_flush_function(ffn);<br>
+<br>
+  if (atexit_ran == 0) {<br>
+    atexit_ran = 1;<br>
+<br>
+    /* Make sure we write out the data and delete the data structures. */<br>
+    atexit(llvm_delete_flush_function_list);<br>
+    atexit(llvm_delete_writeout_function_list);<br>
+    atexit(llvm_writeout_files);<br>
+  }<br>
+}<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>