internal compiler error at dwarf2out.c:8362
James E Wilson
wilson@specifixinc.com
Wed Apr 13 21:13:00 GMT 2005
Martin Koegler wrote:
> tree type = TREE_TYPE (*node);
> tree attr = tree_cons (name, args, TYPE_ATTRIBUTES (type));
> tree newtype = build_type_attribute_variant (type, attr);
> TYPE_MAIN_VARIANT (newtype) = TYPE_MAIN_VARIANT (type);
> TREE_TYPE (*node) = newtype;
You shouldn't be trying to build your own types in a machine dependent
attribute handler function. The compiler's type system is determined by
front-ends mainly, and some middle-end infrastructure, and isn't your
domain to mess with. This stuff is subject to change, at which point
your code may break.
The sensible thing here would be to give an error message if an
attribute is misused.
There are a number of subtleties in the type system relating to arrays,
so it isn't surprising that you are having trouble with them. For
instance, you can't apply some kinds of type modifiers to array types,
they have to be applied to the array element types instead.
I think the problem with your code is that you are setting
TYPE_MAIN_VARIANT to point at the original type. TYPE_MAIN_VARIANT is
only supposed to be used in the presence of type qualifiers like const
and volatile, to point at the unqualified type. But you have no type
qualifiers here, and hence TYPE_MAIN_VARIANT should point at itself.
See the gcc internals docs for TYPE_MAIN_VARIANT which specifically
mentions type qualifiers.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com
More information about the Gcc
mailing list