[llvm-commits] [llvm] r116832 - /llvm/trunk/include/llvm/PassSupport.h
Bill Wendling
wendling at apple.com
Tue Oct 19 12:54:18 PDT 2010
On Oct 19, 2010, at 11:02 AM, Owen Anderson wrote:
> Author: resistor
> Date: Tue Oct 19 13:02:06 2010
> New Revision: 116832
>
> URL: http://llvm.org/viewvc/llvm-project?rev=116832&view=rev
> Log:
> Factor out the call-once implementation into its own macro.
>
> Modified:
> llvm/trunk/include/llvm/PassSupport.h
>
> Modified: llvm/trunk/include/llvm/PassSupport.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/PassSupport.h?rev=116832&r1=116831&r2=116832&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/PassSupport.h (original)
> +++ llvm/trunk/include/llvm/PassSupport.h Tue Oct 19 13:02:06 2010
> @@ -129,6 +129,22 @@
> PassInfo(const PassInfo &); // do not implement
> };
>
> +#define CALL_ONCE_INITIALIZATION(function) \
> + static volatile sys::cas_flag initialized = 0; \
> + sys::cas_flag old_val = sys::CompareAndSwap(&initialized, 1, 0); \
> + if (old_val == 0) { \
> + function(Registry); \
> + sys::MemoryFence(); \
> + initialized = 2; \
> + } else { \
> + sys::cas_flag tmp = initialized; \
> + sys::MemoryFence(); \
> + while (tmp != 2) { \
> + tmp = initialized; \
> + sys::MemoryFence(); \
> + } \
> + } \
> +
Could you remove the final backslash here? It's not needed and relies upon proper spacing in the file. (And is a pet peeve of mine. :-)
-bw
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20101019/9fff07d7/attachment.html>
More information about the llvm-commits
mailing list