From patchwork Thu Jun 10 12:57:56 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [RFC] PR c++/44188 From: Dodji Seketeli X-Patchwork-Id: 55216 Message-Id: To: Jason Merrill Cc: gcc-patches@gcc.gnu.org, rdsandiford@googlemail.com Date: Thu, 10 Jun 2010 14:57:56 +0200 Richard Sandiford 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? Thanks. 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