This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[debug-early] fix problem with C_TYPE_INCOMPLETE_VARS and TYPE_VFIELD overloading


In the debug-early work we call dwarf2out early from rest_of_decl_compilation. Dwarf2out, via gen_struct_or_union_type_die(), will eventually look at TYPE_VFIELD, which is currently being overloaded by the C front-end to keep incomplete variables.

Nobody should be looking at the type too in depth if it's incomplete, but in this case, the type has just been laid out (layout_decl) so it's considered complete, just as we're about to iterate through C_TYPE_INCOMPLETE_VARS and fix things up.

To fix my dwarf problem, I've just cached C_TYPE_INCOMPLETE_VARS and immediately clear it, as it was going to be cleared after anyhow.

Attached is what I'm committing to the branch, but ideally y'all^Wyall front-end folks should use some language specific node. Nothing was obvious in tree-core.h, as most front-end specific things are flags (booleans), so I've left this as an exercise to the front-end groupie. That being said, if you violently oppose this solution, I'd be more than happy to entertain another (hopefully simple) approach.

Aldy

p.s. I wonder how many things are being overloaded by the front-end that are being looked at by dwarf2out incorrectly. Well, nothing that triggers a gdb regression....

Attachment: curr
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]