Done. --Josh
At 22:57 on 12/31/2002 GMT, Nicholas Clark <[EMAIL PROTECTED]> wrote: > Currently Parrot is picking up Perl's C compiler flags. Perl is quite > deliberately attempting to set -fno-strict-aliasing, to stop gcc using > ANSI's aliasing rules to infer possible optimisations; optimisations that > will actually break Perl's code. > > (Don't ask me to remember exactly what the aliasing rules are, let alone > explain them correctly, but it's something to do with more than one type of > pointer not being allowed to point at the same thing (except via a union, > and where char pointers are exempt) in a strictly conformant ANSI C > program. Providing this holds true in the C source, the compiler can safely > reorder memory access and potentially gain speedups. Perl's source isn't > ANSI conformant in this way. Well, you can ask what the aliasing rules are, > but I won't answer) > > The upshot is that you can't guarantee that any compiler won't be optimising > based on aliasing assumptions, because, hell, it's allowed to. And we may > not be able to turn it off. So we ought to be writing code that doesn't make > aliasing assumptions. Hence we ought to remove -fno-strict-aliasing from > Parrot's cflags. And as Dan put it "see what breaks". So far nothing, at > least for a test build on Debian/x86. And as we're now letting gcc make > aliasing based optimisations, we might see more speed. (And maybe unicorns, > flying pigs, and round tuits) > > Nicholas Clark > > --- config/inter/progs.pl~ Fri Oct 25 11:23:17 2002 > +++ config/inter/progs.pl Tue Dec 31 21:18:24 2002 > @@ -15,6 +15,7 @@ sub runstep { > my($cc, $link, $ld, $ccflags, $linkflags, $ldflags, $libs) = > Configure::Data->get(qw(cc link ld ccflags linkflags ldflags libs)); > $ccflags =~ s/-D(PERL|HAVE)_\w+\s*//g; > + $ccflags =~ s/-fno-strict-aliasing//g; > $linkflags =~ s/-libpath:\S+//g; > $ldflags =~ s/-libpath:\S+//g; > my $debug='n';