On 6 January 2017 at 11:21, Jakub Jelinek <ja...@redhat.com> wrote:
> On Fri, Jan 06, 2017 at 09:34:46AM +0100, Christophe Lyon wrote:
>> I makes my aarch64*linux* and arm*linux* builds for fail, because:
>> gcc/fortran/simplify.c:613: error: #pragma GCC diagnostic not allowed
>> inside functions
>> gcc/fortran/simplify.c:620: error: #pragma GCC diagnostic not allowed
>> inside functions
>> gcc/fortran/simplify.c:624: error: #pragma GCC diagnostic not allowed
>> inside functions
>>
>> My host compiler is RHEL6's, that is 4.4.7....
>>
>> I'm not sure what current minimum gcc version is required to build gcc?
>
> So, do we want something like (untested) following patch then, so that we
> use the pragmas only on recent GCC versions?
>
I would say so, RHEL6 is not that old, is it?
I think we want to be able to build GCC on reasonably old machines.

Christophe

> 2017-01-06  Jakub Jelinek  <ja...@redhat.com>
>
>         * system.h (GCC_DIAGNOSTIC_PUSH_IGNORED, GCC_DIAGNOSTIC_POP,
>         GCC_DIAGNOSTIC_STRINGIFY): Define.
>
>         * simplify.c (simplify_transformation_to_array): Use
>         GCC_DIAGNOSTIC_PUSH_IGNORED and GCC_DIAGNOSTIC_POP instead of
>         #pragma GCC diagnostic {push,ignored,pop}.
>
> --- gcc/system.h.jj     2017-01-01 12:45:36.000000000 +0100
> +++ gcc/system.h        2017-01-06 11:14:02.576406680 +0100
> @@ -1140,6 +1140,18 @@ helper_const_non_const_cast (const char
>  #define VALGRIND_FREELIKE_BLOCK(x,y)
>  #endif
>
> +/* Macros to temporarily ignore some warnings.  */
> +#if GCC_VERSION >= 6000
> +#define GCC_DIAGNOSTIC_STRINGIFY(x) #x
> +#define GCC_DIAGNOSTIC_PUSH_IGNORED(x) \
> +  _Pragma ("GCC diagnostic push") \
> +  _Pragma (GCC_DIAGNOSTIC_STRINGIFY (GCC diagnostic ignored #x))
> +#define GCC_DIAGNOSTIC_POP _Pragma ("GCC diagnostic pop")
> +#else
> +#define GCC_DIAGNOSTIC_PUSH_IGNORED(x)
> +#define GCC_DIAGNOSTIC_POP
> +#endif
> +
>  /* In LTO -fwhole-program build we still want to keep the debug functions 
> available
>     for debugger.  Mark them as used to prevent removal.  */
>  #if (GCC_VERSION > 4000)
> --- gcc/fortran/simplify.c.jj   2017-01-06 09:23:31.000000000 +0100
> +++ gcc/fortran/simplify.c      2017-01-06 11:15:01.003630017 +0100
> @@ -610,18 +610,17 @@ simplify_transformation_to_array (gfc_ex
>           n++;
>           if (n < result->rank)
>             {
> -#pragma GCC diagnostic push
>               /* If the nested loop is unrolled GFC_MAX_DIMENSIONS
>                  times, we'd warn for the last iteration, because the
>                  array index will have already been incremented to the
>                  array sizes, and we can't tell that this must make
>                  the test against result->rank false, because ranks
>                  must not exceed GFC_MAX_DIMENSIONS.  */
> -#pragma GCC diagnostic ignored "-Warray-bounds"
> +             GCC_DIAGNOSTIC_PUSH_IGNORED (-Warray-bounds)
>               count[n]++;
>               base += sstride[n];
>               dest += dstride[n];
> -#pragma GCC diagnostic pop
> +             GCC_DIAGNOSTIC_POP
>             }
>           else
>             done = true;
>
>         Jakub

Reply via email to