aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2004-10-13 16:25:13 -0700
committerRichard Henderson <rth@gcc.gnu.org>2004-10-13 16:25:13 -0700
commit32e66afd7f82ae62f3232146743d3ab7eec86557 (patch)
tree8e8e95b233724fcd2ac3a885b01af5e77abb9062 /gcc
parent9a3c428bc097eba96491141bf520d255b70f990c (diff)
downloadgcc-32e66afd7f82ae62f3232146743d3ab7eec86557.zip
gcc-32e66afd7f82ae62f3232146743d3ab7eec86557.tar.gz
gcc-32e66afd7f82ae62f3232146743d3ab7eec86557.tar.bz2
re PR debug/13841 (missing debug info for _Complex function arguments)
PR debug/13841 * function.c (instantiate_decl): Recurse for CONCAT. From-SVN: r89007
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/function.c14
2 files changed, 17 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dc01369..8267021 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/function.c b/gcc/function.c
index a8bd0f5..8d6f8fb 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -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);