From 86710a8bf2b766e47127566f9e5839997f8ea531 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 4 Nov 2010 19:43:00 +0100 Subject: [PATCH] re PR target/46234 (ICE in expand_expr_real_2 for va-arg-XXX tescases) PR target/46234 * config/rs6000/rs6000.c (rs6000_va_start): Use build_simple_mem_ref instead of build_va_arg_indirect_ref. * config/spu/spu.c (spu_va_start): Likewise. * config/s390/s390.c (s390_va_start): Likewise. From-SVN: r166323 --- gcc/ChangeLog | 10 +++++++++- gcc/config/rs6000/rs6000.c | 2 +- gcc/config/s390/s390.c | 2 +- gcc/config/spu/spu.c | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eea7ecea57c9..7351294329bb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,7 +1,15 @@ +2010-11-04 Jakub Jelinek + + PR target/46234 + * config/rs6000/rs6000.c (rs6000_va_start): Use build_simple_mem_ref + instead of build_va_arg_indirect_ref. + * config/spu/spu.c (spu_va_start): Likewise. + * config/s390/s390.c (s390_va_start): Likewise. + 2010-11-03 Uros Bizjak PR middle-end/46292 - * lower-suberg.c (simplify_subreg_concatn): For VOIDmode elements, + * lower-subreg.c (simplify_subreg_concatn): For VOIDmode elements, if the innermode is not vector mode, determine the mode of a subreg by using mode_for_size of inner_size. diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 7ec66999073d..30146645973b 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -9252,7 +9252,7 @@ rs6000_va_start (tree valist, rtx nextarg) f_ovf = DECL_CHAIN (f_res); f_sav = DECL_CHAIN (f_ovf); - valist = build_va_arg_indirect_ref (valist); + valist = build_simple_mem_ref (valist); gpr = build3 (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE); fpr = build3 (COMPONENT_REF, TREE_TYPE (f_fpr), unshare_expr (valist), f_fpr, NULL_TREE); diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 290ae6937638..105cf6de618b 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -8719,7 +8719,7 @@ s390_va_start (tree valist, rtx nextarg ATTRIBUTE_UNUSED) f_ovf = DECL_CHAIN (f_fpr); f_sav = DECL_CHAIN (f_ovf); - valist = build_va_arg_indirect_ref (valist); + valist = build_simple_mem_ref (valist); gpr = build3 (COMPONENT_REF, TREE_TYPE (f_gpr), valist, f_gpr, NULL_TREE); fpr = build3 (COMPONENT_REF, TREE_TYPE (f_fpr), valist, f_fpr, NULL_TREE); ovf = build3 (COMPONENT_REF, TREE_TYPE (f_ovf), valist, f_ovf, NULL_TREE); diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c index 8a41fd887059..a9a5d40f26b0 100644 --- a/gcc/config/spu/spu.c +++ b/gcc/config/spu/spu.c @@ -4154,7 +4154,7 @@ spu_va_start (tree valist, rtx nextarg) f_args = TYPE_FIELDS (TREE_TYPE (va_list_type_node)); f_skip = DECL_CHAIN (f_args); - valist = build_va_arg_indirect_ref (valist); + valist = build_simple_mem_ref (valist); args = build3 (COMPONENT_REF, TREE_TYPE (f_args), valist, f_args, NULL_TREE); skip =