<div dir="ltr">Yeah, something fun in Clang to look at. Reverted in <span style="font-family:monospace">237629 while I look into the issue.</span></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 18, 2015 at 3:39 PM, Reid Kleckner <span dir="ltr"><<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I don't think this one flies:<div><br><div><div>[1523/1884] Building CXX object tools\clang\lib\CodeGen\CMakeFiles\clangCodeGen.dir\CGObjCGNU.cpp.obj</div><div>FAILED: D:\src\llvm\build_stage1\bin\clang-cl.exe   /nologo /DWIN32 /D_WINDOWS   -wd4146 -wd4180 -wd4244 -wd4258 -wd4267 -wd4291 -wd4345 -wd4351 -wd4355 -wd4456 -wd4457 -wd4458 -wd4459 -wd4503 -wd4624 -wd4722 -wd4800 -wd4100 -wd4127 -wd4512 -wd4505 -wd4610 -wd4510 -wd4702 -wd4245 -wd4706 -wd4310 -wd4701 -wd4703 -wd4389 -wd4611 -wd4805 -wd4204 -wd4324 -w14062 -we4238 /W4 /MD /O2 /Ob2 -Itools\clang\lib\CodeGen -I..\tools\clang\lib\CodeGen -I..\tools\clang\include -Itools\clang\include -Iinclude -I..\include    -UNDEBUG /EHs-c- /GR- /showIncludes -DCLANG_ENABLE_ARCMT -DCLANG_ENABLE_OBJC_REWRITER -DCLANG_ENABLE_STATIC_ANALYZER -DGTEST_HAS_RTTI=0 -DGTEST_HAS_SEH=0 -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_GNU_SOURCE -D_HAS_EXCEPTIONS=0 -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS /Fotools\clang\lib\CodeGen\CMakeFiles\clangCodeGen.dir\CGObjCGNU.cpp.obj /Fdtools\clang\lib\CodeGen\CMakeFiles\clangCodeGen.dir\ -c ..\tools\clang\lib\CodeGen\CGObjCGNU.cpp</div><div><br></div><div>..\tools\clang\lib\CodeGen\CGObjCGNU.cpp(2690,12) :  error: call to member function 'CreateCall' is ambiguous</div><div>  return B.CreateCall(WeakReadFn, AddrWeakObj);</div><div>         ~~^~~~~~~~~~</div><div>..\include\llvm/IR/IRBuilder.h(1465,13) :  note: candidate function</div><div>  CallInst *CreateCall(Value *Callee, ArrayRef<Value *> Args,</div><div>            ^</div><div>..\include\llvm/IR/IRBuilder.h(1470,13) :  note: candidate function</div><span class=""><div>  CallInst *CreateCall(Function *Callee, ArrayRef<Value *> Args,</div></span><div>            ^</div></div></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, May 18, 2015 at 3:25 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: dblaikie<br>
Date: Mon May 18 17:25:14 2015<br>
New Revision: 237627<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=237627&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=237627&view=rev</a><br>
Log:<br>
[opaque pointer type] Provide a convenience for IRBuilder::CreateCall that accepts a Function without needing to take an explicit callee Type<br>
<br>
The common case is a direct call, so don't make all those users have to<br>
explicitly pass the result of llvm::Function::getFunctionType.<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/IR/IRBuilder.h<br>
<br>
Modified: llvm/trunk/include/llvm/IR/IRBuilder.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/IRBuilder.h?rev=237627&r1=237626&r2=237627&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/IR/IRBuilder.h?rev=237627&r1=237626&r2=237627&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/IR/IRBuilder.h (original)<br>
+++ llvm/trunk/include/llvm/IR/IRBuilder.h Mon May 18 17:25:14 2015<br>
@@ -21,6 +21,7 @@<br>
 #include "llvm/IR/BasicBlock.h"<br>
 #include "llvm/IR/ConstantFolder.h"<br>
 #include "llvm/IR/DataLayout.h"<br>
+#include "llvm/IR/Function.h"<br>
 #include "llvm/IR/GlobalVariable.h"<br>
 #include "llvm/IR/Instructions.h"<br>
 #include "llvm/IR/LLVMContext.h"<br>
@@ -1466,6 +1467,12 @@ public:<br>
     return Insert(CallInst::Create(Callee, Args), Name);<br>
   }<br>
<br>
+  CallInst *CreateCall(Function *Callee, ArrayRef<Value *> Args,<br>
+                       const Twine &Name = "") {<br>
+    return Insert(CallInst::Create(Callee->getFunctionType(), Callee, Args),<br>
+                  Name);<br>
+  }<br>
+<br>
   Value *CreateSelect(Value *C, Value *True, Value *False,<br>
                       const Twine &Name = "") {<br>
     if (Constant *CC = dyn_cast<Constant>(C))<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">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>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>