OSDN Git Service

* emit-rtl.c (set_decl_incoming_rtl): Check whether the 0th element of
authorzlomek <zlomek@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 14 Feb 2004 18:45:41 +0000 (18:45 +0000)
committerzlomek <zlomek@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 14 Feb 2004 18:45:41 +0000 (18:45 +0000)
PARALLEL is NULL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@77811 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/emit-rtl.c

index db4ae6f..1971c2b 100644 (file)
@@ -1,3 +1,8 @@
+2004-02-14  Josef Zlomek  <zlomekj@suse.cz>
+
+       * emit-rtl.c (set_decl_incoming_rtl): Check whether the 0th element of
+       PARALLEL is NULL.
+
 2004-02-14  Per Bothner  <per@bothner.com>
 
        * fix-header.c (line_table):  Move local variable in main to global.
index 76f292c..2a14287 100644 (file)
@@ -852,8 +852,16 @@ set_decl_incoming_rtl (tree t, rtx x)
     }
   if (GET_CODE (x) == PARALLEL)
     {
-      int i;
-      for (i = 0; i < XVECLEN (x, 0); i++)
+      int i, start;
+
+      /* Check for a NULL entry, used to indicate that the parameter goes
+        both on the stack and in registers.  */
+      if (XEXP (XVECEXP (x, 0, 0), 0))
+       start = 0;
+      else
+       start = 1;
+
+      for (i = start; i < XVECLEN (x, 0); i++)
        {
          rtx y = XVECEXP (x, 0, i);
          if (REG_P (XEXP (y, 0)))