https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108896

--- Comment #35 from qinzhao at gcc dot gnu.org ---
(In reply to Martin Uecker from comment #34)
> Created attachment 54787 [details]
> patch for C FE to add size expressions to VM types in structs

thanks a lot for the patch.

could you please provide a small testing case that works with this patch that I
can take a further look?
I tried very simple one, didn't compile:

struct P {
  int k;
  int x[.k];
};

void
foo (int n)
{
  struct P p;
  p.k = n;
  return;
}

> 
> It works with UBSan, but it isn't clear how this could pass the
> information to the object size pass. This also does not work for
> parameters: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109334

>From your change, I can see that you put the ".k" info to the index of the
array type for x[.k], so I guess that other passes can refer the index of the
array type to get the max size of this array.

> 
> So it seems for an attribute it might make sense to implement
> it differently.
implement should be different. but the functionality of the user interface is
better to be kept consistent between attribute and language extension. i.e

in addition to the basic:

struct P {
  int k;
  int x[.k];
};

will you support expressions:

struct P {
  int k;
  int x[.k * 4];
}
?
or other more complicated syntax?

Reply via email to