Testing now.   I notice a few of the changes aren't actually required in order to fix compiler errors.  For example, this line:<div><br></div><div><div>-    ConstantInt *constant_int = dyn_cast<ConstantInt>(alloc_md->getOperand(0));</div><div>+    ConstantInt *constant_int = mdconst::dyn_extract<ConstantInt>(alloc_md->getOperand(0));</div><div><br></div><div>wasn't actually failing.  Not sure if that's important, but I'm using your fixed version anyway.</div><br><div class="gmail_quote">On Tue Dec 09 2014 at 2:11:08 PM Duncan P. N. Exon Smith <<a href="mailto:dexonsmith@apple.com" target="_blank">dexonsmith@apple.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Attaching a patch that should fix it.  Can you try compiling?<br>
<br>
<br>
<br>
<br>
> On 2014 Dec 9, at 14:03, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:<br>
><br>
> Here's the 3 errors.<br>
><br>
> ..\..\tools\lldb\source\<u></u>Expres<u></u>sion\IRForTarget.cpp(<u></u>413) : error C2678: binary '!=' : no operator found which takes a left-hand operand of type 'const llvm::MDOperand' (or there is no acceptable conversion)<br>
>         d:\src\llvm\include\llvm/ADT/<u></u><u></u>APSInt.h(291): could be 'bool llvm::operator !=(int64_t,const llvm::APSInt &)'<br>
>         d:\src\llvm\include\llvm/ADT/<u></u><u></u>APInt.h(1724): or       'bool llvm::operator !=(uint64_t,const llvm::APInt &)'<br>
>         d:\src\llvm\include\llvm/ADT/<u></u><u></u>StringRef.h(527): or       'bool llvm::operator !=(llvm::StringRef,llvm::<u></u>Strin<u></u>gRef)'<br>
>         while trying to match the argument list '(const llvm::MDOperand, const llvm::GlobalValue *)'<br>
><br>
><br>
><br>
> ..\..\tools\lldb\source\<u></u>Expres<u></u>sion\IRForTarget.cpp(<u></u>647) : error C2664: 'llvm::MDNode *llvm::MDNode::get(llvm::<u></u>LLVMC<u></u>ontext &,llvm::ArrayRef<llvm::<u></u>Metadat<u></u>a *>)' : cannot convert argument 2 from 'llvm::ArrayRef<llvm::Value *>' to 'llvm::ArrayRef<llvm::Metadata *>'<br>
>         No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called<br>
><br>
><br>
> ..\..\tools\lldb\source\<u></u>Expres<u></u>sion\IRForTarget.cpp(<u></u>1254) : error C2664: 'llvm::MDNode *llvm::MDNode::get(llvm::<u></u>LLVMC<u></u>ontext &,llvm::ArrayRef<llvm::<u></u>Metadat<u></u>a *>)' : cannot convert argument 2 from 'llvm::ArrayRef<llvm::Value *>' to 'llvm::ArrayRef<llvm::Metadata *>'<br>
>         No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called<br>
><br>
><br>
> On Tue Dec 09 2014 at 1:56:03 PM Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:<br>
> I'm not sure what the status of building LLDB with CMake is, but the normal way apple people build LLDB is to structure the directory like this:<br>
><br>
> lldb<br>
> --llvm<br>
> ----tools<br>
> ------clang<br>
><br>
> Then open the xcode workspace and build the lldb-tool target.<br>
><br>
> I'll sync to ToT again though so that I can get you a dump of the compiler errors I'm seeing.<br>
><br>
> On Tue Dec 09 2014 at 1:52:40 PM Duncan P. N. Exon Smith <<a href="mailto:dexonsmith@apple.com" target="_blank">dexonsmith@apple.com</a>> wrote:<br>
> I'm trying to build lldb now, but it's hung trying to build LLVM and<br>
> clang... but I already built these?  I don't really understand.<br>
><br>
> Is there any way to make lldb point to my LLVM checkout?  I just want to<br>
> see the compiler errors so I can fix them :(.<br>
><br>
> Alternatively, if some can email me a compile log with all the errors<br>
> (can you do a `make -k` or something?) I can send you a patch... this is<br>
> mechanical to update, but I need the compiler to tell me what's wrong.<br>
><br>
> I expect the fixes to all be along these lines:<br>
><br>
>  - Value *Ops[] => Metadata *Ops[]<br>
><br>
>  - cast<ConstantInt>(N-><u></u>getOperan<u></u>d(0)) =><br>
>    mdconst::extract<ConstantInt>(<u></u><u></u>N->getOperand(0))<br>
><br>
>  - Value *Op = ConstantInt::get(...) =><br>
>    Metadata *Op = ConstantAsMetadata::get(<u></u>Consta<u></u>ntInt::get(...))<br>
><br>
> Sorry for the breakage :(.<br>
><br>
> > On 2014 Dec 9, at 13:41, Zachary Turner <<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>> wrote:<br>
> ><br>
> > If you sync llvm past git revision db7b69e3a634c5fdff0eceeee2a41e<u></u><u></u>e49c3270a2 (svn r223802), your LLDB build will be broken.<br>
> ><br>
> > I was able to fix one of the errors, but this isn't really my area of expertise, so I stopped when I realized I didn't know what I was doing.<br>
> ><br>
> > Just a warning not to sync LLVM until this is fixed.  I've CC'ed Sean and Duncan as they are probably the best people to fix this, but if anyone else knows how to fix it, feel free.<br>
><br>
<br>
</blockquote></div></div>