# New Ticket Created by  Andy Dougherty 
# Please include the string:  [perl #59658]
# in the subject line of all future correspondence about this issue. 
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=59658 >


Trying to compile today's parrot on:
    SunOS xxx 5.8 Generic_117350-02 sun4u sparc SUNW,Ultra-5_10
with Sun's compiler:
    cc: WorkShop Compilers 4.2 30 Oct 1996 C 4.2

it failed with the following errors:

src/pmc/float.c
    
"/home/doughera/src/parrot/parrot-cc/tools/build/../../lib/Parrot/Pmc2c/PCCMETHOD.pm",
 line 465: warning: statement not reached
    [ repeated 17 times ]
    "./src/pmc/float.c", line 3340: non-constant initializer: op "U*"
    "./src/pmc/float.c", line 3341: non-constant initializer: op "U*"
    "./src/pmc/float.c", line 3342: non-constant initializer: op "U*"
    [ 21 more similar errors ]
    "./src/pmc/float.c", line 3454: cannot recover from previous errors

Looking at src/pmc/float.c, the first lines in question are:

    const  multi_func_list _temp_multi_func_list[] = {
        { CONST_STRING(interp, "is_equal"),    /* line 3340 */
          CONST_STRING(interp, "IJPP"),        /* line 3341 */
          CONST_STRING(interp, "Float,Float"), /* line 3342 */
          (funcptr_t) Parrot_Float_multi_is_equal_Float },

which ultimately expand to:

    const  multi_func_list _temp_multi_func_list[] = {
        {  ( interp ) -> const_cstring_table [ 515 ],
           ( interp ) -> const_cstring_table [ 84 ],
           ( interp ) -> const_cstring_table [ 639 ],
          (funcptr_t) Parrot_Float_multi_is_equal_Float },

which indeed are non-constant initializers.  GNU cc accepts this, as do
more modern compilers from Sun (such as version 5.9).  I'm guessing it's
a C99 thing, but I don't actually know.

What to do about it?  I suppose I could go in and rewrite those statements
(and similar ones that crop up in other PMCs)  but I certainly won't
have any time to do that any time soon.

Should anyone care?  It's certainly an old compiler, but it's the only
Sun compiler I have available on SPARC, and SPARC has often been a very
helpful platform for debugging alignment and endian issues in parrot.

-- 
    Andy Dougherty              [EMAIL PROTECTED]

Reply via email to