Hey there, lld fails to build on Visual Studio 2013 because of ErrorOr<void>. For example, ErrorOr<void> is used in InputGraph.h as the return type of InputGraph::reset. Inside of ErrorOr, there is: typedef typename remove_reference<T>::type &reference As T is void, and remove_reference <T>::type results in void, the typedef expands to: typedef void & reference, which looks rather invalid. So the punchline is this: In Visual Studio 2012, the statement typedef remove_reference <T>::type & reference; compiled. On 2013, it fails. Greetings, Daniel Albuschat
Rafael EspĂndola
2013-Nov-15 19:49 UTC
[LLVMdev] lld fails to build on Visual Studio 2013
I think I removed all uses of ErrorOr<void>. Can you try updating? On 15 November 2013 12:09, Daniel Albuschat <d.albuschat at gmail.com> wrote:> Hey there, > > lld fails to build on Visual Studio 2013 because of ErrorOr<void>. > For example, ErrorOr<void> is used in InputGraph.h as the return type > of InputGraph::reset. > Inside of ErrorOr, there is: > typedef typename remove_reference<T>::type &reference > As T is void, and remove_reference <T>::type results in void, the > typedef expands to: > typedef void & reference, which looks rather invalid. > > So the punchline is this: > In Visual Studio 2012, the statement typedef remove_reference > <T>::type & reference; compiled. On 2013, it fails. > > Greetings, > Daniel Albuschat > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
I'm currently using MSVC 2012, but I saw that Alp Toker landed a patch to LLD to make it compile with MSVC 2013, so I believe it's doable. Update and try again. On Fri, Nov 15, 2013 at 11:49 AM, Rafael EspĂndola < rafael.espindola at gmail.com> wrote:> I think I removed all uses of ErrorOr<void>. Can you try updating? > > On 15 November 2013 12:09, Daniel Albuschat <d.albuschat at gmail.com> wrote: > > Hey there, > > > > lld fails to build on Visual Studio 2013 because of ErrorOr<void>. > > For example, ErrorOr<void> is used in InputGraph.h as the return type > > of InputGraph::reset. > > Inside of ErrorOr, there is: > > typedef typename remove_reference<T>::type &reference > > As T is void, and remove_reference <T>::type results in void, the > > typedef expands to: > > typedef void & reference, which looks rather invalid. > > > > So the punchline is this: > > In Visual Studio 2012, the statement typedef remove_reference > > <T>::type & reference; compiled. On 2013, it fails. > > > > Greetings, > > Daniel Albuschat > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131115/53fa9fbb/attachment.html>