On January 6, 2017 11:21:44 AM GMT+01:00, 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?

Works for me.

Richard.

>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