re PR debug/79000 (ICE: in gen_member_die, at dwarf2out.c:23995)
2017-01-09 Richard Biener <rguenther@suse.de> PR debug/79000 * dwarf2out.c (is_cxx): New overload with context. (is_naming_typedef_decl): Use it. * g++.dg/lto/pr79000_0.C: New testcase. * g++.dg/lto/pr79000_1.c: Likewise. From-SVN: r244217
This commit is contained in:
parent
d86c3c0226
commit
813b9c0d3a
|
@ -1,3 +1,9 @@
|
||||||
|
2017-01-09 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR debug/79000
|
||||||
|
* dwarf2out.c (is_cxx): New overload with context.
|
||||||
|
(is_naming_typedef_decl): Use it.
|
||||||
|
|
||||||
2017-01-08 Sandra Loosemore <sandra@codesourcery.com>
|
2017-01-08 Sandra Loosemore <sandra@codesourcery.com>
|
||||||
|
|
||||||
* invoke.texi (Option Summary): Correct spacing in option lists
|
* invoke.texi (Option Summary): Correct spacing in option lists
|
||||||
|
|
|
@ -3356,6 +3356,7 @@ static int get_AT_flag (dw_die_ref, enum dwarf_attribute);
|
||||||
static unsigned get_AT_unsigned (dw_die_ref, enum dwarf_attribute);
|
static unsigned get_AT_unsigned (dw_die_ref, enum dwarf_attribute);
|
||||||
static inline dw_die_ref get_AT_ref (dw_die_ref, enum dwarf_attribute);
|
static inline dw_die_ref get_AT_ref (dw_die_ref, enum dwarf_attribute);
|
||||||
static bool is_cxx (void);
|
static bool is_cxx (void);
|
||||||
|
static bool is_cxx (const_tree);
|
||||||
static bool is_fortran (void);
|
static bool is_fortran (void);
|
||||||
static bool is_ada (void);
|
static bool is_ada (void);
|
||||||
static bool remove_AT (dw_die_ref, enum dwarf_attribute);
|
static bool remove_AT (dw_die_ref, enum dwarf_attribute);
|
||||||
|
@ -4990,6 +4991,27 @@ is_cxx (void)
|
||||||
|| lang == DW_LANG_C_plus_plus_11 || lang == DW_LANG_C_plus_plus_14);
|
|| lang == DW_LANG_C_plus_plus_11 || lang == DW_LANG_C_plus_plus_14);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Return TRUE if DECL was created by the C++ frontend. */
|
||||||
|
|
||||||
|
static bool
|
||||||
|
is_cxx (const_tree decl)
|
||||||
|
{
|
||||||
|
if (in_lto_p)
|
||||||
|
{
|
||||||
|
const_tree context = decl;
|
||||||
|
while (context && TREE_CODE (context) != TRANSLATION_UNIT_DECL)
|
||||||
|
{
|
||||||
|
if (TREE_CODE (context) == BLOCK)
|
||||||
|
context = BLOCK_SUPERCONTEXT (context);
|
||||||
|
else
|
||||||
|
context = get_containing_scope (context);
|
||||||
|
}
|
||||||
|
if (context && TRANSLATION_UNIT_LANGUAGE (context))
|
||||||
|
return strncmp (TRANSLATION_UNIT_LANGUAGE (context), "GNU C++", 7) == 0;
|
||||||
|
}
|
||||||
|
return is_cxx ();
|
||||||
|
}
|
||||||
|
|
||||||
/* Return TRUE if the language is Java. */
|
/* Return TRUE if the language is Java. */
|
||||||
|
|
||||||
static inline bool
|
static inline bool
|
||||||
|
@ -24762,7 +24784,7 @@ is_naming_typedef_decl (const_tree decl)
|
||||||
/* It looks like Ada produces TYPE_DECLs that are very similar
|
/* It looks like Ada produces TYPE_DECLs that are very similar
|
||||||
to C++ naming typedefs but that have different
|
to C++ naming typedefs but that have different
|
||||||
semantics. Let's be specific to c++ for now. */
|
semantics. Let's be specific to c++ for now. */
|
||||||
|| !is_cxx ())
|
|| !is_cxx (decl))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
return (DECL_ORIGINAL_TYPE (decl) == NULL_TREE
|
return (DECL_ORIGINAL_TYPE (decl) == NULL_TREE
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2017-01-09 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
|
PR debug/79000
|
||||||
|
* g++.dg/lto/pr79000_0.C: New testcase.
|
||||||
|
* g++.dg/lto/pr79000_1.c: Likewise.
|
||||||
|
|
||||||
2017-01-08 Martin Sebor <msebor@redhat.com>
|
2017-01-08 Martin Sebor <msebor@redhat.com>
|
||||||
|
|
||||||
PR middle-end/77708
|
PR middle-end/77708
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
// { dg-lto-do link }
|
||||||
|
// { dg-lto-options { "-flto -g" } }
|
||||||
|
// { dg-extra-ld-options "-r -nostdlib" }
|
||||||
|
|
||||||
|
struct a {
|
||||||
|
a();
|
||||||
|
} b;
|
|
@ -0,0 +1,5 @@
|
||||||
|
typedef struct a b;
|
||||||
|
typedef struct a { } b;
|
||||||
|
struct {
|
||||||
|
b c;
|
||||||
|
} d;
|
Loading…
Reference in New Issue