This bug is GCC PR middle-end/68733:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68733

The issue arises because structs larger than 64 bytes are passed by invisible 
reference and
the callee is responsible for copying.

Until this is resolved, the ICE can be avoided with the attached patch.  Please 
apply if okay.

Thanks,
Dave Anglin
--
John David Anglin       dave.ang...@bell.net


Description: Work around hppa gomp bug
 TODO: Put a short summary on the line above and replace this paragraph
 with a longer explanation of this change. Complete the meta-information
 with other relevant fields (see below for details). To make it easier, the
 information below has been extracted from the changelog. Adjust it or drop
 it.
 .
 cdo (1.7.0+dfsg.1-2) unstable; urgency=medium
 .
   * Change B-D to libpng-dev for png16 transition. Closes: #810171
   * Add szlib support using libaec-dev.
Author: Alastair McKinstry <mckins...@debian.org>
Bug-Debian: https://bugs.debian.org/810171

---
The information above should follow the Patch Tagging Guidelines, please
checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
are templates for supplementary fields that you might want to add:

Origin: <vendor|upstream|other>, <url of original patch>
Bug: <url in upstream bugtracker>
Bug-Debian: https://bugs.debian.org/<bugnumber>
Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
Forwarded: <no|not-needed|url proving that it has been forwarded>
Reviewed-By: <name and email of someone who approved the patch>
Last-Update: <YYYY-MM-DD>

--- cdo-1.7.0+dfsg.1.orig/src/remaplib.c
+++ cdo-1.7.0+dfsg.1/src/remaplib.c
@@ -1573,13 +1573,14 @@ void remap_stat(int remap_order, remapgr
 
 /*****************************************************************************/
 
-void remap_gradients(remapgrid_t grid, const double *restrict array, double 
*restrict grad_lat,
+void remap_gradients(remapgrid_t grid_arg, const double *restrict array, 
double *restrict grad_lat,
                     double *restrict grad_lon, double *restrict grad_latlon)
 {
   long nx, ny, grid_size;
   long i, j, ip1, im1, jp1, jm1, in, is, ie, iw, ine, inw, ise, isw;
   double delew, delns;
   double grad_lat_zero, grad_lon_zero;
+  remapgrid_t grid = grid_arg;
 
   if ( grid.rank != 2 )
     cdoAbort("Internal problem (remap_gradients), grid rank = %d!", grid.rank);

Reply via email to