> I'm asking you to clarify the logic. It seems that your change to > fldtype affects these two tests: > >> if (eltype == fldtype || TYPE_UNNAMED_P (eltype)) > >> if (TREE_CODE (fldtype) != ARRAY_TYPE) > > ...but this is extremely subtle. It would be a lot clearer to check fld > for FIELD_DECL or TYPE_DECL explicitly rather than relying on these > places that treat fldtype as a type to do the right thing because you've > obfuscated it. But I'm tired of going back and forth on this, so here's > a patch. > > And now that I notice it, there seems to be no reason to handle typedefs > deep in the code for handling fields, it's simpler to handle them up top. I'm sorry you're frustrated. I have no problem changing the code to the way you wrote it. I agree it's more streamlined though I would be hard pressed to consider the improvement to be worth the time and effort we both put into it. I'm also not sure I see how someone can be expected to write the code exactly the way you want based on little more than questions about why the code does what it does. I had no idea what your expectation was for the fldtype variable for instance. Attached is the integrated patch. Martin