Attached patch should fix computed goto on Solaris with the Sun C compiler.
All tests successful (7 subtests UNEXPECTEDLY SUCCEEDED), 11 tests and 621 subtests skipped. Passed TODO Stat Wstat TODOs Pass List of Passed ------------------------------------------------------------------------------- t/src/intlist.t 4 4 1-4 t/src/io.t 3 3 16-17 19 Files=349, Tests=7904, 1398 wallclock secs (668.38 cusr + 455.97 csys = 1124.35 CPU) Could someone please review the patch if I got it right, and maybe test it on other computed goto platforms? Ron
Index: lib/Parrot/Ops2c/Utils.pm =================================================================== --- lib/Parrot/Ops2c/Utils.pm (revision 22065) +++ lib/Parrot/Ops2c/Utils.pm (working copy) @@ -588,7 +588,7 @@ # endif #endif _reg_base = (char*)interp->ctx.bp.regs_i; - goto **cur_opcode; + goto **(void **)cur_opcode; END_C } Index: lib/Parrot/OpTrans/CGP.pm =================================================================== --- lib/Parrot/OpTrans/CGP.pm (revision 22065) +++ lib/Parrot/OpTrans/CGP.pm (working copy) @@ -91,7 +91,7 @@ return "if ($addr == 0) return 0; _reg_base = (char*)interp->ctx.bp.regs_i; - goto **(cur_opcode = opcode_to_prederef(interp, $addr))"; + goto **(void **)(cur_opcode = opcode_to_prederef(interp, $addr))"; } } @@ -105,7 +105,7 @@ sub goto_offset { my ( $self, $offset ) = @_; - return "goto **(cur_opcode += $offset)"; + return "goto **(void **)(cur_opcode += $offset)"; } =item C<goto_pop()> Index: PLATFORMS =================================================================== --- PLATFORMS (revision 22065) +++ PLATFORMS (working copy) @@ -30,8 +30,8 @@ sol8-sparc-cc B - - - - - - Y/412 ? 20070917 sol10-sparc-cc_5.8 B Y - - Y Y Y Y/9 ? 20060807 sol10-sparc-gcc_4.0.2 B Y - - Y Y Y Y/9 ? 20060807 -sol10-x86-cc_5.9 4 - - - - - Y Y*4 ? 20070914 -sol11-x86-cc_5.8 - - - - - - Y/121*4 ? 20070821 +sol10-x86-cc_5.9 4 - - - - - Y Y ? 20071010 +sol11-x86-cc_5.8 - - - - - - Y/121 ? 20070821 opensolaris-x86-gcc_4.0.3 4 Y Y ? ? ? Y Y/3 ? 20070417 tru64-alpha-compaq_c6.5 8 ? ? ? Y ? Y Y/2 ? 20060203 win32-x86-cygwin_1.5.21 - - - - - - - - 20070221 @@ -71,7 +71,6 @@ *2 some tests fail intermittently when building x86 on xeon processor *3 t/stm/basic_mt.t occasionally hangs. kill it for tests to complete. 1 other test fails. 7 unexpected todos succeed. -*4 You must run Configure.pl with --cgoto=0, see RT#44291 The following configurations are also working on x86/linux (and possibly other platforms):