Not really much idea, but a couple of possibilities spring to mind: does your new build have an updated APR, and has the definition of APR_INLINE changed in it?

No. I'd completely forgotten about APR, so was just pulling in the version I built. After looking at this problem I rebuilt it, but that didn't change anything.

Also (just looking at the definition of MP_INLINE which you've quoted...) presumably your new build doesn't have MP_DEBUG defined; is it possible that your previous build did have it defined so that MP_INLINE was blank anyway?

I guess it's possible, but I didn't do anything to define it, and configured everything in a very generic way:

Apache configured with:
./configure --prefix=/usr/local/apache --with-ssl=/usr/local --enable-ssl

Perl configured with:
./Configure -Dprefix=/usr/local

APR configured with:
./configure --prefix=/usr/local

mod_perl configured with:
perl Makefile.PL MP_APXS=/usr/local/apache/bin/apxs

I just did some more googling, now I know that 'inline' is the issue, and found an article that talks about this as a problem with MacPorts for mod_perl 2.0.4:

The relevant lines:

This is caused by the code assuming to be compiled using GCC against the GCC89 "standard", but being actually compiled by clang with C99. GNU89 and C99 differ in how they handle inline. Further reading: ‚Äč

Which made me wonder:

% gcc --version | head -1
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

% cc --version | head -1
Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)

Ugh. I don't specify the compiler in the above configures, but I remember that Configure for perl picked up cc, and on checking, the others are being compiled with gcc.

I'll rebuild everything with gcc, and see whether that sorts it out. And if not, then I guess I rebuild everything with cc :-(