diff options
-rw-r--r-- | lib/Sema/AnalysisBasedWarnings.cpp | 4 | ||||
-rw-r--r-- | test/SemaCXX/uninit-variables.cpp | 8 |
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}} +} + |