| Index: gcc/libgfortran/m4/minloc1.m4
|
| diff --git a/gcc/libgfortran/m4/minloc1.m4 b/gcc/libgfortran/m4/minloc1.m4
|
| index 905619a3896e659e2a4a74e9130e133fcc53ae53..6fa5e69ccc75d26842e101e03e590d1592c56a1b 100644
|
| --- a/gcc/libgfortran/m4/minloc1.m4
|
| +++ b/gcc/libgfortran/m4/minloc1.m4
|
| @@ -34,24 +34,67 @@ include(ifunction.m4)dnl
|
| `#if defined (HAVE_'atype_name`) && defined (HAVE_'rtype_name`)'
|
|
|
| ARRAY_FUNCTION(0,
|
| -` atype_name minval;
|
| - minval = atype_max;
|
| - result = 0;',
|
| -` if (*src < minval || !result)
|
| - {
|
| - minval = *src;
|
| - result = (rtype_name)n + 1;
|
| - }')
|
| +` atype_name minval;
|
| +#if defined ('atype_inf`)
|
| + minval = atype_inf;
|
| +#else
|
| + minval = atype_max;
|
| +#endif
|
| + result = 1;',
|
| +`#if defined ('atype_nan`)
|
| + if (*src <= minval)
|
| + {
|
| + minval = *src;
|
| + result = (rtype_name)n + 1;
|
| + break;
|
| + }
|
| + }
|
| + for (; n < len; n++, src += delta)
|
| + {
|
| +#endif
|
| + if (*src < minval)
|
| + {
|
| + minval = *src;
|
| + result = (rtype_name)n + 1;
|
| + }')
|
|
|
| MASKED_ARRAY_FUNCTION(0,
|
| -` atype_name minval;
|
| - minval = atype_max;
|
| - result = 0;',
|
| -` if (*msrc && (*src < minval || !result))
|
| - {
|
| - minval = *src;
|
| - result = (rtype_name)n + 1;
|
| - }')
|
| +` atype_name minval;
|
| +#if defined ('atype_inf`)
|
| + minval = atype_inf;
|
| +#else
|
| + minval = atype_max;
|
| +#endif
|
| +#if defined ('atype_nan`)
|
| + rtype_name result2 = 0;
|
| +#endif
|
| + result = 0;',
|
| +` if (*msrc)
|
| + {
|
| +#if defined ('atype_nan`)
|
| + if (!result2)
|
| + result2 = (rtype_name)n + 1;
|
| + if (*src <= minval)
|
| +#endif
|
| + {
|
| + minval = *src;
|
| + result = (rtype_name)n + 1;
|
| + break;
|
| + }
|
| + }
|
| + }
|
| +#if defined ('atype_nan`)
|
| + if (unlikely (n >= len))
|
| + result = result2;
|
| + else
|
| +#endif
|
| + for (; n < len; n++, src += delta, msrc += mdelta)
|
| + {
|
| + if (*msrc && *src < minval)
|
| + {
|
| + minval = *src;
|
| + result = (rtype_name)n + 1;
|
| + }')
|
|
|
| SCALAR_ARRAY_FUNCTION(0)
|
|
|
|
|