MPS issue job003479

TitleSome forward declarations of *ClassGet() functions are wrong
Statusclosed
Priorityoptional
Assigned userGareth Rees
OrganizationRavenbrook
DescriptionBruce Mitchener reported [1] that PellesC [2] produces many warnings when compiling the MPS, including these:

    arenavm.c(1770): warning #2166: Inconsistent linkage for 'VMArenaClassGet', previously declared at arenavm.c(1770).
    arenavm.c(1793): warning #2166: Inconsistent linkage for 'VMNZArenaClassGet', previously declared at arenavm.c(1793).
    poolmrg.c(292): warning #2166: Inconsistent linkage for 'MRGLinkSegClassGet', previously declared at poolmrg.c(292).
    poolmrg.c(304): warning #2166: Inconsistent linkage for 'MRGRefSegClassGet', previously declared at poolmrg.c(304).
    poolamc.c(358): warning #2166: Inconsistent linkage for 'amcSegClassGet', previously declared at poolamc.c(358).
    poolamc.c(663): warning #2166: Inconsistent linkage for 'amcBufClassGet', previously declared at poolamc.c(663).
    poolamc.c(1745): warning #2166: Inconsistent linkage for 'AMCFix', previously declared at poolamc.c(30).
    poolamc.c(2391): warning #2166: Inconsistent linkage for 'AMCPoolClassGet', previously declared at poolamc.c(2391).
    poolawl.c(281): warning #2166: Inconsistent linkage for 'AWLSegClassGet', previously declared at poolawl.c(281).
    poolsnc.c(182): warning #2166: Inconsistent linkage for 'SNCBufClassGet', previously declared at poolsnc.c(182).
    poolsnc.c(258): warning #2166: Inconsistent linkage for 'SNCSegClassGet', previously declared at poolsnc.c(258).
AnalysisSee my e-mail [3]: "Near the top of arenavm.c there's a forward declaration:

    static ArenaClass VMArenaClassGet(void);

But then line 1770 says:

    DEFINE_ARENA_CLASS(VMArenaClass, this)

which expands to:

    typedef ArenaClass VMArenaClass;
    /* ... */
    extern VMArenaClass VMArenaClassGet(void);

So it looks to me as if the compiler is right and the forward declarations are wrong."
How foundcustomer
Evidence[1] <https://info.ravenbrook.com/mail/2013/05/15/10-36-18/0/>
[2] <http://www.smorgasbordet.com/pellesc/>
[3] <https://info.ravenbrook.com/mail/2013/05/15/12-57-47/0/>
Observed in1.111.0
Created byGareth Rees
Created on2013-05-15 12:04:35
Last modified byGareth Rees
Last modified on2013-05-15 21:43:53
History2013-05-15 GDR Created.

Fixes

Change Effect Date User Description
181788 closed 2013-05-15 14:18:28 Gareth Rees Make forward declarations of various functions consistent with their actual declarations.