[cfe-dev] __func__ should be of type char[], not char*

Chris Lattner clattner at apple.com
Sat Jan 12 00:16:53 PST 2008


On Jan 9, 2008, at 8:03 PM, Eli Friedman wrote:

> See http://llvm.org/bugs/show_bug.cgi?id=1903.  Basic test:
>
> int abcdefghi12(void) {
>  static const char* s = __func__;
>  const char (*ss)[12] = &__func__;
>  return sizeof(__func__);
> }
>
> should not give any errors or warnings, and should return 12.
>
> The change in Sema/SemaExpr.cpp is changing the type of __func__  
> appropriately.
>
> The changes in AST/Expr.cpp makes __func__ be recognized as an lvalue
> with static storage duration.
>
> The change in CodeGen/CGExpr.cpp keeps codegen working in the presence
> of the new type for __func__.

Very nice, applied:
http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20080107/003745.html

I wrapped a few lines to 80 columns and changed strlen to ask the  
identifier its length directly.

Also note that your test above works better, but it is still not  
entirely happy:

predef.c:2:25: error: initializer element is not constant
  static const char* s = __func__;
                         ^~~~~~~~

Thanks Eli,

-Chris



More information about the cfe-dev mailing list