Index: clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObject.h =================================================================== --- clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObject.h +++ clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedObject.h @@ -233,7 +233,7 @@ /// value is undefined or not, such as ints and doubles, can be analyzed with /// ease. This also helps ensuring that every special field type is handled /// correctly. -static bool isPrimitiveType(const QualType &T) { +inline bool isPrimitiveType(const QualType &T) { return T->isBuiltinType() || T->isEnumeralType() || T->isMemberPointerType(); } Index: clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp =================================================================== --- clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp +++ clang/lib/StaticAnalyzer/Checkers/UninitializedObject/UninitializedPointee.cpp @@ -215,12 +215,10 @@ llvm_unreachable("All cases are handled!"); } - // Temporary variable to avoid warning from -Wunused-function. - bool IsPrimitive = isPrimitiveType(DynT->getPointeeType()); - assert((IsPrimitive || DynT->isAnyPointerType() || DynT->isReferenceType()) && + assert((isPrimitiveType(DynT->getPointeeType()) || DynT->isAnyPointerType() || + DynT->isReferenceType()) && "At this point FR must either have a primitive dynamic type, or it " "must be a null, undefined, unknown or concrete pointer!"); - (void)IsPrimitive; if (isPrimitiveUninit(DerefdV)) { if (NeedsCastBack)