llvm-capstone/clang/test/Preprocessor/pragma_diagnostic_sections.cpp
Chandler Carruth 33bf3e758d Diagnose uninitialized uses of a variable within its own initializer.
This is basically the same idea as the warning on uninitialized uses of
fields within an initializer list. As such, it is on by default and
under -Wuninitialized.

Original patch by Richard Trieu, with some massaging from me on the
wording and grouping of the diagnostics.

llvm-svn: 128376
2011-03-27 09:46:56 +00:00

81 lines
2.1 KiB
C++

// RUN: %clang_cc1 -fsyntax-only -Wall -Wunused-macros -Wunused-parameter -Wno-uninitialized -verify %s
// rdar://8365684
struct S {
void m1() { int b; while (b==b); } // expected-warning {{always evaluates to true}}
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wtautological-compare"
void m2() { int b; while (b==b); }
#pragma clang diagnostic pop
void m3() { int b; while (b==b); } // expected-warning {{always evaluates to true}}
};
//------------------------------------------------------------------------------
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wtautological-compare"
template <typename T>
struct TS {
void m() { T b; while (b==b); }
};
#pragma clang diagnostic pop
void f() {
TS<int> ts;
ts.m();
}
//------------------------------------------------------------------------------
#define UNUSED_MACRO1 // expected-warning {{macro is not used}}
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-macros"
#define UNUSED_MACRO2
#pragma clang diagnostic pop
//------------------------------------------------------------------------------
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreturn-type"
int g() { }
#pragma clang diagnostic pop
//------------------------------------------------------------------------------
void ww(
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunused-parameter"
int x,
#pragma clang diagnostic pop
int y) // expected-warning {{unused}}
{
}
//------------------------------------------------------------------------------
struct S2 {
int x, y;
S2() :
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wreorder"
y(),
x()
#pragma clang diagnostic pop
{}
};
//------------------------------------------------------------------------------
// rdar://8790245
#define MYMACRO \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") \
_Pragma("clang diagnostic pop")
MYMACRO
#undef MYMACRO
//------------------------------------------------------------------------------