On Wed, Apr 26, 2023 at 11:42 AM Richard Biener <richard.guent...@gmail.com> wrote: > > On Wed, Apr 26, 2023 at 11:01 AM SenthilKumar.Selvaraj--- via > Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > > > Hi, > > > > This patch fixes PR 105523 by setting param_min_pagesize to 0 for the > > avr target. For this target, zero and offsets from zero are perfectly > > valid addresses, and the default value of param_min_pagesize ends up > > triggering warnings on valid memory accesses. > > I think the proper configuration is to have > DEFAULT_ADDR_SPACE_ZERO_ADDRESS_VALID
Err, TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID > defined to something returning true instead. > > Richard. > > > Ok for trunk and backporting to 13 and 12 branches? > > > > Regards > > Senthil > > > > PR target/105523 > > > > gcc/ChangeLog: > > > > * config/avr/avr.cc (avr_option_override): Set > > param_min_pagesize to 0. > > > > gcc/testsuite/ChangeLog: > > > > * gcc.target/avr/pr105523.c: New test. > > > > diff --git a/gcc/config/avr/avr.cc b/gcc/config/avr/avr.cc > > index c193430cf07..3b862f4e4ac 100644 > > --- a/gcc/config/avr/avr.cc > > +++ b/gcc/config/avr/avr.cc > > @@ -56,6 +56,7 @@ > > #include "tree-pass.h" > > #include "print-rtl.h" > > #include "rtl-iter.h" > > +#include "opts.h" > > > > /* This file should be included last. */ > > #include "target-def.h" > > @@ -769,6 +770,9 @@ avr_option_override (void) > > avr_gasisr_prologues = 0; > > #endif > > > > + SET_OPTION_IF_UNSET (&global_options, &global_options_set, > > + param_min_pagesize, 0); > > + > > if (!avr_set_core_architecture()) > > return; > > > > diff --git a/gcc/testsuite/gcc.target/avr/pr105523.c > > b/gcc/testsuite/gcc.target/avr/pr105523.c > > new file mode 100644 > > index 00000000000..fbbf7bf4422 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.target/avr/pr105523.c > > @@ -0,0 +1,14 @@ > > +/* { dg-do compile } */ > > +/* { dg-options "-Os -Wall" } */ > > + > > +/* Verify no "array subscript 0 is outside array bounds of" is generated > > + for accessing memory addresses in the 0-4096 range. */ > > + > > +typedef __UINT8_TYPE__ uint8_t; > > + > > +#define SREG (*(volatile uint8_t*) (0x3F + __AVR_SFR_OFFSET__ )) > > + > > +void bar (void) > > +{ > > + SREG = 0; > > +} > >