t/uni/fold.t on ithreads Solaris builds is a gcc bug:
(1) using Sun's cc helps
(2) rewriting the ithreads PM_SETRE() to do the
setting in two steps helps
(3) no other platforms have the crash
(4) Tru64's Third Degree sees nothing evil
So we implement (2).
p4raw-id: //depot/perl@15400
#ifdef USE_ITHREADS
#define PM_GETRE(o) (INT2PTR(REGEXP*,SvIVX(PL_regex_pad[(o)->op_pmoffset])))
-#define PM_SETRE(o,r) (sv_setiv(PL_regex_pad[(o)->op_pmoffset], PTR2IV(r)))
+#define PM_SETRE(o,r) STMT_START { SV* sv = PL_regex_pad[(o)->op_pmoffset]; sv_setiv(sv, PTR2IV(r)); } STMT_END
#define PM_GETRE_SAFE(o) (PL_regex_pad ? PM_GETRE(o) : (REGEXP*)0)
#define PM_SETRE_SAFE(o,r) if (PL_regex_pad) PM_SETRE(o,r)
#else