On Thu, Mar 10, 2022 at 10:27:25AM -0800, Elijah Stone wrote: > Hi, > > The following code results in an initialiser overflow ICE on the latest > version of tcc (917aad3), amd64 linux. > > #include <stdlib.h> > #include <string.h> > > typedef struct { char b[2]; } Barb; > > Barb *f(Barb x, Barb y) { > return memcpy(malloc(2*sizeof(Barb)), &(Barb[]){x,y}, 2*sizeof(Barb)); > } > > Note: if I declare char b[1] in Barb, there is no error; but the error > occurs on any larger size.
Posted about the same issue a month ago. And I believe someone had reported the issue even before that. Last theory I heard was that the cast might be affecting padding. I believe if you have ``` Barb temp[2] = {x,y}; ``` and used temp in the memcpy you can avoid this issue. At least for me, the fact the issue is so easy to avoid is why it isn't at the top of my priority list. Arthur _______________________________________________ Tinycc-devel mailing list Tinycc-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/tinycc-devel