Hi there again!

After hours and hours of sitting behind the compiler, we are almost certain
that the problem is with the -fdelayed-branch optimization.

Compiling perl with -O2 -fno-delayed-branch in hppa works fine.  

I have prepared a small patch that forces pp_pack.c (the troublesome one)
to be compiled with -fno-delayed-branch.  This makes the package build,
only reducing the optimization for pp_pack.c.  Apparently, the optimization
also had to be adjusted for arm, so this problem has some precedent.

I'm waiting for reports on how this builds on a mips or mipsel box, but
it's difficult, since I don't have access to one.

It is our understanding that this is actually a gcc bug, that when
performing this optimization in hppa (at least) does not do it correctly.
Adding a trivial line (like "counter++;") in the middle of the while loop in
pp_pack.c, makes this bug go away; which serves to show how this smells
badly of a compiler bug.

We are still looking at it, in order to find the root cause.  But perl can
probably be uploaded with the provided patch

-- 
Love,
        Marga
diff -u perl-5.8.8/cflags.SH perl-5.8.8/cflags.SH
--- perl-5.8.8/cflags.SH
+++ perl-5.8.8/cflags.SH
@@ -113,6 +113,8 @@
        case $archname in
            arm-*|armeb-*)
                optimize=-Os;;
+            hppa-*|mips-*|mipsel-*)
+                optimize="$optimize -fno-delayed-branch";;
        esac;;
     pp_sys) ;;
     regcomp) ;;

Reply via email to