<br><div class="gmail_extra"><br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
It uses common-lisp wrappers of the LLVM-C API.<br>
<br>
<br>
Going through the list of things I added:<br>
> LLVMBuildFence<br>
> LLVMBuildAtomicCmpXchg<br>
> LLVMBuildAtomicRMW<br>
> LLVMGetAtomicOrdering/LLVMSetAtomicOrdering<br>
> LLVMGetSynchronizationScope/LLVMSetSynchronizationScope<br>
<br>
> Also, fix LLVMGetVolatile/LLVMSetVolatile to handle the new<br>
> memory instructions.<br>
<br>
<br>
I need support for compiling atomic operations. In 2009, they were intrinsics. Now they're separate instructions. LLVMBuild* for the new instructions, LLVM{Get/Set}{AtomicOrdering,SynchronizationScope} both for the new instructions and for creating atomic Load/Store instructions.<br>
<br></blockquote><div><br></div><div><br></div><div>These seem reasonable.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
The rest of the additions I had wrapped myself back in 2009, but I figured I ought to contribute them upstream instead:<br>
<br>
> LLVMParseAssemblyString<br>
<br>
This is to allow inserting a bit of raw llvm-asm into an otherwise-programamtically built module, I use it for some support routines emitted by the compiler.<br>
<br></blockquote><div><br></div><div>This somewhat horrifies me. I'm not sure I see the general use in such a way that I want to sign up to support it :)</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> LLVMPrintModuleToString<br>
> LLVMPrintTypeToString<br>
> LLVMPrintValueToString<br>
<br>
It's useful to be able to print these types to help debug what's going on.<br>
<br></blockquote><div><br></div><div>These seem reasonable, not sure why you'd want to be able to do this via the C API though?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
> LLVMIntPtrTypeInContext<br>
<br>
This seems like a pretty obvious omission: LLVMIntPtrType is already wrapped, but only with a version which uses the global context. Everything else that uses a context has an InContext version.<br><br></blockquote><div>
<br></div><div>Also seems reasonable.</div><div><br></div><div>-eric </div></div><br></div>