https://bugs.exim.org/show_bug.cgi?id=1642

--- Comment #8 from Elliot Saba <[email protected]> ---
Putting __attribute__((noinline)) on line 579 between the "static int" and
"match(REGISTER..." doesn't change anything.

My ./configure invocation looks like this (stripping out the --prefix and
--libdir stuff):

$ ./configure --build=x86_64-apple-darwin14.3.0 F77="gfortran
-mmacosx-version-min=10.7 -m64" CC="clang -stdlib=libc++
-mmacosx-version-min=10.7 -m64 " CXX="clang++ -stdlib=libc++
-mmacosx-version-min=10.7 -m64 " --enable-jit


The compile line coming out of my setup when running `make V=1` is such:

./libtool  --tag=CC   --mode=compile clang -stdlib=libc++
-mmacosx-version-min=10.7 -m64  -DHAVE_CONFIG_H -I. -I./src  -I./src -I./src 
-DPCRE2_CODE_UNIT_WIDTH=8 -fvisibility=hidden -D_THREAD_SAFE -pthread
-I/Users/sabae/local/include -I/usr/local/include -MT
src/libpcre2_8_la-pcre2_compile.lo -MD -MP -MF
src/.deps/libpcre2_8_la-pcre2_compile.Tpo -c -o
src/libpcre2_8_la-pcre2_compile.lo `test -f 'src/pcre2_compile.c'


If I add "-O3" to the compile flags, I get something much more reasonable and
the tests pass!

(lldb) disassemble -n match -c 10
libpcre2-8.0.dylib`match:
0x100065610:  pushq  %rbp
0x100065611:  movq   %rsp, %rbp
0x100065614:  pushq  %r15
0x100065616:  pushq  %r14
0x100065618:  pushq  %r13
0x10006561a:  pushq  %r12
0x10006561c:  pushq  %rbx
0x10006561d:  subq   $0x1d8, %rsp


So that's only 528 bytes.  With these settings, the tests pass just fine. 
Should that be the "official" solution, or is my patch still valuable?  I will
admit, it is slightly annoying that there is a seemingly innocuous set of
compiler options (no optimization flags present) that will cause the test suite
to fail.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-- 
## List details at https://lists.exim.org/mailman/listinfo/pcre-dev 

Reply via email to