@@ -100,7 +100,13 @@ SEXP CAR(SEXP e);
100100#endif
101101
102102#ifdef STRICT_TYPECHECK
103- /*HIDDEN*/ INLINE_FUN void CHKVEC (SEXP x ) {
103+ /* Functions called from other inline functions cannot be hidden, because
104+ the compiler may choose to inline the caller, but not the callee, causing
105+ a linking failure in the caller if the callee is hidden. The callees
106+ that were exposed due to this problem have comment "HIDDEN (inlining)",
107+ below.
108+ */
109+ /*HIDDEN (inlining)*/ INLINE_FUN void CHKVEC (SEXP x ) {
104110 switch (TYPEOF (x )) {
105111 case CHARSXP :
106112 case LGLSXP :
@@ -324,7 +330,7 @@ INLINE_FUN R_xlen_t XTRUELENGTH(SEXP x)
324330# define CHECK_VECTOR_RAW_ELT (x , i ) do { } while(0)
325331#endif
326332
327- /*HIDDEN*/ INLINE_FUN int * LOGICAL0 (SEXP x ) {
333+ /*HIDDEN (inlining) */ INLINE_FUN int * LOGICAL0 (SEXP x ) {
328334 CHECK_STDVEC_LGL (x );
329335 return (int * ) STDVEC_DATAPTR (x );
330336}
@@ -337,15 +343,15 @@ HIDDEN INLINE_FUN void SET_SCALAR_LVAL(SEXP x, Rboolean v) {
337343 LOGICAL0 (x )[0 ] = v ;
338344}
339345
340- /*HIDDEN*/ INLINE_FUN int * INTEGER0 (SEXP x ) {
346+ /*HIDDEN (inlining) */ INLINE_FUN int * INTEGER0 (SEXP x ) {
341347 CHECK_STDVEC_INT (x );
342348 return (int * ) STDVEC_DATAPTR (x );
343349}
344350HIDDEN INLINE_FUN int SCALAR_IVAL (SEXP x ) {
345351 CHECK_SCALAR_INT (x );
346352 return INTEGER0 (x )[0 ];
347353}
348- /*HIDDEN*/ INLINE_FUN void SET_SCALAR_IVAL (SEXP x , int v ) {
354+ /*HIDDEN (inlining) */ INLINE_FUN void SET_SCALAR_IVAL (SEXP x , int v ) {
349355 CHECK_SCALAR_INT (x );
350356 INTEGER0 (x )[0 ] = v ;
351357}
@@ -358,7 +364,7 @@ HIDDEN INLINE_FUN double SCALAR_DVAL(SEXP x) {
358364 CHECK_SCALAR_REAL (x );
359365 return REAL0 (x )[0 ];
360366}
361- /*HIDDEN*/ INLINE_FUN void SET_SCALAR_DVAL (SEXP x , double v ) {
367+ /*HIDDEN (inlining) */ INLINE_FUN void SET_SCALAR_DVAL (SEXP x , double v ) {
362368 CHECK_SCALAR_REAL (x );
363369 REAL0 (x )[0 ] = v ;
364370}
@@ -371,20 +377,20 @@ HIDDEN INLINE_FUN Rcomplex SCALAR_CVAL(SEXP x) {
371377 CHECK_SCALAR_CPLX (x );
372378 return COMPLEX0 (x )[0 ];
373379}
374- /*HIDDEN*/ INLINE_FUN void SET_SCALAR_CVAL (SEXP x , Rcomplex v ) {
380+ /*HIDDEN (inlining) */ INLINE_FUN void SET_SCALAR_CVAL (SEXP x , Rcomplex v ) {
375381 CHECK_SCALAR_CPLX (x );
376382 COMPLEX0 (x )[0 ] = v ;
377383}
378384
379- /*HIDDEN*/ INLINE_FUN Rbyte * RAW0 (SEXP x ) {
385+ /*HIDDEN (inlining) */ INLINE_FUN Rbyte * RAW0 (SEXP x ) {
380386 CHECK_STDVEC_RAW (x );
381387 return (Rbyte * ) STDVEC_DATAPTR (x );
382388}
383389HIDDEN INLINE_FUN Rbyte SCALAR_BVAL (SEXP x ) {
384390 CHECK_SCALAR_RAW (x );
385391 return RAW0 (x )[0 ];
386392}
387- /*HIDDEN*/ INLINE_FUN void SET_SCALAR_BVAL (SEXP x , Rbyte v ) {
393+ /*HIDDEN (inlining) */ INLINE_FUN void SET_SCALAR_BVAL (SEXP x , Rbyte v ) {
388394 CHECK_SCALAR_RAW (x );
389395 RAW0 (x )[0 ] = v ;
390396}
0 commit comments