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]

Re: [RFC] PR c++/44188


Richard Sandiford <rdsandiford@googlemail.com> writes:

> This breaks builds of libstdc++-v3 on mipsisa64-elf, where
> __builtin_va_list is a record type.  We end up trying to output a
> location for the definition of __builtin_va_list, which has location
> UNKNOWN_LOCATION.  We then segfault in lookup_filename because the
> filename associated with UNKNOWN_LOCATION is null.
>
> Testcase is:
>
>     typedef __builtin_va_list foo;
>
> compiled with "./cc1plus -g".
>
> A simple "fix" is attached, but many other built-in decls use
> UNKNOWN_LOCATION, so I suspect something more fundamental is wrong.
> Could you have a look?

Sure. I am building a cross compiler right now, as I don't have access
to this arch otherwise. It's taking time though.

If you can do a quick test, does the (untested) patch below fix the
issue for you?

diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 6cbe8dc..e35a780 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -19891,6 +19891,7 @@ is_naming_typedef_decl (const_tree decl)
   if (decl == NULL_TREE
       || TREE_CODE (decl) != TYPE_DECL
       || !is_tagged_type (TREE_TYPE (decl))
+      || DECL_IS_BUILTIN (decl)
       || is_redundant_typedef (decl)
       /* It looks like Ada produces TYPE_DECLs that are very similar
          to C++ naming typedefs but that have different

Thanks.

-- 
	Dodji


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