<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>Thanks!</div><div><br></div>But it's currently blocked on this: <div><br></div><div><blockquote type="cite">Currently, the LLVM C++ code has a class called llvm::LLVMTargetMachine, while the C API has a struct called LLVMTargetMachine.<br><br>If you're unlucky enough to include both headers, you will get crazy build errors.  Luckily trunk doesn't do this, but I just accidentally caused it to happen because of an unrelated and seemingly benign change.<br><br>We should be able to include both C++ and C headers *somewhere* in the llvm .cpp files, if not broadly in any of them, since otherwise you'd have a really bad time if you wanted to write bindings.<br><br>The offending line in the C API looks like this:<br><br></blockquote><blockquote type="cite">typedef struct LLVMTargetMachine *LLVMTargetMachineRef;<br><br>I'm assuming that from a source compatibility standpoint, we only care about LLVMTargetMachineRef still working; the fact that the struct was called 'struct LLVMTargetMachine' should not be something that C API clients rely on.  So, the easiest fix to get around this appears to be do just change this to 'struct LLVMOpaqueTargetMachine'.<br><br>-Filip<br><br></blockquote><div id="cid:FC284D77-F48F-4329-9BD0-4A38E6138746@apple.com"><br></div></div><div id="cid:FC284D77-F48F-4329-9BD0-4A38E6138746@apple.com"></div></body></html>