diff options
| author | Willy Tarreau <w@1wt.eu> | 2008-08-17 17:06:37 +0200 |
|---|---|---|
| committer | Willy Tarreau <w@1wt.eu> | 2008-09-02 11:03:37 +0200 |
| commit | ee113f5345c49a1e8ea9c8ea6b047f3c0f43db1f (patch) | |
| tree | 4f2884554668d42f8ca405aaf4011e6afc94f18f | |
| parent | 2f9127b4b91de1ac685498e145f29342115bcb71 (diff) | |
| download | haproxy-ee113f5345c49a1e8ea9c8ea6b047f3c0f43db1f.tar.gz | |
[BUG] regparm is broken on gcc < 3
Gcc < 3 does not consider regparm declarations for function pointers.
This causes big trouble at least with pollers (and with any function
pointer after all). Disable CONFIG_HAP_USE_REGPARM for gcc < 3.
(cherry picked from commit 61eadc028fb8774ea05d893cd3eca6c671fb511e)
| -rw-r--r-- | include/common/config.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/common/config.h b/include/common/config.h index 85deeaed5..74bee477e 100644 --- a/include/common/config.h +++ b/include/common/config.h @@ -70,9 +70,10 @@ /* CONFIG_HAP_USE_REGPARM * This enables the use of register parameters for some functions where - * it may improve performance by a measurable factor. + * it may improve performance by a measurable factor. This MUST NOT be + * enabled on gcc < 3 because it is ignored for function pointers. */ -#ifdef CONFIG_HAP_USE_REGPARM +#if CONFIG_HAP_USE_REGPARM && __GNUC__ >= 3 #define REGPRM1 __attribute__((regparm(1))) #define REGPRM2 __attribute__((regparm(2))) #define REGPRM3 __attribute__((regparm(3))) |
