/* Test the fix for PR94327. */ #include #include #include #include bool c_vrfy (const CFI_cdesc_t *restrict); char get_attr (const CFI_cdesc_t*restrict, bool); bool c_vrfy (const CFI_cdesc_t *restrict auxp) { CFI_index_t i, lb, ub, ex; int *ip = NULL; assert (auxp); assert (auxp->base_addr); lb = auxp->dim[0].lower_bound; ex = auxp->dim[0].extent; ub = ex + lb - 1; ip = (int*)auxp->base_addr; for (i=0; ielem_len == 4); assert (auxp->rank == 1); assert (auxp->type == CFI_type_int); attr = '\0'; switch (auxp->attribute) { case CFI_attribute_pointer: if (alloc && !c_vrfy (auxp)) break; attr = 'p'; break; case CFI_attribute_allocatable: if (alloc && !c_vrfy (auxp)) break; attr = 'a'; break; case CFI_attribute_other: assert (alloc); if (!c_vrfy (auxp)) break; attr = 'o'; break; default: break; } return attr; }