blob: e013011a38070759c8503e4c499190aeb1ffa8b4 [file] [log] [blame]
/* Test the fix of PR89846.
Contributed by Reinhold Bader <Bader@lrz.de>#include <stdio.h> */
#include <stdlib.h>
#include <stddef.h>
#include <stdio.h>
#include <ISO_Fortran_binding.h>
typedef struct
{
char n;
float r[2];
} t1;
typedef struct
{
long int i;
t1 t1;
} t2;
void ta0(CFI_cdesc_t *);
void ta1(CFI_cdesc_t *);
void ti(CFI_cdesc_t *this, int flag)
{
int status;
size_t dis;
CFI_CDESC_T(1) that;
t1 *ans;
switch (flag)
{
case 0:
dis = offsetof(t2, t1);
status = CFI_establish((CFI_cdesc_t *) &that, NULL, CFI_attribute_other,
CFI_type_struct, sizeof(t1), 1, NULL);
if (status != CFI_SUCCESS)
{
printf("FAIL 1 establish: nonzero status %i\n",status);
exit(1);
}
status = CFI_select_part((CFI_cdesc_t *) &that, this, dis, 0);
if (status != CFI_SUCCESS)
{
printf("FAIL C1: nonzero status %i\n",status);
exit(1);
}
break;
case 1:
dis = offsetof(t2, i);
status = CFI_establish((CFI_cdesc_t *) &that, NULL, CFI_attribute_other,
CFI_type_long, 0, 1, NULL);
if (status != CFI_SUCCESS)
{
printf("FAIL 2 establish: nonzero status %i\n",status);
exit(1);
}
status = CFI_select_part((CFI_cdesc_t *) &that, this, dis, 0);
if (status != CFI_SUCCESS)
{
printf("FAIL C2: nonzero status %i\n",status);
exit(1);
}
}
if (CFI_is_contiguous((CFI_cdesc_t *) &that))
{
printf("FAIL C: contiguity for flag value %i - is %i\n",flag,
CFI_is_contiguous((CFI_cdesc_t *) &that));
}
if (flag == 0) ta0((CFI_cdesc_t *) &that);
if (flag == 1) ta1((CFI_cdesc_t *) &that);
}