<div dir="ltr">Thanks, build passes after r177601.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 21 March 2013 01:19, 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">The error is wrong. I added that declaration to the proper header file. :-(<br>
<span class="HOEnZb"><font color="#888888"><br>
-bw<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Mar 20, 2013, at 4:11 PM, Alexander Zinenko <<a href="mailto:ftynse@gmail.com">ftynse@gmail.com</a>> wrote:<br>
<br>
> Hello, Bill!<br>
><br>
> I'm sorry, but this commit seems having break clang-x86_64-debian-fast  buildbot.<br>
> (<a href="http://lab.llvm.org:8011/builders/clang-x86_64-debian-fast/builds/2934" target="_blank">http://lab.llvm.org:8011/builders/clang-x86_64-debian-fast/builds/2934</a>)<br>
> /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]<br>


>     atexit(llvm_delete_flush_function_list);<br>
><br>
><br>
> On 20 March 2013 23:11, Bill Wendling <<a href="mailto:isanbard@gmail.com">isanbard@gmail.com</a>> wrote:<br>
> 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>
><br>
<br>
</div></div></blockquote></div><br></div>