aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Sema/AnalysisBasedWarnings.cpp4
-rw-r--r--test/SemaCXX/uninit-variables.cpp8
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/Sema/AnalysisBasedWarnings.cpp b/lib/Sema/AnalysisBasedWarnings.cpp
index 0e7846f021..63f561d6ab 100644
--- a/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/lib/Sema/AnalysisBasedWarnings.cpp
@@ -430,7 +430,7 @@ public:
// Suggest possible initialization (if any).
const char *initialization = 0;
QualType vdTy = vd->getType().getCanonicalType();
-
+
if (vdTy->getAs<ObjCObjectPointerType>()) {
// Check if 'nil' is defined.
if (S.PP.getMacroInfo(&S.getASTContext().Idents.get("nil")))
@@ -442,6 +442,8 @@ public:
initialization = " = 0.0";
else if (vdTy->isBooleanType() && S.Context.getLangOptions().CPlusPlus)
initialization = " = false";
+ else if (vdTy->isEnumeralType())
+ continue;
else if (vdTy->isScalarType())
initialization = " = 0";
diff --git a/test/SemaCXX/uninit-variables.cpp b/test/SemaCXX/uninit-variables.cpp
index cc5018a5e8..a016937925 100644
--- a/test/SemaCXX/uninit-variables.cpp
+++ b/test/SemaCXX/uninit-variables.cpp
@@ -41,3 +41,11 @@ unsigned test3_c() {
return x; // expected-warning{{variable 'x' is possibly uninitialized when used here}}
}
+enum test4_A {
+ test4_A_a, test_4_A_b
+};
+test4_A test4() {
+ test4_A a; // expected-note{{variable 'a' is declared here}}
+ return a; // expected-warning{{variable 'a' is possibly uninitialized when used here}}
+}
+