re PR debug/13841 (missing debug info for _Complex function arguments)
authorRichard Henderson <rth@redhat.com>
Wed, 13 Oct 2004 23:25:13 +0000 (16:25 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 13 Oct 2004 23:25:13 +0000 (16:25 -0700)
        PR debug/13841
        * function.c (instantiate_decl): Recurse for CONCAT.

From-SVN: r89007

gcc/ChangeLog
gcc/function.c

index dc013694fe9598b6e29a2b5d484a87bb507b8f8d..826702127d569ac6e0309e89745d96bb3acd554f 100644 (file)
@@ -1,3 +1,8 @@
+2004-10-13  Richard Henderson  <rth@redhat.com>
+        PR debug/13841
+        * function.c (instantiate_decl): Recurse for CONCAT.
+
 2004-10-13  David Edelsohn  <edelsohn@gnu.org>
 
        * config/rs6000/rs6000.md (andsi3): Add attribute "compare" for
index a8bd0f5b5fd999fc26337695969e315fe68c1d29..8d6f8fb35860f5095b07b5796984382dd88116a0 100644 (file)
@@ -1343,10 +1343,20 @@ instantiate_decl (rtx x, HOST_WIDE_INT size, int valid_only)
   enum machine_mode mode;
   rtx addr;
 
+  if (x == 0)
+    return;
+
+  /* If this is a CONCAT, recurse for the pieces.  */
+  if (GET_CODE (x) == CONCAT)
+    {
+      instantiate_decl (XEXP (x, 0), size / 2, valid_only);
+      instantiate_decl (XEXP (x, 1), size / 2, valid_only);
+      return;
+    }
+
   /* If this is not a MEM, no need to do anything.  Similarly if the
      address is a constant or a register that is not a virtual register.  */
-
-  if (x == 0 || !MEM_P (x))
+  if (!MEM_P (x))
     return;
 
   addr = XEXP (x, 0);