|
From: | Sergey Sudnitsyn |
Subject: | Re: [libmicrohttpd] Build failure with Link-Time Optimization |
Date: | Wed, 27 Dec 2023 11:38:11 +0100 |
Hi Sergey,
Are you using some special compiler or linker parameters? Some special
compiler or linker versions?
I regularly test MHD with LTO. I've retested the current git master with
LTO and cannot reproduce.
No errors, nor even warnings.
If you check the code you will find that both mentioned variables are
not used before initialisation. (Please provide the code path if I'm wrong).
Unless variables are really used as uninitialised (which should be a bug
and needs to be fixed), I'd avoid unneeded initialisation to save the
code size (and negligible performance).
If your compiler/linker complaint is false positive, you probably may
workaround it with '-ftrivial-auto-var-init' parameter.
Let me know the details, please.
--
Evgeny
On 26/12/2023 16:14, Sergey Sudnitsyn wrote:
> When LTO is enabled, linking fails complaining about potentially
> uninitialized variables;
> It's hard to provide a small sample reproducing this, but I hope the
> patch can be applied even without it since it's innocent enough (diff
> against commit 8bb481f ):
>
> diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
> index f9892a55..e5dd1a45 100644
> --- a/src/microhttpd/connection.c
> +++ b/src/microhttpd/connection.c
> @@ -653,7 +653,7 @@ MHD_connection_alloc_memory_ (struct MHD_Connection
> *connection,
> {
> struct MHD_Connection *const c = connection; /* a short alias */
> struct MemoryPool *const pool = c->pool; /* a short alias */
> - size_t need_to_be_freed; /**< The required amount of additional free
> memory */
> + size_t need_to_be_freed = 0; /**< The required amount of additional
> free memory */
> void *res;
>
> res = MHD_pool_try_alloc (pool, size, &need_to_be_freed);
> @@ -4468,7 +4468,7 @@ process_request_body (struct MHD_Connection
> *connection)
> { /* Need the parse the chunk size line */
> /** The number of found digits in the chunk size number */
> size_t num_dig;
> - uint64_t chunk_size;
> + uint64_t chunk_size = 0;
> bool broken;
> bool overflow;
>
[Prev in Thread] | Current Thread | [Next in Thread] |