Committed.
2015-09-02 10:51 GMT+03:00 Senthil Kumar Selvaraj <senthil_kumar.selva...@atmel.com>: > Hi, > > This (rather trivial) patch fixes PR65210. The ICE happens because code > wasn't handling io_low attribute where it is supposed to. > > If this is ok, could someone commit please? I don't have commit > access. > > Regards > Senthil > > gcc/ChangeLog > > 2015-09-02 Senthil Kumar Selvaraj <senthil_kumar.selva...@atmel.com> > > PR target/65210 > * config/avr/avr.c (avr_eval_addr_attrib): Look for io_low > attribute as well. > > gcc/testsuite/ChangeLog > > PR target/65210 > * gcc.target/avr/pr65210.c: New test. > > diff --git gcc/config/avr/avr.c gcc/config/avr/avr.c > index bec9a8b..9f5bc88 100644 > --- gcc/config/avr/avr.c > +++ gcc/config/avr/avr.c > @@ -9069,6 +9069,8 @@ avr_eval_addr_attrib (rtx x) > if (SYMBOL_REF_FLAGS (x) & SYMBOL_FLAG_IO) > { > attr = lookup_attribute ("io", DECL_ATTRIBUTES (decl)); > + if (!attr || !TREE_VALUE (attr)) > + attr = lookup_attribute ("io_low", DECL_ATTRIBUTES (decl)); > gcc_assert (attr); > } > if (!attr || !TREE_VALUE (attr)) > diff --git gcc/testsuite/gcc.target/avr/pr65210.c > gcc/testsuite/gcc.target/avr/pr65210.c > new file mode 100644 > index 0000000..1aed441 > --- /dev/null > +++ gcc/testsuite/gcc.target/avr/pr65210.c > @@ -0,0 +1,7 @@ > +/* { dg-do compile } */ > + > +/* This testcase exposes PR65210. Usage of the io_low attribute > + causes assertion failure because code only looks for the io > + attribute if SYMBOL_FLAG_IO is set. */ > + > +volatile char q __attribute__((io_low,address(0x81)));