[cfe-dev] Problem with canonical types?

Douglas Gregor dgregor at apple.com
Wed Jul 28 08:16:16 PDT 2010


On Jul 27, 2010, at 2:48 AM, Abramo Bagnara wrote:

> When compiling the attached example using clang, we get the following error:
> 
> ====================
> $ llvm/Debug+Asserts/bin/clang -cc1 -fsyntax-only ppl_bug.cc
> ppl_bug.cc:32:11: error: out-of-line definition of 'foo' does not match
> any declaration in 'Class<T>'
> Class<T>::foo() {}
> ~~~~~~~~~~^
> 1 error generated.
> ====================
> 
> 
> We tracked down the problem up to the call to
> 
> bool Sema::IsOverload(FunctionDecl *New, FunctionDecl *Old,
>                      bool UseUsingDeclRules);
> 
> where the test
> 
>    OldType->getResultType() != NewType->getResultType()
> 
> succeeds instead of failing.
> 
> The two (canonical) result types do print the same (using method dump()
> in gdb), but they are anyway different pointers.

Definitely a canonical-types bug, which I've fixed here:

	http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20100726/032609.html

Thanks!

	- Doug



More information about the cfe-dev mailing list