https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87289
--- Comment #5 from pdbain at ca dot ibm.com ---
The compiler trips on this part of jnicsup.cpp (ca. line 500):
#ifdef J9VM_INTERP_FLOAT_SUPPORT
case 'F':
/* float type */
fltPtr = (jfloat*)--sp;
/* The Linux SH4 compiler needs the next two
lines to be two steps. If you combine them it fails to compile */
dbl = ARG(jdouble, f);
*fltPtr = (jfloat)dbl;
break;
case 'D':
/* double type */
dbl = ARG(jdouble, d);
lngOrDblPtr = (UDATA *) &dbl;
goto pushLongOrDouble;
#endif
case 'J':
/* long type */
lng = ARG(jlong, j);
lngOrDblPtr = (UDATA *) &lng;
pushLongOrDouble:
#ifdef J9VM_ENV_DATA64
--sp;
*--sp = *(lngOrDblPtr);
#else
*--sp = *(lngOrDblPtr + 1);
*--sp = *(lngOrDblPtr);
#endif
break;
Replacing the "goto" with a copy of the "gone-to" code makes the test pass.