At Fri, 7 Nov 2008 02:29:25 -0500, Mike Frysinger wrote:
On Fri, Nov 7, 2008 at 02:15, Takashi Iwai wrote:
At Fri, 7 Nov 2008 02:09:04 -0500, Mike Frysinger wrote:
On Fri, Nov 7, 2008 at 01:22, Takashi Iwai wrote:
At Thu, 6 Nov 2008 21:05:21 -0500, Mike Frysinger wrote:
The snd_BUG_ON() macro should always expand its argument even if we're forcing it to false. This kills off unused warnings that did not exist before the snd_assert() -> snd_BUG_ON() conversion.
Andrew already change this differently. Check with the latest version.
what are you defining as "latest version" ? i'm looking in torvalds linux-2.6.git.
git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git
And which warning did you get actually?
a few codecs define local vars which only get used in snd_BUG_ON() ... so if snd_BUG_ON() doesnt utilize cond, gcc whines that the var is unused.
I know it. But I thought all these were removed in the actual codes. I'd like to see the real warning messages.
seems the warnings where in codec drivers we havent pushed into mainline yet. regardless, i dont think auditing code and changing it just to avoid (cond) references is the way to go. it also breaks valid C code if there were side effects in the (cond) as any other macro which does not properly utilize every argument exactly once.
IIRC, just giving 0 in a macro like your patch resulted in another warning messages in case it's used plainly like:
snd_BUG_ON(foo);
That's the reason why { 0; } was used in the first place. But, this caused yet another warning messages depending on gcc versions, thus Andrew fixed it previously.
I think the best way is to change the latest code like:
#define snd_BUG_ON(cond) __snd_bug_on(0 && (cond))
Takashi