1# gcc -O3 (and higher) can cause code produced from Storable.xs that 2# dumps core immediately in recurse.t and retrieve.t, in is_storing() 3# and last_op_in_netorder(), respectively. In both cases the cxt is 4# full of junk (and according to valgrind the cxt was never stack'd, 5# malloc'd or free'd). Observed in Debian 3.0 x86, with gccs 2.95.4 6# 20011002 and 3.3, and in Redhat 7.1 with gcc 3.3.1. The failures 7# happen only for unthreaded builds, threaded builds work okay. 8use Config; 9if ($Config{gccversion} and !$Config{usethreads}) { 10 my $optimize = $Config{optimize}; 11 # works fine with gcc 4 or clang 12 if ($optimize =~ s/(^| )-O[3-9]( |$)/$1-O2$2/ and $Config{gccversion} =~ /^[23]\./) { 13 $self->{OPTIMIZE} = $optimize; 14 } 15} 16 17