On Thu, Apr 13, 2017 at 04:55:52PM +0300, Denis Khalikov wrote: > +2017-04-13 Denis Khalikov <d.khali...@partner.samsung.com> > + > + PR sanitizer/80414 > + * ubsan.c (ubsan_expand_bounds_ifn): Fix wrong tree val generation > + for 32 bit host.
I'd say here instead ...): Pass original index to ubsan_encode_value. > --- /dev/null > +++ b/gcc/testsuite/c-c++-common/ubsan/bounds-15.c > @@ -0,0 +1,13 @@ > +/* { dg-do run } */ > +/* { dg-options "-fsanitize=bounds" } */ > +/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */ > + > +int main() > +{ > + long long offset = 10; > + char array[10]; > + char c = array[offset]; > + return 0; > +} > + > +/* { dg-output "\[^\n\r]*index 10 out of bounds for type 'char \\\[10\\\]'" > } */ And the initial \[^\n\r]* makes no sense, there is no ^, so the regexp tries to match anywhere in the output (which is sufficient here). Other tests use /* { dg-output "\[^\n\r]*something..." } */, but only in the second and further dg-output directive (the regexps from all dg-output are concatenated together). So just use /* { dg-output "index 10 out of bounds for type 'char \\\[10\\\]'" } */ Ok for trunk with those changes, thanks. Jakub