[cfe-commits] r86001 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.td lib/Sema/SemaDeclAttr.cpp test/Sema/callingconv.c test/Sema/stdcall-fastcall.c

Daniel Dunbar daniel at zuster.org
Wed Nov 4 15:48:15 PST 2009


On Wed, Nov 4, 2009 at 2:08 PM, John McCall <rjmccall at apple.com> wrote:
> Daniel Dunbar wrote:
>
> On Tue, Nov 3, 2009 at 7:36 PM, John McCall <rjmccall at apple.com> wrote:
>
>
> +def err_cconv_knr : Error<
> +  "function with no prototype cannot use '%0' calling convention">;
>
>
> I'm not sure if we already have a canonical way of referring to this,
> but IIRC we already use "K&R" in other places, which may be more
> meaningful than "function with no prototype".
>
>
> I disagree.  I think very few people know what K&R syntax is, outside of a
> vague memory that they should (but usually don't) remember to write "(void)"
> instead of "()" when declaring a nullary function.  ANSI C programmers
> should at least be more familiar with the concept of a prototype.  The vast
> majority of people encountering this error are going to be people who've
> accidentally written their nullary function without void.

I'm arguing more for normalizing the diagnostics than one particular
spelling, I'm also not sure which one is best.

> ...not that there's really any point to declaring a nullary function
> fastcall, at least not in any of the conventions calling themselves
> 'fastcall' that I know about.

FWIW, this is also an argument that anyone who did this would not, in
fact, have a nullary function.

> That said, maybe we should say "K&R" and just provide a fixit to put 'void'
> in the argument list.

We don't want to fixit things unless we know the fixit is correct,
that wouldn't apply here.

 - Daniel




More information about the cfe-commits mailing list