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


Hi:

I'm having a very weird error while building latest rakudo with parrot
r38208 (gcc  4.1.3 20070929) :

cc -c -o perl6_ops_cg.o -I/tmp/rakudo/parrot/include
-I/tmp/rakudo/parrot/src/pmc -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-DDEBIAN  -pipe -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -DHASATTRIBUTE_CONST  -DHASATTRIBUTE_DEPRECATED
-DHASATTRIBUTE_MALLOC  -DHASATTRIBUTE_NONNULL  -DHASATTRIBUTE_NORETURN
-DHASATTRIBUTE_PURE  -DHASATTRIBUTE_UNUSED
-DHASATTRIBUTE_WARN_UNUSED_RESULT  -falign-functions=16 -fvisibility=hidden
-funit-at-a-time -maccumulate-outgoing-args -W -Wall -Waggregate-return
-Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment -Wdisabled-optimization
-Wendif-labels -Wextra -Wformat -Wformat-extra-args -Wformat-nonliteral
-Wformat-security -Wformat-y2k -Wimplicit -Wimport -Winit-self -Winline
-Winvalid-pch -Wmissing-braces -Wmissing-field-initializers
-Wno-missing-format-attribute -Wmissing-include-dirs -Wpacked -Wparentheses
-Wpointer-arith -Wreturn-type -Wsequence-point -Wno-shadow -Wsign-compare
-Wstrict-aliasing -Wstrict-aliasing=2 -Wswitch -Wswitch-default -Wtrigraphs
-Wundef -Wunknown-pragmas -Wno-unused -Wvariadic-macros -Wwrite-strings
-Wbad-function-cast -Wc++-compat -Wdeclaration-after-statement
-Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wnonnull -Wold-style-definition
-Wstrict-prototypes -DHAS_GETTEXT -fPIC -g   -DHAS_JIT -DI386
-DHAVE_COMPUTED_GOTO  perl6_ops_cg.c
perl6.ops: In function 'cg_perl6':
perl6.ops:128: warning: assignment discards qualifiers from pointer target
type
perl6.ops:128: warning: assignment discards qualifiers from pointer target
type
perl6.ops:218: error: unable to find a register to spill in class 'SIREG'
perl6.ops:218: error: this is the insn:
(insn 2620 2619 2621 138 perl6.ops:151 (parallel [
            (set (reg:CC 17 flags)
                (compare:CC (mem:BLK (reg/f:SI 3049 [ cstr ]) [0 A8])
                    (mem/s/j:BLK (reg/f:SI 3050) [0 A8])))
            (use (reg:SI 3051))
            (use (const_int 1 [0x1]))
            (use (reg:SI 19 dirflag))
            (clobber (reg/f:SI 3049 [ cstr ]))
            (clobber (reg/f:SI 3050))
            (clobber (reg:SI 3051))
        ]) 720 {*cmpstrnqi_nz_1} (nil)
    (expr_list:REG_UNUSED (reg:SI 3051)
        (expr_list:REG_UNUSED (reg/f:SI 3050)
            (expr_list:REG_UNUSED (reg/f:SI 3049 [ cstr ])
                (expr_list:REG_DEAD (reg:SI 19 dirflag)
                    (expr_list:REG_DEAD (reg:SI 3051)
                        (expr_list:REG_DEAD (reg/f:SI 3049 [ cstr ])
                            (expr_list:REG_DEAD (reg/f:SI 3050)
                                (expr_list:REG_UNUSED (reg:SI 3051)
                                    (expr_list:REG_UNUSED (reg/f:SI 3050)
                                        (expr_list:REG_UNUSED (reg/f:SI 3049
[ cstr ])
                                            (nil))))))))))))
perl6.ops:218: confused by earlier errors, bailing out

In  /parrot/languages/rakudo/src/ops/perl6.ops there is this comment :


 73         /* Using memcpy here may trigger gcc optimizations, which at
this point
 74          * can wreak havoc on register-starved x86:
 75          * error: unable to find a register to spill in class 'SIREG'
 76          * Use memmove instead, which is slower, but isn't inlined by
gcc. */

I have tried in other machines and have no problem, so I think is a problem
of this version of gcc

p...@javier:/tmp/rakudo$ gcc --version
gcc (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

The problem went away using other switches  while compiling rakudo (using
--optimize) and the spectest :

All tests successful.
Files=373, Tests=12884, 909 wallclock secs (10.10 usr  1.25 sys + 1605.36
cusr 59.56 csys = 1676.27 CPU)
Result: PASS


/rakudo/parrot$ cat myconfig
Summary of my parrot 1.0.0 (r38208) configuration:
  configdate='Tue Apr 21 13:52:08 2009 GMT'
  Platform:
    osname=linux, archname=i486-linux-gnu-thread-multi
    jitcapable=1, jitarchname=i386-linux,
    jitosname=LINUX, jitcpuarch=i386
    execcapable=1
    perl=/usr/bin/perl
  Compiler:
    cc='cc', ccflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS
-DDEBIAN  -pipe -I/usr/local/include -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -DHASATTRIBUTE_CONST  -DHASATTRIBUTE_DEPRECATED
-DHASATTRIBUTE_MALLOC  -DHASATTRIBUTE_NONNULL  -DHASATTRIBUTE_NORETURN
-DHASATTRIBUTE_PURE  -DHASATTRIBUTE_UNUSED
-DHASATTRIBUTE_WARN_UNUSED_RESULT  -falign-functions=16 -fvisibility=hidden
-funit-at-a-time -maccumulate-outgoing-args -W -Wall -Waggregate-return
-Wcast-align -Wcast-qual -Wchar-subscripts -Wcomment -Wdisabled-optimization
-Wendif-labels -Wextra -Wformat -Wformat-extra-args -Wformat-nonliteral
-Wformat-security -Wformat-y2k -Wimplicit -Wimport -Winit-self -Winline
-Winvalid-pch -Wmissing-braces -Wmissing-field-initializers
-Wno-missing-format-attribute -Wmissing-include-dirs -Wpacked -Wparentheses
-Wpointer-arith -Wreturn-type -Wsequence-point -Wno-shadow -Wsign-compare
-Wstrict-aliasing -Wstrict-aliasing=2 -Wswitch -Wswitch-default -Wtrigraphs
-Wundef -Wunknown-pragmas -Wno-unused -Wvariadic-macros -Wwrite-strings
-Wbad-function-cast -Wc++-compat -Wdeclaration-after-statement
-Wimplicit-function-declaration -Wimplicit-int -Wmain -Wmissing-declarations
-Wmissing-prototypes -Wnested-externs -Wnonnull -Wold-style-definition
-Wstrict-prototypes -DHAS_GETTEXT',
  Linker and Libraries:
    ld='cc', ldflags=' -L/usr/local/lib',
    cc_ldflags='',
    libs='-ldl -lm -lpthread -lcrypt -lgmp -lreadline '
  Dynamic Linking:
    share_ext='.so', ld_share_flags='-shared -L/usr/local/lib -fPIC',
    load_ext='.so', ld_load_flags='-shared -L/usr/local/lib -fPIC'
  Types:
    iv=long, intvalsize=4, intsize=4, opcode_t=long, opcode_t_size=4,
    ptrsize=4, ptr_alignment=1 byteorder=1234,
    nv=double, numvalsize=8, doublesize=8, longdoublesize=12

Paco

-- 
|_|0|_|
|_|_|0|
|0|0|0|

Reply via email to