Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[perl #38221] Build fails on FreeBSD 5.4

0 views
Skip to first unread message

Joshua Isom

unread,
Jan 12, 2006, 5:17:30 PM1/12/06
to bugs-bi...@rt.perl.org
# New Ticket Created by Joshua Isom
# Please include the string: [perl #38221]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=38221 >


On FreeBSD 5.4, building parrot fails for the experimental.ops part of
core_ops_cgp.c. The gcc version is 3.4.2. Here's the output from the
compile. The last time I got a successful compile for FreeBSD was on
the 8th, but there was the shared library problem then.

src/ops/core_ops_cgp.c
src/ops/experimental.ops: In function `cgp_core':
src/ops/experimental.ops:226: error: unable to find a register to spill
in class `DIREG'
src/ops/experimental.ops:226: error: this is the insn:
(insn 27898 30731 27899 2388 src/ops/string.ops:397 (parallel [
(set (reg:SI 2 cx [8556])
(unspec:SI [
(mem:BLK (reg/f:SI 8558 [ tmp ]) [0 A8])
(reg:QI 1 dx [8560])
(const_int 1 [0x1])
(reg:SI 2 cx [8559])
] 20))
(use (reg:SI 19 dirflag))
(clobber (reg/f:SI 8558 [ tmp ]))
(clobber (reg:CC 17 flags))
]) 453 {*strlenqi_1} (insn_list 27894 (insn_list 27895
(insn_list 27896 (insn_list 27897 (nil)))))
(expr_list:REG_DEAD (reg:SI 19 dirflag)
(expr_list:REG_DEAD (reg:SI 2 cx [8559])
(expr_list:REG_DEAD (reg:QI 1 dx [8560])
(expr_list:REG_DEAD (reg/f:SI 8558 [ tmp ])
(expr_list:REG_UNUSED (reg:CC 17 flags)
(expr_list:REG_UNUSED (reg/f:SI 8558 [ tmp ])
(nil))))))))
src/ops/experimental.ops:226: confused by earlier errors, bailing out
gmake: *** [src/ops/core_ops_cgp.o] Error 1

Joshua Isom

unread,
Jan 14, 2006, 11:30:46 AM1/14/06
to perl6-i...@perl.org
I took another stab at getting it to compile... Tcc compiled
src/ops/core_ops_cgp.c but there were linking problems(guess it's not
good to use two c compilers for one build). But I disabled linking in
the hints file for me and it's working again. Has anyone with FreeBSD
6.0 had any similar problems? It might be specific to the gcc version.
If it works with FreeBSD 6.0, it shouldn't be too complicated to
disable shared objects for 5.4.

Leopold Toetsch

unread,
Jan 15, 2006, 2:00:30 PM1/15/06
to Joshua Isom, perl6-i...@perl.org

On Jan 14, 2006, at 17:30, Joshua Isom wrote:

>> src/ops/experimental.ops:226: error: unable to find a register to
>> spill

I've now disabled register assignment for gcc like ...

register opcode_t *cur_opcode asm ("esi") = cur_op;

... totally. It works for some gcc 3.x versions though and can for some
extra speed be turned on by defining
PARROT_CGP_REGS or PARROT_SWITCH_REGS when compiling these runcores.

leo

0 new messages