> I believe TYPE_ALIGN_OK should be "lowered" so that if you have a > handled-component chain with some intermediate TYPE_ALIGN_OK you > lower it to taking the address of that component and dereferencing > it (which is where the middle-end always trusts the alignment of > the type of the dereference). I don't think we honor TYPE_ALIGN_OK > "ok" everywhere ("ok" in the optimistic sense).
In the original design, TYPE_ALIGN_OK need not be honored or acted upon, it just needs to be preserved. It's only set on VIEW_CONVERT_EXPRs so that the RTL expander doesn't create temporaries on strict-alignment considerations, so it's essentially a flag on VIEW_CONVERT_EXPR but set on the target type which can be ignored entirely at the GIMPLE level as long as it's preserved. -- Eric Botcazou