tree dcdd9febee63e82cd792250a8a4c4dd8e6aab4be
parent a8127717cb24be7b8827a8d9e0ddbfde6b392146
author Borislav Petkov <bbpetkov@yahoo.de> 1178488157 -0700
committer Linus Torvalds <torvalds@woody.linux-foundation.org> 1178565172 -0700

Add unitialized_var() macro for suppressing gcc warnings

Introduce a macro for suppressing gcc from generating a warning about a
probable uninitialized state of a variable.

Example:

-	spinlock_t *ptl;
+	spinlock_t *uninitialized_var(ptl);

Not a happy solution, but those warnings are obnoxious.

- Using the usual pointlessly-set-it-to-zero approach wastes several
  bytes of text.

- Using a macro means we can (hopefully) do something else if gcc changes
  cause the `x = x' hack to stop working

- Using a macro means that people who are worried about hiding true bugs
  can easily turn it off.

Signed-off-by: Borislav Petkov <bbpetkov@yahoo.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
