From 6702ba93464c105fae0da7b54ac21a0485c1f0b5 Mon Sep 17 00:00:00 2001 From: Daniel Dragan Date: Thu, 15 Nov 2012 15:11:10 -0500 Subject: save_freeop is not an expression, remove PL_Xpv save_freeop and SAVEFREEOP are never used in expressions only statements. Using PL_Xpv is never ideal. For me .text section dropped from 0xC1DFF to 0xC1DBF after applying this. --- scope.h | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) (limited to 'scope.h') diff --git a/scope.h b/scope.h index de18fe0b6b..4373eacb3c 100644 --- a/scope.h +++ b/scope.h @@ -272,23 +272,14 @@ scope has the given name. Name must be a literal string. #define save_freesv(op) save_pushptr((void *)(op), SAVEt_FREESV) #define save_mortalizesv(op) save_pushptr((void *)(op), SAVEt_MORTALIZESV) -#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) + # define save_freeop(op) \ - ({ \ +STMT_START { \ OP * const _o = (OP *)(op); \ assert(!_o->op_savefree); \ _o->op_savefree = 1; \ save_pushptr((void *)(_o), SAVEt_FREEOP); \ - }) -#else -# define save_freeop(op) \ - ( \ - PL_Xpv = (XPV *)(op), \ - assert_(!((OP *)PL_Xpv)->op_savefree) \ - ((OP *)PL_Xpv)->op_savefree = 1, \ - save_pushptr((void *)(PL_Xpv), SAVEt_FREEOP) \ - ) -#endif + } STMT_END #define save_freepv(pv) save_pushptr((void *)(pv), SAVEt_FREEPV) #define save_op() save_pushptr((void *)(PL_op), SAVEt_OP) -- cgit v1.2.1