On Apr 17, 2013, at 21:16, Jung-uk Kim <jkim_at_FreeBSD.org> wrote: > On 2013-04-17 06:07:47 -0400, Dimitry Andric wrote: >> On Apr 17, 2013, at 07:31, Jan Beich <jbeich_at_tormail.org> wrote: >>> Dimitry Andric <dim_at_FreeBSD.org> writes: On Apr 16, 2013, at >>> 00:42, Jan Beich <jbeich_at_tormail.org> wrote: >> ... >>>>> Maybe -O3 overoptimizes regex in libc e.g., >>>>> >>>>> $ echo '#if _at_GNULIB_EUIDACCESS_at_' | sed >>>>> 's/_at_GNULIB_EUIDACCESS_at_/0/' #if _at_GNULIB_EUIDACCESS_at_ >>>>> >>>>> $ echo 'aaaaaaaaaaaaaaaaxxxaaaa' | sed >>>>> 's/aaaaaaaaaaaaxxxaaaa//' aaaaaaaaaaaaaaaaxxxaaaa >>>> >>>> How did you arrive at this result? >>> >>> 1/ chroot into poudriere jail for /head amd64 2/ echo CFLAGS+=-O3 >>>>> /etc/make.conf 3/ make -j2 (in /usr/src/lib/libc) 4/ prepend >>> LD_LIBRARY_PATH=. before sed(1) 5/ rebuild regcomp.o, regcomp.So >>> with -O2 to confirm >> >> I have been able to reproduce this on amd64, with -O3, but not on >> i386. It seems regcomp() is either miscompiled at -O3, or it >> contains some bug triggered only by the vectorizer. I am still >> investigating. > ... > > With "-fno-vectorize", this problem doesn't seem to happen. After some more investigation, I submitted LLVM PR 15830, with a test case reduced from our regcomp.c. It got diagnosed and fixed pretty quickly, and I have pulled in the fix in r249817. Please verify it, by rebuilding libc with your original -O3 settings; the sed commands listed above should now work correctly.Received on Tue Apr 23 2013 - 17:04:14 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:36 UTC