On Tue, May 11, 2010 at 03:40, Nicholas Clark <nick@ccl4.org> wrote: > On Mon, May 10, 2010 at 05:21:52PM -0600, Alex Hunsaker wrote: >> >> Hrm Ok seems like gcc decided oright can never be NULL and so took out >> those checks. If I do an optimize='-g' no -O2 it seems to work. Any >> ideas? > > I am confident that it's not a misplaced __attribute__nonnull__ on oright. > (These have been a problem before). It's gcc that has decided that oright > can't be NULL, rather than us telling it. > > Your analysis looks sound to me. I can reproduce it on blead with gcc 4.5.0, > with -Dusemultiplicity (but not with other related Configure options). Yeah, strange eh? I do think a straight multiplicity (no threads) build is fairly uncommon [ in fact after i fixed this, mod_perl refuses to compile, it expects threads to be enabled if you use multiplicity :-( ]. But I dont see any major differences in compile options: # nothreads `sh cflags "optimize='-O2'" op.o` op.c CCCMD = cc -DPERL_CORE -c -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 -O2 -Wall -ansi -W -Wextra -Wdeclaration-after-statement -Wendif-labels -Wc++-compat # +threads `sh cflags "optimize='-O2'" op.o` op.c CCCMD = cc -DPERL_CORE -c -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -std=c89 -O2 -Wall -ansi -W -Wextra -Wdeclaration-after-statement -Wendif-labels -Wc++-compatThread Previous | Thread Next