[alsa-devel] [PATCH] ASoC: WM8804: Workaround GCC uninitialised variable warning

Liam Girdwood lrg at slimlogic.co.uk
Sat Oct 2 13:19:47 CEST 2010


On Fri, 2010-10-01 at 09:32 +0100, Dimitris Papastamos wrote:
> GCC 4.4.0 does not seem capable of working out that the variable is
> never used unless it is initialised.
> 
> Signed-off-by: Dimitris Papastamos <dp at opensource.wolfsonmicro.com>
> ---
>  sound/soc/codecs/wm8804.c |    9 ++++++++-
>  1 files changed, 8 insertions(+), 1 deletions(-)
> 
> diff --git a/sound/soc/codecs/wm8804.c b/sound/soc/codecs/wm8804.c
> index 40e5067..e1fc722 100644
> --- a/sound/soc/codecs/wm8804.c
> +++ b/sound/soc/codecs/wm8804.c
> @@ -392,13 +392,20 @@ static int wm8804_set_pll(struct snd_soc_dai *dai, int pll_id,
>  {
>  	int ret;
>  	struct snd_soc_codec *codec;
> -	struct pll_div pll_div = { 0 };
> +	struct pll_div pll_div;
>  
>  	codec = dai->codec;
>  	if (freq_in && freq_out) {
>  		ret = pll_factors(&pll_div, freq_out, freq_in);
>  		if (ret)
>  			return ret;
> +	} else {
> +		/*
> +		 * Bodge GCC 4.4.0 uninitialised variable warning - it
> +		 * doesn't seem capable of working out that we exit if
> +		 * freq_in or freq_out is 0 before any of the uses.
> +		 */
> +		memset(&pll_div, 0, sizeof pll_div);
>  	}
>  
>  	/* power down the PLL before reprogramming it */

Is it not possible to refactor your logic here to be more like
wm8753_set_pll() rather than this ugly workaround ?

Liam



More information about the Alsa-devel mailing list