diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2006-09-16 09:01:16 +0000 |
---|---|---|
committer | Eric Christopher <echristo@gcc.gnu.org> | 2006-09-16 09:01:16 +0000 |
commit | 70fb00df825a01713f7e907128ed2f900e5ac287 (patch) | |
tree | def99f4399c3f3870a8bf4fd8e214410a64584eb | |
parent | 3c40b0525ea4b4fd83041c2b9d0ef78801a3dabe (diff) | |
download | gcc-70fb00df825a01713f7e907128ed2f900e5ac287.zip gcc-70fb00df825a01713f7e907128ed2f900e5ac287.tar.gz gcc-70fb00df825a01713f7e907128ed2f900e5ac287.tar.bz2 |
re PR target/29030 (gcc.dg/array-9.c produces internal compiler error on Darwin at -m64)
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
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 10 |
2 files changed, 16 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ae47784..52549ad 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 780e905..d8d0db1 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -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)) |