"=?utf-8?B?V2VpIFN1bg==?=" <936739278@qq.com> writes:
> When I built the latest code for branch REL_10_STABLE on the Solairs,
> the following error occurred:
> ------------------------------------------------------
> "plperl.c", line 669: syntax error before or at: if
> "plperl.c", line 669: undefined symbol: _sv
> "plperl.c", line 669: left operand of "->" must be pointer to struct/union
> "plperl.c", line 669: warning: improper pointer/integer combination: arg #2
> "plperl.c", line 669: syntax error before or at: else
> "plperl.c", line 670: warning: statement not reached
> "plperl.c", line 678: cannot recover from previous errors
> cc: acomp failed for plperl.c
> gmake: *** [plperl.o] Error 2
> ------------------------------------------------------
Hm. I saw something similar on my old dinosaur pademelon, but wrote it
off as "they don't care about pre-C99 compilers anymore". But now I
dug into ppport.h a bit more, and I think it's actually busted for
non-gcc compilers: eval_pv expands into something that tries to use
STMT_START/STMT_END inside a plain parenthesized expression (via
croak_sv).
Maybe the bleeding edge Devel::PPPort would do better? I see
Revision history for Devel-PPPort
3.64 - 2022-02-01
* Fix: better support for STMT_START / STMT_END definition
* Fix: Only use '-Wdeclaration-after-statement' if possible
which if not a smoking gun is at least firearm-adjacent.
regards, tom lane