Leopold Toetsch <[EMAIL PROTECTED]> writes:

> Dan Sugalski <[EMAIL PROTECTED]> wrote:
> 
> > I think we're entering a maze of twisty little compiler version quirks,
> > all of them annoying. :(
> 
> The problem is JIT_CGP. This does nasty things with call frames, as well
> as gcc does. Only core_ops_cgp.c has to be compiled with
> mno-accumulate-...  Or we disable JIT_CGP for failing gcc versions.

That explains something. The compilation of cgoto is so anoyingly slow
on my machine that I nearly always configure with --cgoto=0.

Another idea would be only add -mnoaccumulate-... if the target
supports it and needs it.
Something like this:
Index: config/auto/gcc.pl
===================================================================
RCS file: /cvs/public/parrot/config/auto/gcc.pl,v
retrieving revision 1.12
diff -u -r1.12 gcc.pl
--- config/auto/gcc.pl  13 Oct 2003 14:19:28 -0000      1.12
+++ config/auto/gcc.pl  13 Oct 2003 17:35:22 -0000
@@ -18,8 +18,9 @@
   %gnuc=eval cc_run() or die "Can't run the test program: $!";
   cc_clean();
 
-  my($gccversion, $warns, $ccwarn);
+  my($gccversion, $warns, $ccwarn, $ccflags);
   $ccwarn=Configure::Data->get('ccwarn');
+  $ccflags=Configure::Data->get('ccflags');
 
   unless (exists $gnuc{__GNUC__}) {
     return;
@@ -74,7 +75,7 @@
          2.7 => "",
          2.8 => "-Wsign-compare",
          2.95 => "",
-         3.0 => "-Wformat-nonliteral -Wformat-security -Wpacked 
-Wdisabled-optimization -mno-accumulate-outgoing-args -Wno-shadow",
+         3.0 => "-Wformat-nonliteral -Wformat-security -Wpacked 
-Wdisabled-optimization -Wno-shadow",
         # -Wsequence-point is part of -Wall
         # -Wfloat-equal may not be what we want
         # We shouldn't be using __packed__, but I doubt -Wpacked will harm us
@@ -96,6 +97,11 @@
       }
       $warns = join ' ', @warns;
     }
+    # target dependend options
+    my $target = Configure::Data->get('cpuarch');
+    if ($target eq 'i386' && $gccversion >= 3.0) {
+      $ccflags .= ' -mno-accumulate-outgoing-args';
+    }
   }
 
   if (defined $miniparrot && $gccversion) {
@@ -112,6 +118,7 @@
 
   Configure::Data->set(
     ccwarn    => "$warns $ccwarn",
+    ccflags   => $ccflags,
     gccversion => $gccversion
   );
 }
Index: lib/Parrot/Configure/RunSteps.pm
===================================================================
RCS file: /cvs/public/parrot/lib/Parrot/Configure/RunSteps.pm,v
retrieving revision 1.26
diff -u -r1.26 RunSteps.pm
--- lib/Parrot/Configure/RunSteps.pm    30 Sep 2003 12:52:47 -0000      1.26
+++ lib/Parrot/Configure/RunSteps.pm    13 Oct 2003 17:35:23 -0000
@@ -23,9 +23,9 @@
        auto/byteorder.pl
        auto/pack.pl
        auto/format.pl
+       auto/jit.pl
        auto/gcc.pl
        auto/isreg.pl
-       auto/jit.pl
        auto/funcptr.pl
        auto/cgoto.pl
        auto/gc.pl

Reply via email to