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  <rguent...@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)

Reply via email to