re PR target/29030 (gcc.dg/array-9.c produces internal compiler error on Darwin at...
authorAndrew Pinski <pinskia@physics.uc.edu>
Sat, 16 Sep 2006 09:01:16 +0000 (09:01 +0000)
committerEric Christopher <echristo@gcc.gnu.org>
Sat, 16 Sep 2006 09:01:16 +0000 (09:01 +0000)
2006-09-16   Andrew Pinski  <pinskia@physics.uc.edu>
             Jack Howarth  <howarth@bromo.med.uc.edu>

        PR target/29030
        * config/rs6000/rs6000.c (rs6000_darwin64_record_arg_advance_recurse)
        skip on error_mark_node.                                                                   (rs6000_darwin64_record_arg_recurse): Likewise.

Co-Authored-By: Jack Howarth <howarth@bromo.med.uc.edu>
From-SVN: r116994

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index ae477841b418a132643381cd95930a3c34798555..52549ad870e1ce0bb846c3e6414b9e5091928e18 100644 (file)
@@ -1,3 +1,11 @@
+2006-09-16   Andrew Pinski  <pinskia@physics.uc.edu>
+            Jack Howarth  <howarth@bromo.med.uc.edu>
+
+       PR target/29030
+       * config/rs6000/rs6000.c (rs6000_darwin64_record_arg_advance_recurse)
+       skip on error_mark_node.
+       (rs6000_darwin64_record_arg_recurse): Likewise.
+
 2006-09-16  Steven Bosscher  <steven@gcc.gnu.org>
 
        * rtl.h (LABEL_OUTSIDE_LOOP_P): Remove.
index 780e905daac5a45926fb6becaa2326f660cba885..d8d0db10b7c6b5085179c8dfc4fa4d3eb781ecc5 100644 (file)
@@ -4607,7 +4607,10 @@ rs6000_darwin64_record_arg_advance_recurse (CUMULATIVE_ARGS *cum,
       {
        HOST_WIDE_INT bitpos = startbitpos;
        tree ftype = TREE_TYPE (f);
-       enum machine_mode mode = TYPE_MODE (ftype);
+       enum machine_mode mode;
+       if (ftype == error_mark_node)
+         continue;
+       mode = TYPE_MODE (ftype);
 
        if (DECL_SIZE (f) != 0
            && host_integerp (bit_position (f), 1))
@@ -4975,7 +4978,10 @@ rs6000_darwin64_record_arg_recurse (CUMULATIVE_ARGS *cum, tree type,
       {
        HOST_WIDE_INT bitpos = startbitpos;
        tree ftype = TREE_TYPE (f);
-       enum machine_mode mode = TYPE_MODE (ftype);
+       enum machine_mode mode;
+       if (ftype == error_mark_node)
+         continue;
+       mode = TYPE_MODE (ftype);
 
        if (DECL_SIZE (f) != 0
            && host_integerp (bit_position (f), 1))