tree-optimization/111736 - avoid address sanitizing of __seg_gs

The following more thoroughly avoids address sanitizing accesses
to non-generic address-spaces.

	PR tree-optimization/111736
	* asan.cc (instrument_derefs): Do not instrument accesses
	to non-generic address-spaces.

	* gcc.target/i386/pr111736.c: New testcase.
This commit is contained in:
Richard Biener 2024-03-21 08:30:39 +01:00
parent 9d6ff6f1ea
commit 134ef2a8ca
2 changed files with 27 additions and 0 deletions

View file

@ -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 should not be instrumented. */
if (!ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (TREE_TYPE (inner))))
return;
poly_int64 decl_size;
if ((VAR_P (inner)
|| (TREE_CODE (inner) == RESULT_DECL

View file

@ -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" } } */