3.5.1.17.5 Limitations

There are some limitations for struct support that can prevent partitioning / packing. The unsupported cases are generally not used in HLS designs:

  • struct interfaces with pointer fields.
struct S {
  int a;
  char *b;
};
  • Casting a struct to another type.
struct S {
  char a;
  int b;
};

S s;
char *t = (char *)(&s);
char c = t[0];
      
  • Storing the address of a struct field.
struct S {
  char a;
  int b;
};

S s;
int *t = (int *)(&s.b);
foo(t);