#include <stdlib.h>
/* interopse with myftype_1 */
typedef struct {
   signed char chr;
   signed char chr2;
} myctype_t;


extern void abort(void);
void types_test(void);
/* declared in the fortran module */
extern myctype_t myVar;

int main(int argc, char **argv)
{
   myctype_t *cchr;
   asm("":"=r"(cchr):"0"(&myVar));
   cchr->chr = 1;
   cchr->chr2 = 2;

   types_test();

   if(cchr->chr != 2)
      abort();
   if(cchr->chr2 != 2)
      abort();
   myVar.chr2 = 3;
   types_test();

   if(myVar.chr != 3)
      abort();
   if(myVar.chr2 != 3)
      abort();
   return 0;
}

