[PATCH] D14348: Add Printable class to simplify the construction of Print helpers.

Joseph Tremoulet via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 8 14:30:07 PST 2015


Fuller error messages from MSVC2013 pasted below.  It seems to no longer be happy to use e.g. the implicit user-defined conversion from Statistic to unsigned to print a Statistic, though I don't know why your change would make that suddenly be the case nor why the list of candidate overloads looks so off.

8>C:\Source\llvm-mirror\lib\Analysis\CallGraph.cpp(190): error C2593: 'operator <<' is ambiguous
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(237): could be 'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::FormattedNumber &)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(234): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::FormattedString &)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(231): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::format_object_base &)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(218): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(llvm::Printable)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(215): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(double)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(211): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(int)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(207): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned int)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(206): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const void *)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(205): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(__int64)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(204): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned __int64)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(203): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(long)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(202): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned long)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(198): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::SmallVectorImpl<char> &)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(193): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const std::string &)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(186): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const char *)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(171): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(llvm::StringRef)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(164): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(signed char)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(157): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned char)'
8>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(150): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(char)'
8>          C:\Source\llvm-mirror\include\llvm/IR/Module.h(656): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Module &)'
8>          C:\Source\llvm-mirror\include\llvm/IR/Comdat.h(59): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Comdat &)'
8>          C:\Source\llvm-mirror\include\llvm/IR/Metadata.h(158): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Metadata &)'
8>          C:\Source\llvm-mirror\include\llvm/IR/Value.h(534): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Value &)'
8>          C:\Source\llvm-mirror\include\llvm/ADT/Twine.h(534): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Twine &)'
8>          C:\Source\llvm-mirror\include\llvm/IR/Type.h(424): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,llvm::Type &)'
8>          C:\Source\llvm-mirror\include\llvm/ADT/APInt.h(1739): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::APInt &)'
8>          while trying to match the argument list '(llvm::raw_ostream, const llvm::WeakVH)'
7>C:\Source\llvm-mirror\lib\Transforms\Scalar\Sink.cpp(108): error C2593: 'operator <<' is ambiguous
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(237): could be 'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::FormattedNumber &)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(234): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::FormattedString &)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(231): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::format_object_base &)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(218): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(llvm::Printable)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(215): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(double)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(211): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(int)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(207): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned int)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(206): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const void *)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(205): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(__int64)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(204): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned __int64)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(203): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(long)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(202): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned long)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(198): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::SmallVectorImpl<char> &)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(193): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const std::string &)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(186): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const char *)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(171): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(llvm::StringRef)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(164): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(signed char)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(157): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned char)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(150): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(char)'
7>          C:\Source\llvm-mirror\include\llvm/IR/ConstantRange.h(282): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::ConstantRange &)'
7>          C:\Source\llvm-mirror\include\llvm/IR/Module.h(656): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Module &)'
7>          C:\Source\llvm-mirror\include\llvm/IR/Comdat.h(59): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Comdat &)'
7>          C:\Source\llvm-mirror\include\llvm/IR/Metadata.h(158): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Metadata &)'
7>          C:\Source\llvm-mirror\include\llvm/IR/Value.h(534): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Value &)'
7>          C:\Source\llvm-mirror\include\llvm/ADT/Twine.h(534): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Twine &)'
7>          C:\Source\llvm-mirror\include\llvm/IR/Type.h(424): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,llvm::Type &)'
7>          C:\Source\llvm-mirror\include\llvm/ADT/APInt.h(1739): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::APInt &)'
7>          while trying to match the argument list '(llvm::raw_ostream, llvm::Statistic)'
9>C:\Source\llvm-mirror\lib\CodeGen\EarlyIfConversion.cpp(203): error C2593: 'operator <<' is ambiguous
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(237): could be 'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::FormattedNumber &)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(234): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::FormattedString &)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(231): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::format_object_base &)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(218): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(llvm::Printable)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(215): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(double)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(211): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(int)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(207): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned int)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(206): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const void *)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(205): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(__int64)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(204): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned __int64)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(203): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(long)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(202): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned long)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(198): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::SmallVectorImpl<char> &)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(193): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const std::string &)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(186): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const char *)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(171): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(llvm::StringRef)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(164): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(signed char)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(157): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned char)'
9>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(150): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(char)'
9>          C:\Source\llvm-mirror\include\llvm/CodeGen/MachineTraceMetrics.h(391): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::MachineTraceMetrics::Ensemble &)'
9>          C:\Source\llvm-mirror\include\llvm/CodeGen/MachineTraceMetrics.h(385): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::MachineTraceMetrics::Trace &)'
9>          C:\Source\llvm-mirror\include\llvm/CodeGen/MachineBasicBlock.h(768): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::MachineBasicBlock &)'
9>          C:\Source\llvm-mirror\include\llvm/Support/BranchProbability.h(163): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,llvm::BranchProbability)'
9>          C:\Source\llvm-mirror\include\llvm/CodeGen/MachineInstr.h(1253): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::MachineInstr &)'
9>          C:\Source\llvm-mirror\include\llvm/CodeGen/MachineOperand.h(744): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::MachineOperand &)'
9>          C:\Source\llvm-mirror\include\llvm/IR/Module.h(656): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Module &)'
9>          C:\Source\llvm-mirror\include\llvm/IR/Comdat.h(59): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Comdat &)'
9>          C:\Source\llvm-mirror\include\llvm/IR/Metadata.h(158): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Metadata &)'
9>          C:\Source\llvm-mirror\include\llvm/IR/Value.h(534): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Value &)'
9>          C:\Source\llvm-mirror\include\llvm/ADT/Twine.h(534): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Twine &)'
9>          C:\Source\llvm-mirror\include\llvm/IR/Type.h(424): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,llvm::Type &)'
9>          C:\Source\llvm-mirror\include\llvm/ADT/APInt.h(1739): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::APInt &)'
9>          while trying to match the argument list '(llvm::raw_ostream, llvm::cl::opt<unsigned int,false,llvm::cl::parser<unsigned int>>)'
7>C:\Source\llvm-mirror\lib\Transforms\Scalar\LoopStrengthReduce.cpp(4808): error C2593: 'operator <<' is ambiguous
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(237): could be 'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::FormattedNumber &)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(234): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::FormattedString &)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(231): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::format_object_base &)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(218): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(llvm::Printable)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(215): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(double)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(211): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(int)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(207): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned int)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(206): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const void *)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(205): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(__int64)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(204): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned __int64)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(203): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(long)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(202): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned long)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(198): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const llvm::SmallVectorImpl<char> &)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(193): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const std::string &)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(186): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(const char *)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(171): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(llvm::StringRef)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(164): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(signed char)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(157): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(unsigned char)'
7>          C:\Source\llvm-mirror\include\llvm/Support/raw_ostream.h(150): or       'llvm::raw_ostream &llvm::raw_ostream::operator <<(char)'
7>          C:\Source\llvm-mirror\include\llvm/Analysis/ScalarEvolution.h(215): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::SCEVPredicate &)'
7>          C:\Source\llvm-mirror\include\llvm/Analysis/ScalarEvolution.h(156): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::SCEV &)'
7>          C:\Source\llvm-mirror\include\llvm/IR/Module.h(656): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Module &)'
7>          C:\Source\llvm-mirror\include\llvm/IR/Metadata.h(158): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Metadata &)'
7>          C:\Source\llvm-mirror\include\llvm/IR/Comdat.h(59): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Comdat &)'
7>          C:\Source\llvm-mirror\include\llvm/IR/ConstantRange.h(282): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::ConstantRange &)'
7>          C:\Source\llvm-mirror\include\llvm/IR/Type.h(424): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,llvm::Type &)'
7>          C:\Source\llvm-mirror\include\llvm/ADT/APInt.h(1739): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::APInt &)'
7>          C:\Source\llvm-mirror\include\llvm/IR/Value.h(534): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Value &)'
7>          C:\Source\llvm-mirror\include\llvm/ADT/Twine.h(534): or       'llvm::raw_ostream &llvm::operator <<(llvm::raw_ostream &,const llvm::Twine &)'
7>          while trying to match the argument list '(llvm::raw_ostream, const llvm::IVStrideUse)'

-----Original Message-----
From: Matthias Braun [mailto:matze at braunis.de] 
Sent: Thursday, December 3, 2015 6:37 PM
To: David Blaikie <dblaikie at gmail.com>
Cc: reviews+D14348+public+d44b25c0924b3f23 at reviews.llvm.org; llvm-commits <llvm-commits at lists.llvm.org>; Reid Kleckner <rnk at google.com>; Rafael Espindola <rafael.espindola at gmail.com>; Joseph Tremoulet <jotrem at microsoft.com>; Andy Ayers <andya at microsoft.com>; Paul Robinson <paul_robinson at playstation.sony.com>
Subject: Re: [PATCH] D14348: Add Printable class to simplify the construction of Print helpers.

Unfortunately I don't, maybe some of the MSVC developers could take a look?
CCing some "random" people that may have msvc handy.

- Matthias

> On Dec 3, 2015, at 3:32 PM, David Blaikie via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> 
> 
> On Thu, Dec 3, 2015 at 3:29 PM, Matthias Braun via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> MatzeB added a comment.
> 
> I had to revert this patch because two gcc buildbots and all the msvc bots choke on ambiguous operator<< overloads. Examples:
> 
> https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flab.ll
> vm.org%3a8011%2fbuilders%2fsanitizer-x86_64-linux-autoconf%2fbuilds%2f
> 12622%2fsteps%2fbuild%2520fresh%2520clang%2flogs%2fstdio&data=01%7c01%
> 7cjotrem%40microsoft.com%7cd814fd85e93944cd7a8108d2fc3ab676%7c72f988bf
> 86f141af91ab2d7cd011db47%7c1&sdata=ItGGfmEQe%2bJpkXJcn%2fDIWwmN%2fe1%2
> flX2TNOF1y8EmA8o%3d 
> https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flab.ll
> vm.org%3a8011%2fbuilders%2fpolly-amd64-linux%2fbuilds%2f36852%2fsteps%
> 2fbuild_polly%2flogs%2fstdio&data=01%7c01%7cjotrem%40microsoft.com%7cd
> 814fd85e93944cd7a8108d2fc3ab676%7c72f988bf86f141af91ab2d7cd011db47%7c1
> &sdata=qrDTOUlzv%2fPifR0HMtERiQ%2bfCgo9rg1YMf3Gt3HaTOI%3d
> https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flab.ll
> vm.org%3a8011%2fbuilders%2flld-x86_64-win7%2fbuilds%2f27400%2fsteps%2f
> build_Lld%2flogs%2fstdio&data=01%7c01%7cjotrem%40microsoft.com%7cd814f
> d85e93944cd7a8108d2fc3ab676%7c72f988bf86f141af91ab2d7cd011db47%7c1&sda
> ta=lpVM3KZLxI4xcmmmTM9hGhJreq%2fN5uIV9RYQZvnhRx4%3d
> 
> My current guess is that std::function implicitely converts to void* 
> or void* implicitely converts to std::function on these systems. So I 
> guess to get this working I have to go back to the shim class after 
> all :-(
> 
> Fair guess - though if you've got access to such a revision of GCC such that you could test/demonstrate this, it'd be good. I'm always hesitant to workaround something without knowing exactly what it is that's being worked around. (especially so we can leave a comment to rip out teh workaround when we drop support for whatever version of the compiler/standard library has this bug).
> 
> - Dave
>  
> 
> 
> Repository:
>   rL LLVM
> 
> https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2freview
> s.llvm.org%2fD14348&data=01%7c01%7cjotrem%40microsoft.com%7cd814fd85e9
> 3944cd7a8108d2fc3ab676%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=oQ
> J9YfmYjWj5MHIfIWgy1tJ2Z5dGYhwSNE4NZfw3Vxs%3d
> 
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.
> llvm.org%2fcgi-bin%2fmailman%2flistinfo%2fllvm-commits&data=01%7c01%7c
> jotrem%40microsoft.com%7cd814fd85e93944cd7a8108d2fc3ab676%7c72f988bf86
> f141af91ab2d7cd011db47%7c1&sdata=DN0DW8EFs9HNmJRnupRHaH7LKw6mOwasO9OdQ
> zfnc9I%3d
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2flists.
> llvm.org%2fcgi-bin%2fmailman%2flistinfo%2fllvm-commits&data=01%7c01%7c
> jotrem%40microsoft.com%7cd814fd85e93944cd7a8108d2fc3ab676%7c72f988bf86
> f141af91ab2d7cd011db47%7c1&sdata=DN0DW8EFs9HNmJRnupRHaH7LKw6mOwasO9OdQ
> zfnc9I%3d



More information about the llvm-commits mailing list