From 2402502c2f35b831ee89369a532b1ff4e4e19947 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Fri, 16 Dec 2005 15:07:08 +0000 Subject: nginx-0.3.16-RELEASE import *) Feature: the ngx_http_map_module. *) Feature: the "types_hash_max_size" and "types_hash_bucket_size" directives. *) Feature: the "ssi_value_length" directive. *) Feature: the "worker_rlimit_core" directive. *) Workaround: the connection number in logs was always 1 if nginx was built by the icc 8.1 or 9.0 compilers with optimization for Pentium 4. *) Bugfix: the "config timefmt" SSI command set incorrect time format. *) Bugfix: nginx did not close connection to IMAP/POP3 backend for the SSL connections; the bug had appeared in 0.3.13. Thanks to Rob Mueller. *) Bugfix: segmentation fault may occurred in at SSL shutdown; the bug had appeared in 0.3.13. --- src/os/unix/ngx_gcc_atomic_x86.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/os/unix/ngx_gcc_atomic_x86.h') diff --git a/src/os/unix/ngx_gcc_atomic_x86.h b/src/os/unix/ngx_gcc_atomic_x86.h index b458032b5..8e3480d71 100644 --- a/src/os/unix/ngx_gcc_atomic_x86.h +++ b/src/os/unix/ngx_gcc_atomic_x86.h @@ -61,7 +61,16 @@ ngx_atomic_cmp_set(ngx_atomic_t *lock, ngx_atomic_uint_t old, */ -#if !(__GNUC__ == 2 && __GNUC_MINOR__ <= 7) +#if !(( __GNUC__ == 2 && __GNUC_MINOR__ <= 7 ) || ( __INTEL_COMPILER >= 800 )) + +/* + * icc 8.1 and 9.0 compile broken code with -march=pentium4 option: + * ngx_atomic_fetch_add() always return the input "add" value, + * so we use the gcc 2.7 version. + * + * icc 8.1 and 9.0 with -march=pentiumpro option or icc 7.1 compile + * correct code. + */ static ngx_inline ngx_atomic_int_t ngx_atomic_fetch_add(ngx_atomic_t *value, ngx_atomic_int_t add) @@ -77,7 +86,7 @@ ngx_atomic_fetch_add(ngx_atomic_t *value, ngx_atomic_int_t add) } -#else /* (__GNUC__ == 2 && __GNUC_MINOR__ <= 7) */ +#else /* * gcc 2.7 does not support "+q", so we have to use the fixed %eax ("=a" and -- cgit