[PATCH] Fix PR54837
Richard Biener
rguenther@suse.de
Tue Oct 9 14:30:00 GMT 2012
This should fix PR54837, LTO is not yet prepared for
debug source stmts. The following moves checking code that
triggers to a place where it hopefully does not trigger.
LTO bootstrap is broken in other ways though :(
Will commit after non-LTO bootstrap finished to make progress.
Richard.
2012-10-09 Richard Guenther <rguenther@suse.de>
PR middle-end/54837
* cfgexpand.c (expand_debug_source_expr): Move checking
code conditional on a found decl_debug_args vector.
Index: gcc/cfgexpand.c
===================================================================
--- gcc/cfgexpand.c (revision 192253)
+++ gcc/cfgexpand.c (working copy)
@@ -3521,25 +3521,23 @@ expand_debug_source_expr (tree exp)
&& !DECL_INCOMING_RTL (exp)
&& DECL_ABSTRACT_ORIGIN (current_function_decl))
{
- tree aexp = exp;
- if (DECL_ABSTRACT_ORIGIN (exp))
- aexp = DECL_ABSTRACT_ORIGIN (exp);
+ tree aexp = DECL_ORIGIN (exp);
if (DECL_CONTEXT (aexp)
== DECL_ABSTRACT_ORIGIN (current_function_decl))
{
VEC(tree, gc) **debug_args;
unsigned int ix;
tree ddecl;
-#ifdef ENABLE_CHECKING
- tree parm;
- for (parm = DECL_ARGUMENTS (current_function_decl);
- parm; parm = DECL_CHAIN (parm))
- gcc_assert (parm != exp
- && DECL_ABSTRACT_ORIGIN (parm) != aexp);
-#endif
debug_args = decl_debug_args_lookup (current_function_decl);
if (debug_args != NULL)
{
+#ifdef ENABLE_CHECKING
+ tree parm;
+ for (parm = DECL_ARGUMENTS (current_function_decl);
+ parm; parm = DECL_CHAIN (parm))
+ gcc_assert (parm != exp
+ && DECL_ABSTRACT_ORIGIN (parm) != aexp);
+#endif
for (ix = 0; VEC_iterate (tree, *debug_args, ix, ddecl);
ix += 2)
if (ddecl == aexp)
More information about the Gcc-patches
mailing list