"rguenth at gcc dot gnu dot org" <[EMAIL PROTECTED]> writes:

| For
| 
| struct {} a[4]; int main() { return &a[2] - &a[1]; }
| 
| the C frontend emits
| 
|   return 0 /[ex] 0;
| 
| which will, at -O0 fault at runtime, at -O not due to RTL CSE.
| 
| Is this even well-defined?

No, as you noted below.

|  Should the C-frontend rather emit
| 
|  return 0;
| 
| ?  Of course this contradicts the C standard, but that does not
| allow empty structures anyway.

If you go back to the GCC mailing list (circa 2001, 2002), you'll see
heavy and hot debates about what the answer should be.
For that matter, the C++ standards allow empty structures but do not
allow "return 0".  I suppose the real question is what use do you have
for an array of empty structures.

-- Gaby

Reply via email to