[cfe-dev] regression with function pointers

Steve Naroff snaroff at apple.com
Fri Nov 30 16:04:08 PST 2007


On Nov 30, 2007, at 3:17 PM, Nuno Lopes wrote:

> Hi,
>
> There was some kind of regression in function pointers handling.  
> Attached is a file that triggers an assert failure (when run with  
> e.g. -ast-dump):
>
> clang: /cvs/llvm/include/llvm/Support/Casting.h:199: typename  
> llvm::cast_retty<To, From>::ret_type llvm::cast(const Y&) [with X =  
> clang::FunctionTypeProto, Y = clang::Type*]: Assertion `isa<X>(Val)  
> && "cast<Ty>() argument of incompatible type!"' failed.
> (...)
> /lib/libc.so.6(__assert_fail+0xf5)[0xb7d287a5]
> ../../Debug/bin/clang(llvm::cast_retty<clang::FunctionTypeProto,  
> clang::Type*>::ret_type llvm::cast<clang::FunctionTypeProto,  
> clang::Type*>(clang::Type* const&)+0x4b)[0x831125d]
> ../../Debug/bin/clang(clang::FunctionDecl::getNumParams() const+0x3a) 
> [0x831f92a]
> ../../Debug/bin/clang((anonymous  
> namespace)::DeclPrinter::PrintFunctionDeclStart(clang::FunctionDecl*) 
> +0x169)[0x826cd33]
> ../../Debug/bin/clang((anonymous  
> namespace)::ASTDumper::HandleTopLevelDecl(clang::Decl*)+0x30) 
> [0x826fc80]
> ../../Debug/bin/clang(clang::ParseAST(clang::Preprocessor&, unsigned  
> int, clang::ASTConsumer*, bool)+0x107)[0x82dc1c7]
>
>
> Sorry for the big file, but I didn't have the time to strip it.


Here is a two line test case that exposes the bug (which appears  
specific to -ast-print/-ast-dump)...

snaroff% cat nuno.c

typedef void func_typedef();

func_typedef xxx;

I'll investigate later. Thanks for the bug,

snaroff




More information about the cfe-dev mailing list