On Thu, Mar 21, 2024 at 10:25:24AM +0100, Richard Biener wrote: > The following more thoroughly avoids address sanitizing accesses > to non-generic address-spaces. > > Bootstrapped and tested on x86_64-unknown-linux-gnu. > > OK? > > Thanks, > Richard. > > PR tree-optimization/111736 > * asan.cc (instrument_derefs): Do not instrument accesses > to non-generic address-spaces. > > * gcc.target/i386/pr111736.c: New testcase. > --- > gcc/asan.cc | 4 ++++ > gcc/testsuite/gcc.target/i386/pr111736.c | 23 +++++++++++++++++++++++ > 2 files changed, 27 insertions(+) > create mode 100644 gcc/testsuite/gcc.target/i386/pr111736.c > > diff --git a/gcc/asan.cc b/gcc/asan.cc > index cfe83106460..04caf8802e2 100644 > --- a/gcc/asan.cc > +++ b/gcc/asan.cc > @@ -2755,6 +2755,10 @@ instrument_derefs (gimple_stmt_iterator *iter, tree t, > if (VAR_P (inner) && DECL_HARD_REGISTER (inner)) > return; > > + /* Accesses to non-generic address-spaces are not handled. */
I'd say s/are not handled/should not be instrumented/ > + if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (TREE_TYPE (inner)))) > + return; > + Otherwise LGTM. > poly_int64 decl_size; > if ((VAR_P (inner) > || (TREE_CODE (inner) == RESULT_DECL > diff --git a/gcc/testsuite/gcc.target/i386/pr111736.c > b/gcc/testsuite/gcc.target/i386/pr111736.c > new file mode 100644 > index 00000000000..231fdd07e80 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/pr111736.c > @@ -0,0 +1,23 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -fsanitize=address" } */ > + > +int __seg_gs m; > + > +int foo (void) > +{ > + return m; > +} > + > +extern int __seg_gs n; > + > +int bar (void) > +{ > + return n; > +} > + > +int baz (int __seg_gs *o) > +{ > + return *o; > +} > + > +/* { dg-final { scan-assembler-not "asan_report_load" } } */ > -- > 2.35.3 Jakub