Semantics of MODIFY_EXPR with CONSTRUCTOR rhs

Richard Kenner kenner@vlsi1.ultra.nyu.edu
Mon Aug 2 03:17:00 GMT 2004


Suppose we have this in .t03.original:

  r = {.x=5, .y=8};
  r = {.x=1, .y=r.x};

Is the second statement valid?  If so, which r.x is it meant to access?

We gimplify as:

  r.x = 5;
  r.y = 8;
  r.x = 1;
  T.0 = r.x;
  r.y = T.0;
  T.0 = r.x;

This has it accessing the value partially stored by the second statement.

But the intent was for it to be the r.x stored by the *first* assignment.

What's supposed to be happening here?

(For the record, this is from ACATS test c52010a.adb.)



More information about the Gcc mailing list