From db297e20845c258a8c02eeab220027d9717a3cd3 Mon Sep 17 00:00:00 2001 From: Georg-Johann Lay Date: Mon, 4 Jul 2011 12:28:02 +0000 Subject: re PR target/44643 ([avr] ICE in c-typeck.c) PR target/44643 * config/avr/avr.c (avr_insert_attributes): Use TYPE_READONLY instead of TREE_READONLY. From-SVN: r175809 --- gcc/ChangeLog | 6 ++++++ gcc/config/avr/avr.c | 14 +++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bd353f4..1b56a8f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2011-07-04 Georg-Johann Lay + PR target/44643 + * config/avr/avr.c (avr_insert_attributes): Use TYPE_READONLY + instead of TREE_READONLY. + +2011-07-04 Georg-Johann Lay + * doc/extend.texi (AVR Built-in Functions): Update documentation of __builtin_avr_fmul*. * config/avr/avr.c (avr_init_builtins): Don't depend on diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index fa690fb..89da4fb 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -5030,7 +5030,19 @@ avr_insert_attributes (tree node, tree *attributes) && (TREE_STATIC (node) || DECL_EXTERNAL (node)) && avr_progmem_p (node, *attributes)) { - if (TREE_READONLY (node)) + tree node0 = node; + + /* For C++, we have to peel arrays in order to get correct + determination of readonlyness. */ + + do + node0 = TREE_TYPE (node0); + while (TREE_CODE (node0) == ARRAY_TYPE); + + if (error_mark_node == node0) + return; + + if (TYPE_READONLY (node0)) { static const char dsec[] = ".progmem.data"; -- cgit v1.1