1 #include <stdlib.h> 2 3 #include <ISO_Fortran_binding.h> 4 #include "dump-descriptors.h" 5 6 extern void ctest (CFI_cdesc_t *, _Bool); 7 8 void ctest(CFI_cdesc_t * a,_Bool is_cont)9ctest (CFI_cdesc_t *a, _Bool is_cont) 10 { 11 CFI_index_t subscripts[2]; 12 /* Dump the descriptor contents to test that we can access the fields 13 correctly, etc. */ 14 15 #if DEBUG 16 dump_CFI_cdesc_t (a); 17 #endif 18 19 /* We expect to get an array of shape (5,10) that may not be 20 contiguous. */ 21 if (!a->base_addr) 22 abort (); 23 if (a->elem_len != sizeof(int)) 24 abort (); 25 if (a->rank != 2) 26 abort (); 27 if (a->type != CFI_type_int) 28 abort (); 29 if (a->attribute != CFI_attribute_other) 30 abort (); 31 if (a->dim[0].lower_bound != 0) 32 abort (); 33 if (a->dim[0].extent != 5) 34 abort (); 35 if (a->dim[1].lower_bound != 0) 36 abort (); 37 if (a->dim[1].extent != 10) 38 abort (); 39 40 if (is_cont != CFI_is_contiguous (a)) 41 abort (); 42 43 if (abs (a->dim[0].sm) < a->elem_len) 44 abort (); 45 46 for (int j = 0; j < 5; ++j) 47 for (int i = 0; i < 10; ++i) 48 { 49 subscripts[0] = j; subscripts[1] = i; 50 if (*(int *) CFI_address (a, subscripts) != (i+1) + 100*(j+1)) 51 abort (); 52 } 53 } 54