1 /* { dg-do compile } */ 2 /* { dg-require-effective-target arm_neon } */ 3 /* { dg-options "-std=c99 -Os -g -march=armv7-a" } */ 4 /* { dg-add-options arm_neon } */ 5 6 typedef unsigned int size_t; 7 typedef int ptrdiff_t; 8 typedef signed char int8_t ; 9 typedef signed long long int64_t; 10 typedef int8_t GFC_INTEGER_1; 11 typedef GFC_INTEGER_1 GFC_LOGICAL_1; 12 typedef int64_t GFC_INTEGER_8; 13 typedef GFC_INTEGER_8 GFC_LOGICAL_8; 14 typedef ptrdiff_t index_type; 15 typedef struct descriptor_dimension 16 { 17 index_type lower_bound; 18 index_type _ubound; 19 } 20 descriptor_dimension; 21 typedef struct { GFC_LOGICAL_1 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_l1; 22 typedef struct { GFC_LOGICAL_8 *base_addr; size_t offset; index_type dtype; descriptor_dimension dim[7];} gfc_array_l8; 23 void all_l8(gfc_array_l8 * const restrict retarray,gfc_array_l1 * const restrict array,const index_type * const restrict pdim)24all_l8 (gfc_array_l8 * const restrict retarray, 25 gfc_array_l1 * const restrict array, 26 const index_type * const restrict pdim) 27 { 28 GFC_LOGICAL_8 * restrict dest; 29 index_type n; 30 index_type len; 31 index_type delta; 32 index_type dim; 33 dim = (*pdim) - 1; 34 len = ((array)->dim[dim]._ubound + 1 - (array)->dim[dim].lower_bound); 35 for (n = 0; n < dim; n++) 36 { 37 const GFC_LOGICAL_1 * restrict src; 38 GFC_LOGICAL_8 result; 39 { 40 result = 1; 41 { 42 for (n = 0; n < len; n++, src += delta) 43 { 44 if (! *src) 45 { 46 result = 0; 47 break; 48 } 49 } 50 *dest = result; 51 } 52 } 53 } 54 } 55