/* { dg-do compile { target aarch64-*-* } } */ /* { dg-additional-options "-march=armv8.6-a+sve -fsanitize-address-use-after-scope" } */ #include __attribute__((noinline, noclone)) int foo (char *a) { int i, j = 0; asm volatile ("" : "+r" (a) : : "memory"); for (i = 0; i < 12; i++) j += a[i]; return j; } int main () { int i, j = 0; for (i = 0; i < 4; i++) { char a[12]; __SVInt8_t freq; /* Just do something with that `freq` variable so that the compiler doesn't optimise its use away. */ if (__builtin_bcmp (&freq, a, 10)) j += 1; __builtin_memset (a, 0, sizeof (a)); j += foo (a); } return j; } /* Just ensure this compiles without giving an ICE. This is the equivalent of PR 97696 but for HWASAN. HWASAN can handle poly_int sized variables, and this testcase ensures that we don't ICE when given them. */