ariccio updated this revision to Diff 50241.
ariccio added a comment.

For some reason, this smaller diff was harder to upload than the first diff.


http://reviews.llvm.org/D17983

Files:
  llvm/lib/Analysis/DependenceAnalysis.cpp
  llvm/lib/Analysis/InstructionSimplify.cpp
  llvm/lib/AsmParser/LLParser.cpp
  llvm/lib/Bitcode/Reader/BitcodeReader.cpp
  llvm/lib/CodeGen/AtomicExpandPass.cpp
  llvm/lib/CodeGen/LiveInterval.cpp
  llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
  llvm/lib/IR/Core.cpp
  llvm/lib/MC/MCAsmStreamer.cpp
  llvm/lib/MC/MachObjectWriter.cpp
  llvm/lib/Support/Windows/Path.inc
  llvm/lib/Support/YAMLParser.cpp
  llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp
  llvm/lib/Target/AArch64/AArch64FastISel.cpp
  llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
  llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp
  llvm/lib/Target/AMDGPU/R600InstrInfo.cpp
  llvm/lib/Target/ARM/ARMFastISel.cpp
  llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
  llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
  llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCShuffler.cpp
  llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
  llvm/lib/Target/Mips/MipsAsmPrinter.cpp
  llvm/lib/Target/TargetRecip.cpp
  llvm/lib/Target/X86/X86FastISel.cpp
  llvm/lib/Target/X86/X86FixupLEAs.cpp
  llvm/lib/Target/X86/X86ISelLowering.cpp
  llvm/lib/Target/X86/X86InstrInfo.cpp
  llvm/lib/Target/X86/X86WinEHState.cpp
  llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
  llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
  llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
  llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
  llvm/lib/Transforms/Scalar/SROA.cpp
  llvm/lib/Transforms/Utils/MemorySSA.cpp
  llvm/tools/clang/include/clang/Sema/Lookup.h
  llvm/tools/clang/lib/AST/ExprConstant.cpp
  llvm/tools/clang/lib/AST/MicrosoftMangle.cpp
  llvm/tools/clang/lib/CodeGen/CGCleanup.h
  llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp
  llvm/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
  llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp
  llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
  llvm/tools/clang/lib/Driver/ToolChain.cpp
  llvm/tools/clang/lib/Lex/Preprocessor.cpp
  llvm/tools/clang/lib/Parse/ParseObjc.cpp
  llvm/tools/clang/lib/Sema/SemaDecl.cpp
  llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp
  llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
  llvm/tools/clang/lib/Sema/SemaInit.cpp
  llvm/tools/clang/lib/Sema/SemaLambda.cpp
  llvm/tools/clang/lib/Sema/SemaLookup.cpp
  llvm/tools/clang/lib/Sema/SemaStmtAttr.cpp
  llvm/tools/clang/lib/Serialization/ASTReader.cpp
  llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp
  llvm/tools/clang/lib/StaticAnalyzer/Checkers/ObjCContainersASTChecker.cpp
  llvm/tools/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp
  llvm/tools/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp

Index: llvm/lib/MC/MCAsmStreamer.cpp
===================================================================
--- llvm/lib/MC/MCAsmStreamer.cpp
+++ llvm/lib/MC/MCAsmStreamer.cpp
@@ -990,7 +990,7 @@
   if (PrologueEnd)
     OS << " prologue_end";
 
-  unsigned OldIsStmt = getContext().getCurrentCVLoc().isStmt();
+  bool OldIsStmt = getContext().getCurrentCVLoc().isStmt();
   if (IsStmt != OldIsStmt) {
     OS << " is_stmt ";
 
Index: llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
===================================================================
--- llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+++ llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
@@ -2712,7 +2712,10 @@
   unsigned ZeroSrcOpcode, ZeroTrgOpcode;
   bool ReverseOrderSLT, IsUnsigned, IsLikely, AcceptsEquality;
 
-  unsigned TrgReg;
+  // TrgReg should never normally be assigned NUM_TARGET_REGS.
+  // If you end up with NUM_TARGET_REGS, you have a bug.
+  // FIXME: is there a better way to ensure TrgReg is assigned something?
+  unsigned TrgReg = Mips::NUM_TARGET_REGS;
   if (TrgOp.isReg())
     TrgReg = TrgOp.getReg();
   else if (TrgOp.isImm()) {
Index: llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCShuffler.cpp
===================================================================
--- llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCShuffler.cpp
+++ llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCShuffler.cpp
@@ -170,7 +170,7 @@
   }
 
   bool doneShuffling = false;
-  unsigned shuffleError;
+  unsigned shuffleError = HexagonShuffler::SHUFFLE_ERROR_UNKNOWN;
   while (possibleDuplexes.size() > 0 && (!doneShuffling)) {
     // case of Duplex Found
     DuplexCandidate duplexToTry = possibleDuplexes.pop_back_val();
Index: llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
===================================================================
--- llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
+++ llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
@@ -930,7 +930,7 @@
   if (LHSCC == ICmpInst::ICMP_EQ && LHSCC == RHSCC &&
       LHS->hasOneUse() && RHS->hasOneUse()) {
     Value *V;
-    ConstantInt *AndCst, *SmallCst = nullptr, *BigCst = nullptr;
+    ConstantInt *AndCst = nullptr, *SmallCst = nullptr, *BigCst = nullptr;
 
     // (trunc x) == C1 & (and x, CA) == C2
     // (and x, CA) == C2 & (trunc x) == C1
Index: llvm/lib/Target/Mips/MipsAsmPrinter.cpp
===================================================================
--- llvm/lib/Target/Mips/MipsAsmPrinter.cpp
+++ llvm/lib/Target/Mips/MipsAsmPrinter.cpp
@@ -886,7 +886,7 @@
   // .global xxxx
   //
   OutStreamer->EmitSymbolAttribute(MSymbol, MCSA_Global);
-  const char *RetType;
+  const char *RetType = "";
   //
   // make the comment field identifying the return and parameter
   // types of the floating point stub
@@ -909,7 +909,7 @@
     RetType = "";
     break;
   }
-  const char *Parms;
+  const char *Parms = "";
   switch (Signature->ParamSig) {
   case FSig:
     Parms = "float";
Index: llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp
===================================================================
--- llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp
+++ llvm/tools/clang/lib/CodeGen/CodeGenAction.cpp
@@ -307,7 +307,7 @@
   if (D.getLoc() != SMLoc())
     Loc = ConvertBackendLocation(D, Context->getSourceManager());
 
-  unsigned DiagID;
+  unsigned DiagID = 0;
   switch (D.getKind()) {
   case llvm::SourceMgr::DK_Error:
     DiagID = diag::err_fe_inline_asm;
@@ -382,7 +382,7 @@
 
 bool
 BackendConsumer::InlineAsmDiagHandler(const llvm::DiagnosticInfoInlineAsm &D) {
-  unsigned DiagID;
+  unsigned DiagID = 0;
   ComputeDiagID(D.getSeverity(), inline_asm, DiagID);
   std::string Message = D.getMsgStr().str();
 
Index: llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
===================================================================
--- llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+++ llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
@@ -545,9 +545,9 @@
   {
     unsigned BitWidth = DL.getTypeSizeInBits(TrueVal->getType());
     APInt MinSignedValue = APInt::getSignBit(BitWidth);
-    Value *X;
-    const APInt *Y, *C;
-    bool TrueWhenUnset;
+    Value *X = nullptr;
+    const APInt *Y = nullptr, *C;
+    bool TrueWhenUnset = false;
     bool IsBitTest = false;
     if (ICmpInst::isEquality(Pred) &&
         match(CmpLHS, m_And(m_Value(X), m_Power2(Y))) &&
Index: llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
===================================================================
--- llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
+++ llvm/lib/Transforms/InstCombine/InstCombineAddSub.cpp
@@ -1176,8 +1176,8 @@
 
   if (ConstantInt *CRHS = dyn_cast<ConstantInt>(RHS)) {
     // (X & FF00) + xx00  -> (X+xx00) & FF00
-    Value *X;
-    ConstantInt *C2;
+    Value *X = nullptr;
+    ConstantInt *C2 = nullptr;
     if (LHS->hasOneUse() &&
         match(LHS, m_And(m_Value(X), m_ConstantInt(C2))) &&
         CRHS->getValue() == (CRHS->getValue() & C2->getValue())) {
@@ -1400,7 +1400,7 @@
         match(RHS, m_Select(m_Value(C2), m_Value(A2), m_Value(B2)))) {
       if (C1 == C2) {
         Constant *Z1=nullptr, *Z2=nullptr;
-        Value *A, *B, *C=C1;
+        Value *A = nullptr, *B = nullptr, *C=C1;
         if (match(A1, m_AnyZero()) && match(B2, m_AnyZero())) {
             Z1 = dyn_cast<Constant>(A1); A = A2;
             Z2 = dyn_cast<Constant>(B2); B = B1;
Index: llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
===================================================================
--- llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
+++ llvm/tools/clang/lib/CodeGen/TargetInfo.cpp
@@ -4953,7 +4953,7 @@
     if (!Attr)
       return;
 
-    const char *Kind;
+    const char *Kind = "";
     switch (Attr->getInterrupt()) {
     case ARMInterruptAttr::Generic: Kind = ""; break;
     case ARMInterruptAttr::IRQ:     Kind = "IRQ"; break;
@@ -6062,7 +6062,7 @@
     if (!Attr)
       return;
 
-    const char *Kind;
+    const char *Kind = "";
     switch (Attr->getInterrupt()) {
     case MipsInterruptAttr::eic:     Kind = "eic"; break;
     case MipsInterruptAttr::sw0:     Kind = "sw0"; break;
Index: llvm/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
===================================================================
--- llvm/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
+++ llvm/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
@@ -375,7 +375,7 @@
   // Tail is the offset of the first bit off the end of the current run.  It's
   // used to determine if the ASTRecordLayout is treating these two bitfields as
   // contiguous.  StartBitOffset is offset of the beginning of the Run.
-  uint64_t StartBitOffset, Tail = 0;
+  uint64_t StartBitOffset = 0, Tail = 0;
   if (isDiscreteBitFieldABI()) {
     for (; Field != FieldEnd; ++Field) {
       uint64_t BitOffset = getFieldBitOffset(*Field);
Index: llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp
===================================================================
--- llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp
+++ llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp
@@ -2979,7 +2979,7 @@
 Value *ScalarExprEmitter::VisitBinAssign(const BinaryOperator *E) {
   bool Ignore = TestAndClearIgnoreResultAssign();
 
-  Value *RHS;
+  Value *RHS = nullptr;
   LValue LHS;
 
   switch (E->getLHS()->getType().getObjCLifetime()) {
Index: llvm/tools/clang/lib/CodeGen/CGCleanup.h
===================================================================
--- llvm/tools/clang/lib/CodeGen/CGCleanup.h
+++ llvm/tools/clang/lib/CodeGen/CGCleanup.h
@@ -516,7 +516,7 @@
   EHScope &operator*() const { return *get(); }
 
   iterator &operator++() {
-    size_t Size;
+    size_t Size = 0;
     switch (get()->getKind()) {
     case EHScope::Catch:
       Size = EHCatchScope::getSizeForNumHandlers(
Index: llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
===================================================================
--- llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
+++ llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
@@ -569,8 +569,8 @@
         Optional<uint64_t> Personality;
 
         Optional<uint64_t> AugmentationLength;
-        uint32_t StartAugmentationOffset;
-        uint32_t EndAugmentationOffset;
+        uint32_t StartAugmentationOffset = 0;
+        uint32_t EndAugmentationOffset = 0;
 
         // Walk the augmentation string to get all the augmentation data.
         for (unsigned i = 0, e = AugmentationString.size(); i != e; ++i) {
Index: llvm/lib/Transforms/Utils/MemorySSA.cpp
===================================================================
--- llvm/lib/Transforms/Utils/MemorySSA.cpp
+++ llvm/lib/Transforms/Utils/MemorySSA.cpp
@@ -518,7 +518,7 @@
     // Phi nodes are attached to basic blocks
     if (MemoryPhi *MP = getMemoryAccess(&B)) {
       for (User *U : MP->users()) {
-        BasicBlock *UseBlock;
+        BasicBlock *UseBlock = nullptr;
         // Phi operands are used on edges, we simulate the right domination by
         // acting as if the use occurred at the end of the predecessor block.
         if (MemoryPhi *P = dyn_cast<MemoryPhi>(U)) {
@@ -543,7 +543,7 @@
         continue;
 
       for (User *U : MD->users()) {
-        BasicBlock *UseBlock;
+        BasicBlock *UseBlock = nullptr;
         // Things are allowed to flow to phi nodes over their predecessor edge.
         if (auto *P = dyn_cast<MemoryPhi>(U)) {
           for (const auto &Arg : P->operands()) {
Index: llvm/lib/Target/TargetRecip.cpp
===================================================================
--- llvm/lib/Target/TargetRecip.cpp
+++ llvm/lib/Target/TargetRecip.cpp
@@ -79,7 +79,7 @@
     RefStepString = ArgSub.substr(RefPos + 1);
     ArgSub = ArgSub.substr(0, RefPos);
   }
-  bool Enable;
+  bool Enable = false;
   bool UseDefaults;
   if (ArgSub == "all") {
     UseDefaults = false;
Index: llvm/lib/Transforms/Scalar/SROA.cpp
===================================================================
--- llvm/lib/Transforms/Scalar/SROA.cpp
+++ llvm/lib/Transforms/Scalar/SROA.cpp
@@ -1512,7 +1512,7 @@
   // never are able to compute one directly that has the correct type, we'll
   // fall back to it, so keep it and the base it was computed from around here.
   Value *OffsetPtr = nullptr;
-  Value *OffsetBasePtr;
+  Value *OffsetBasePtr = nullptr;
 
   // Remember any i8 pointer we come across to re-use if we need to do a raw
   // byte offset.
Index: llvm/lib/MC/MachObjectWriter.cpp
===================================================================
--- llvm/lib/MC/MachObjectWriter.cpp
+++ llvm/lib/MC/MachObjectWriter.cpp
@@ -328,7 +328,7 @@
   bool IsAlias = Symbol != AliasedSymbol;
 
   const MCSymbol &OrigSymbol = *Symbol;
-  MachSymbolData *AliaseeInfo;
+  MachSymbolData *AliaseeInfo = nullptr;
   if (IsAlias) {
     AliaseeInfo = findSymbolData(*AliasedSymbol);
     if (AliaseeInfo)
Index: llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
===================================================================
--- llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
+++ llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
@@ -2829,7 +2829,7 @@
           AK = AK_Memory;
         if (AK == AK_FloatingPoint && FpOffset >= AMD64FpEndOffset)
           AK = AK_Memory;
-        Value *Base;
+        Value *Base = nullptr;
         switch (AK) {
           case AK_GeneralPurpose:
             Base = getShadowPtrForVAArgument(A->getType(), IRB, GpOffset);
@@ -3099,7 +3099,7 @@
         AK = AK_Memory;
       if (AK == AK_FloatingPoint && VrOffset >= AArch64VrEndOffset)
         AK = AK_Memory;
-      Value *Base;
+      Value *Base = nullptr;
       switch (AK) {
         case AK_GeneralPurpose:
           Base = getShadowPtrForVAArgument(A->getType(), IRB, GrOffset);
@@ -3114,6 +3114,7 @@
           Base = getShadowPtrForVAArgument(A->getType(), IRB, OverflowOffset);
           OverflowOffset += alignTo(ArgSize, 8);
           break;
+
       }
       IRB.CreateAlignedStore(MSV.getShadow(A), Base, kShadowTLSAlignment);
     }
Index: llvm/lib/IR/Core.cpp
===================================================================
--- llvm/lib/IR/Core.cpp
+++ llvm/lib/IR/Core.cpp
@@ -2891,7 +2891,7 @@
                                LLVMValueRef PTR, LLVMValueRef Val,
                                LLVMAtomicOrdering ordering,
                                LLVMBool singleThread) {
-  AtomicRMWInst::BinOp intop;
+  AtomicRMWInst::BinOp intop = AtomicRMWInst::BAD_BINOP;
   switch (op) {
     case LLVMAtomicRMWBinOpXchg: intop = AtomicRMWInst::Xchg; break;
     case LLVMAtomicRMWBinOpAdd: intop = AtomicRMWInst::Add; break;
Index: llvm/lib/CodeGen/LiveInterval.cpp
===================================================================
--- llvm/lib/CodeGen/LiveInterval.cpp
+++ llvm/lib/CodeGen/LiveInterval.cpp
@@ -990,7 +990,7 @@
       // Start a new segment if necessary.
       if (!ConstructingSegment) {
         // Determine value number for the segment.
-        VNInfo *VNI;
+        VNInfo *VNI = nullptr;
         if (IsDef) {
           VNI = getNextValue(Pos, VNIAllocator);
         } else {
Index: llvm/lib/CodeGen/AtomicExpandPass.cpp
===================================================================
--- llvm/lib/CodeGen/AtomicExpandPass.cpp
+++ llvm/lib/CodeGen/AtomicExpandPass.cpp
@@ -102,7 +102,7 @@
 
     if (TLI->getInsertFencesForAtomic()) {
       auto FenceOrdering = Monotonic;
-      bool IsStore, IsLoad;
+      bool IsStore = false, IsLoad = false;
       if (LI && isAtLeastAcquire(LI->getOrdering())) {
         FenceOrdering = LI->getOrdering();
         LI->setOrdering(Monotonic);
@@ -632,7 +632,7 @@
                        CI->isWeak() ? FailureBB : RetryBB);
 
   Builder.SetInsertPoint(ReleasedLoadBB);
-  Value *SecondLoad;
+  Value *SecondLoad = false;
   if (HasReleasedLoadBB) {
     SecondLoad = TLI->emitLoadLinked(Builder, Addr, MemOpOrder);
     ShouldStore = Builder.CreateICmpEQ(SecondLoad, CI->getCompareOperand(),
Index: llvm/lib/Bitcode/Reader/BitcodeReader.cpp
===================================================================
--- llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -1730,7 +1730,7 @@
 /// Parse the value symbol table at either the current parsing location or
 /// at the given bit offset if provided.
 std::error_code BitcodeReader::parseValueSymbolTable(uint64_t Offset) {
-  uint64_t CurrentBit;
+  uint64_t CurrentBit = 0;
   // Pass in the Offset to distinguish between calling for the module-level
   // VST (where we want to jump to the VST offset) and the function-level
   // VST (where we don't).
Index: llvm/lib/AsmParser/LLParser.cpp
===================================================================
--- llvm/lib/AsmParser/LLParser.cpp
+++ llvm/lib/AsmParser/LLParser.cpp
@@ -2982,7 +2982,7 @@
     unsigned Opc = Lex.getUIntVal();
     SmallVector<Constant*, 16> Elts;
     bool InBounds = false;
-    Type *Ty;
+    Type *Ty = nullptr;
     Lex.Lex();
 
     if (Opc == Instruction::GetElementPtr)
Index: llvm/lib/Analysis/InstructionSimplify.cpp
===================================================================
--- llvm/lib/Analysis/InstructionSimplify.cpp
+++ llvm/lib/Analysis/InstructionSimplify.cpp
@@ -1774,7 +1774,7 @@
       // If we have: ((V + N) & C1) | (V & C2)
       // .. and C2 = ~C1 and C2 is 0+1+ and (N & C2) == 0
       // replace with V+N.
-      Value *V1, *V2;
+      Value *V1 = nullptr, *V2 = nullptr;
       if ((C2->getValue() & (C2->getValue() + 1)) == 0 && // C2 == 0+1+
           match(A, m_Add(m_Value(V1), m_Value(V2)))) {
         // Add commutes, try both ways.
@@ -2809,8 +2809,13 @@
   // Simplify comparisons involving max/min.
   Value *A, *B;
   CmpInst::Predicate P = CmpInst::BAD_ICMP_PREDICATE;
-  CmpInst::Predicate EqP; // Chosen so that "A == max/min(A,B)" iff "A EqP B".
 
+  // Initialized to BAD_ICMP_PREDICATE so we don't use garbage in the
+  // next switch statement.
+  // Chosen so that "A == max/min(A,B)" iff "A EqP B".
+  CmpInst::Predicate EqP = CmpInst::BAD_ICMP_PREDICATE;
+
+
   // Signed variants on "max(a,b)>=a -> true".
   if (match(LHS, m_SMax(m_Value(A), m_Value(B))) && (A == RHS || B == RHS)) {
     if (A != RHS) std::swap(A, B); // smax(A, B) pred A.
@@ -3305,9 +3310,9 @@
     Value *CmpLHS = ICI->getOperand(0);
     Value *CmpRHS = ICI->getOperand(1);
     APInt MinSignedValue = APInt::getSignBit(BitWidth);
-    Value *X;
-    const APInt *Y;
-    bool TrueWhenUnset;
+    Value *X = nullptr;
+    const APInt *Y = nullptr;
+    bool TrueWhenUnset = false;
     bool IsBitTest = false;
     if (ICmpInst::isEquality(Pred) &&
         match(CmpLHS, m_And(m_Value(X), m_APInt(Y))) &&
Index: llvm/lib/Analysis/DependenceAnalysis.cpp
===================================================================
--- llvm/lib/Analysis/DependenceAnalysis.cpp
+++ llvm/lib/Analysis/DependenceAnalysis.cpp
@@ -782,7 +782,7 @@
 void DependenceAnalysis::unifySubscriptType(ArrayRef<Subscript *> Pairs) {
 
   unsigned widestWidthSeen = 0;
-  Type *widestType;
+  Type *widestType = nullptr;
 
   // Go through each pair and find the widest bit to which we need
   // to extend all of them.
Index: llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
===================================================================
--- llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
+++ llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
@@ -827,7 +827,7 @@
   assert(Offset + NumBytes <= DataSize && "Invalid fixup offset!");
 
   // Used to point to big endian bytes.
-  unsigned FullSizeBytes;
+  unsigned FullSizeBytes = 0;
   if (!IsLittleEndian) {
     FullSizeBytes = getFixupKindContainerSizeBytes(Fixup.getKind());
     assert((Offset + FullSizeBytes) <= DataSize && "Invalid fixup size!");
Index: llvm/lib/Target/ARM/ARMFastISel.cpp
===================================================================
--- llvm/lib/Target/ARM/ARMFastISel.cpp
+++ llvm/lib/Target/ARM/ARMFastISel.cpp
@@ -2689,7 +2689,13 @@
   // 16-bit Thumb instructions always set CPSR (unless they're in an IT block).
   bool setsCPSR = &ARM::tGPRRegClass == RC;
   unsigned LSLOpc = isThumb2 ? ARM::tLSLri : ARM::MOVsi;
-  unsigned ResultReg;
+
+  // 0 is treated as a failure code all the way up. We intialize ResultReg
+  // to 0, so that if the forthcoming loop does not execute, we're already
+  // returning a failure code. This will trigger an assertion in several
+  // places, which is much better than returning garbage.
+  unsigned ResultReg = 0;
+
   // MOVsi encodes shift and immediate in shift operand addressing mode.
   // The following condition has the same value when emitting two
   // instruction sequences: both are shifts.
@@ -2764,7 +2770,7 @@
     return false;
 
   unsigned Opc = ARM::MOVsr;
-  unsigned ShiftImm;
+  unsigned ShiftImm = 0;
   Value *Src2Value = I->getOperand(1);
   if (const ConstantInt *CI = dyn_cast<ConstantInt>(Src2Value)) {
     ShiftImm = CI->getZExtValue();
@@ -2916,7 +2922,7 @@
   const uint64_t Imm = MI->getOperand(2).getImm();
 
   bool Found = false;
-  bool isZExt;
+  bool isZExt = false;
   for (unsigned i = 0, e = array_lengthof(FoldableLoadExtends);
        i != e; ++i) {
     if (FoldableLoadExtends[i].Opc[isThumb2] == MI->getOpcode() &&
Index: llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
===================================================================
--- llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
+++ llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
@@ -5270,7 +5270,8 @@
     return true;
   }
 
-  uint8_t CurrentFormat;
+  // (~Prefix->SupportedFormats & 255) should always fail?
+  uint8_t CurrentFormat = 255;
   switch (getContext().getObjectFileInfo()->getObjectFileType()) {
   case MCObjectFileInfo::IsMachO:
     CurrentFormat = MACHO;
Index: llvm/lib/Target/AMDGPU/R600InstrInfo.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/R600InstrInfo.cpp
+++ llvm/lib/Target/AMDGPU/R600InstrInfo.cpp
@@ -554,7 +554,7 @@
 
   std::vector<std::vector<std::pair<int, unsigned> > > IGSrcs;
   ValidSwizzle.clear();
-  unsigned ConstCount;
+  unsigned ConstCount = 0;
   BankSwizzle TransBS = ALU_VEC_012_SCL_210;
   for (unsigned i = 0, e = IG.size(); i < e; ++i) {
     IGSrcs.push_back(ExtractSrcs(IG[i], PV, ConstCount));
Index: llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp
===================================================================
--- llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp
+++ llvm/lib/Target/AMDGPU/AMDILCFGStructurizer.cpp
@@ -825,7 +825,7 @@
     MachineBasicBlock *SccBeginMBB = nullptr;
     int SccNumBlk = 0;  // The number of active blocks, init to a
                         // maximum possible number.
-    int SccNumIter;     // Number of iteration in this SCC.
+    int SccNumIter = 0;     // Number of iteration in this SCC.
 
     while (It != E) {
       MBB = *It;
Index: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
===================================================================
--- llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
+++ llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
@@ -1555,7 +1555,7 @@
     }
   }
   SDValue Cmp;
-  AArch64CC::CondCode AArch64CC;
+  AArch64CC::CondCode AArch64CC = AArch64CC::Invalid;
   if ((CC == ISD::SETEQ || CC == ISD::SETNE) && isa<ConstantSDNode>(RHS)) {
     const ConstantSDNode *RHSC = cast<ConstantSDNode>(RHS);
 
Index: llvm/lib/Target/AArch64/AArch64FastISel.cpp
===================================================================
--- llvm/lib/Target/AArch64/AArch64FastISel.cpp
+++ llvm/lib/Target/AArch64/AArch64FastISel.cpp
@@ -2498,7 +2498,7 @@
   if (!SI->getType()->isIntegerTy(1))
     return false;
 
-  const Value *Src1Val, *Src2Val;
+  const Value *Src1Val = nullptr, *Src2Val = nullptr;
   unsigned Opc = 0;
   bool NeedExtraOp = false;
   if (auto *CI = dyn_cast<ConstantInt>(SI->getTrueValue())) {
Index: llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp
===================================================================
--- llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp
+++ llvm/lib/Target/AArch64/AArch64AdvSIMDScalarPass.cpp
@@ -304,8 +304,8 @@
   // Check if we need a copy for the source registers.
   unsigned OrigSrc0 = MI->getOperand(1).getReg();
   unsigned OrigSrc1 = MI->getOperand(2).getReg();
-  unsigned Src0 = 0, SubReg0;
-  unsigned Src1 = 0, SubReg1;
+  unsigned Src0 = 0, SubReg0 = 0;
+  unsigned Src1 = 0, SubReg1 = 0;
   if (!MRI->def_empty(OrigSrc0)) {
     MachineRegisterInfo::def_instr_iterator Def =
         MRI->def_instr_begin(OrigSrc0);
Index: llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
===================================================================
--- llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -2929,7 +2929,7 @@
 bool AArch64AsmParser::parseSymbolicImmVal(const MCExpr *&ImmVal) {
   MCAsmParser &Parser = getParser();
   bool HasELFModifier = false;
-  AArch64MCExpr::VariantKind RefKind;
+  AArch64MCExpr::VariantKind RefKind = AArch64MCExpr::VK_INVALID;
 
   if (Parser.getTok().is(AsmToken::Colon)) {
     Parser.Lex(); // Eat ':"
Index: llvm/tools/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
===================================================================
--- llvm/tools/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
+++ llvm/tools/clang/lib/StaticAnalyzer/Core/SymbolManager.cpp
@@ -455,7 +455,7 @@
     return true;
   }
 
-  bool KnownLive;
+  bool KnownLive = false;
 
   switch (sym->getKind()) {
   case SymExpr::SymbolRegionValueKind:
Index: llvm/tools/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp
===================================================================
--- llvm/tools/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp
+++ llvm/tools/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp
@@ -197,7 +197,7 @@
     void runChecker(CheckerManager::CheckObjCMessageFunc checkFn,
                     NodeBuilder &Bldr, ExplodedNode *Pred) {
 
-      bool IsPreVisit;
+      bool IsPreVisit = false;
 
       switch (Kind) {
         case ObjCMessageVisitKind::Pre:
Index: llvm/tools/clang/lib/StaticAnalyzer/Checkers/ObjCContainersASTChecker.cpp
===================================================================
--- llvm/tools/clang/lib/StaticAnalyzer/Checkers/ObjCContainersASTChecker.cpp
+++ llvm/tools/clang/lib/StaticAnalyzer/Checkers/ObjCContainersASTChecker.cpp
@@ -100,7 +100,7 @@
     return;
 
   const Expr *Arg = nullptr;
-  unsigned ArgNum;
+  unsigned ArgNum = 0;
 
   if (Name.equals("CFArrayCreate") || Name.equals("CFSetCreate")) {
     if (CE->getNumArgs() != 4)
Index: llvm/tools/clang/lib/Serialization/ASTReader.cpp
===================================================================
--- llvm/tools/clang/lib/Serialization/ASTReader.cpp
+++ llvm/tools/clang/lib/Serialization/ASTReader.cpp
@@ -5044,12 +5044,13 @@
   size_t Count = M.NumPreprocessedEntities;
   size_t Half;
   pp_iterator First = pp_begin;
-  pp_iterator PPI;
+  pp_iterator PPI = nullptr;
 
   if (EndsAfter) {
     PPI = std::upper_bound(pp_begin, pp_end, Loc,
                            PPEntityComp<&PPEntityOffset::Begin>(*this, M));
   } else {
+    assert(Count > 0 && "PPI will not be set if this loop doesn't execute!");
     // Do a binary search manually instead of using std::lower_bound because
     // The end locations of entities may be unordered (when a macro expansion
     // is inside another macro argument), but for this case it is not important
@@ -5062,6 +5063,8 @@
                                               Loc)) {
         First = PPI;
         ++First;
+        assert(Count > Half && "size_t is unsigned, subtracing (Half + 1) from Count"
+                               "will cause unsigned integer wraparound!");
         Count = Count - Half - 1;
       } else
         Count = Half;
Index: llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp
===================================================================
--- llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp
+++ llvm/tools/clang/lib/Serialization/ASTReaderStmt.cpp
@@ -1757,7 +1757,7 @@
 }
 
 OMPClause *OMPClauseReader::readClause() {
-  OMPClause *C;
+  OMPClause *C = nullptr;
   switch (Record[Idx++]) {
   case OMPC_if:
     C = new (Context) OMPIfClause();
Index: llvm/tools/clang/lib/Sema/SemaStmtAttr.cpp
===================================================================
--- llvm/tools/clang/lib/Sema/SemaStmtAttr.cpp
+++ llvm/tools/clang/lib/Sema/SemaStmtAttr.cpp
@@ -165,6 +165,8 @@
     case LoopHintAttr::UnrollCount:
       Category = Unroll;
       break;
+    default:
+      llvm_unreachable("Unexpected OptionType!");
     };
 
     auto &CategoryState = HintAttrs[Category];
Index: llvm/tools/clang/lib/Sema/SemaLookup.cpp
===================================================================
--- llvm/tools/clang/lib/Sema/SemaLookup.cpp
+++ llvm/tools/clang/lib/Sema/SemaLookup.cpp
@@ -2819,7 +2819,7 @@
   CanQualType CanTy = Context.getCanonicalType(Context.getTagDeclType(RD));
   DeclarationName Name;
   Expr *Arg = nullptr;
-  unsigned NumArgs;
+  unsigned NumArgs = 0;
 
   QualType ArgType = CanTy;
   ExprValueKind VK = VK_LValue;
@@ -4954,7 +4954,7 @@
       << (int)MIK << Decl << Modules[0]->getFullModuleName();
   }
 
-  unsigned DiagID;
+  unsigned DiagID = 0;
   switch (MIK) {
   case MissingImportKind::Declaration:
     DiagID = diag::note_previous_declaration;
Index: llvm/tools/clang/lib/Sema/SemaLambda.cpp
===================================================================
--- llvm/tools/clang/lib/Sema/SemaLambda.cpp
+++ llvm/tools/clang/lib/Sema/SemaLambda.cpp
@@ -980,7 +980,7 @@
       if (C->InitCaptureType.get().isNull()) 
         continue;
 
-      unsigned InitStyle;
+      unsigned InitStyle = 0;
       switch (C->InitKind) {
       case LambdaCaptureInitKind::NoInit:
         llvm_unreachable("not an init-capture?");
Index: llvm/tools/clang/lib/Sema/SemaInit.cpp
===================================================================
--- llvm/tools/clang/lib/Sema/SemaInit.cpp
+++ llvm/tools/clang/lib/Sema/SemaInit.cpp
@@ -3461,7 +3461,7 @@
   DeclContext::lookup_result Ctors = S.LookupConstructors(DestRecordDecl);
 
   OverloadingResult Result = OR_No_Viable_Function;
-  OverloadCandidateSet::iterator Best;
+  OverloadCandidateSet::iterator Best = nullptr;
   bool AsInitializerList = false;
 
   // C++11 [over.match.list]p1, per DR1467:
Index: llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
===================================================================
--- llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
+++ llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp
@@ -6039,7 +6039,9 @@
   if (!SubRD)
     return true;
 
-  CXXMethodDecl *Selected;
+  // If we had SAL, we might be able to assume that findTrivialSpecialMember
+  // properly initializes the _Outptr_ parameter, but alas, we don't, we can't.
+  CXXMethodDecl *Selected = nullptr;
   if (findTrivialSpecialMember(S, SubRD, CSM, SubType.getCVRQualifiers(),
                                ConstRHS, Diagnose ? &Selected : nullptr))
     return true;
Index: llvm/tools/clang/include/clang/Sema/Lookup.h
===================================================================
--- llvm/tools/clang/include/clang/Sema/Lookup.h
+++ llvm/tools/clang/include/clang/Sema/Lookup.h
@@ -422,7 +422,7 @@
         Paths = nullptr;
       }
     } else {
-      AmbiguityKind SavedAK;
+      AmbiguityKind SavedAK = Ambiguity;
       bool WasAmbiguous = false;
       if (ResultKind == Ambiguous) {
         SavedAK = Ambiguity;
Index: llvm/tools/clang/lib/Sema/SemaDecl.cpp
===================================================================
--- llvm/tools/clang/lib/Sema/SemaDecl.cpp
+++ llvm/tools/clang/lib/Sema/SemaDecl.cpp
@@ -934,7 +934,7 @@
     
     if (!Result.empty()) {
       bool IsFunctionTemplate;
-      bool IsVarTemplate;
+      bool IsVarTemplate = false;
       TemplateName Template;
       if (Result.end() - Result.begin() > 1) {
         IsFunctionTemplate = true;
Index: llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp
===================================================================
--- llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp
+++ llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp
@@ -6041,7 +6041,8 @@
                                       const ObjCPropertyDecl *ObjCProperty,
                                       bool ObjCPropertyAccess) {
   // Diagnostics for deprecated or unavailable.
-  unsigned diag, diag_message, diag_fwdclass_message;
+  // FIXME: What're reasonable defaults for these three?
+  unsigned diag = 0, diag_message = 0, diag_fwdclass_message = 0;
   unsigned diag_available_here = diag::note_availability_specified_here;
 
   // Matches 'diag::note_property_attribute' options.
Index: llvm/tools/clang/lib/Parse/ParseObjc.cpp
===================================================================
--- llvm/tools/clang/lib/Parse/ParseObjc.cpp
+++ llvm/tools/clang/lib/Parse/ParseObjc.cpp
@@ -1172,7 +1172,6 @@
       ObjCDeclSpec::ObjCDeclQualifier Qual;
       NullabilityKind Nullability;
       switch (i) {
-      default: llvm_unreachable("Unknown decl qualifier");
       case objc_in:     Qual = ObjCDeclSpec::DQ_In; break;
       case objc_out:    Qual = ObjCDeclSpec::DQ_Out; break;
       case objc_inout:  Qual = ObjCDeclSpec::DQ_Inout; break;
Index: llvm/tools/clang/lib/Lex/Preprocessor.cpp
===================================================================
--- llvm/tools/clang/lib/Lex/Preprocessor.cpp
+++ llvm/tools/clang/lib/Lex/Preprocessor.cpp
@@ -718,7 +718,7 @@
 
 void Preprocessor::Lex(Token &Result) {
   // We loop here until a lex function returns a token; this avoids recursion.
-  bool ReturnedToken;
+  bool ReturnedToken = false;
   do {
     switch (CurLexerKind) {
     case CLK_Lexer:
Index: llvm/tools/clang/lib/Driver/ToolChain.cpp
===================================================================
--- llvm/tools/clang/lib/Driver/ToolChain.cpp
+++ llvm/tools/clang/lib/Driver/ToolChain.cpp
@@ -546,7 +546,7 @@
 }
 
 ToolChain::CXXStdlibType ToolChain::GetCXXStdlibType(const ArgList &Args) const{
-  ToolChain::CXXStdlibType Type;
+  ToolChain::CXXStdlibType Type = ToolChain::CST_Libcxx;
   bool HasValidType = false;
 
   const Arg *A = Args.getLastArg(options::OPT_stdlib_EQ);
Index: llvm/tools/clang/lib/AST/MicrosoftMangle.cpp
===================================================================
--- llvm/tools/clang/lib/AST/MicrosoftMangle.cpp
+++ llvm/tools/clang/lib/AST/MicrosoftMangle.cpp
@@ -2492,7 +2492,7 @@
                                       raw_ostream &Out) {
   if (!Adjustment.Virtual.isEmpty()) {
     Out << '$';
-    char AccessSpec;
+    char AccessSpec = '\0';
     switch (MD->getAccess()) {
     case AS_none:
       llvm_unreachable("Unsupported access specifier");
Index: llvm/tools/clang/lib/AST/ExprConstant.cpp
===================================================================
--- llvm/tools/clang/lib/AST/ExprConstant.cpp
+++ llvm/tools/clang/lib/AST/ExprConstant.cpp
@@ -6773,7 +6773,7 @@
     APFloat Val(0.0);
     if (!EvaluateFloat(E->getArg(5), Val, Info))
       return false;
-    unsigned Arg;
+    unsigned Arg = ~0;
     switch (Val.getCategory()) {
     case APFloat::fcNaN: Arg = 0; break;
     case APFloat::fcInfinity: Arg = 1; break;
Index: llvm/lib/Target/X86/X86FixupLEAs.cpp
===================================================================
--- llvm/lib/Target/X86/X86FixupLEAs.cpp
+++ llvm/lib/Target/X86/X86FixupLEAs.cpp
@@ -261,7 +261,7 @@
     return false;
 
   if (isLEASimpleIncOrDec(MI) && TII->isSafeToClobberEFLAGS(*MFI, I)) {
-    int NewOpcode;
+    int NewOpcode = X86::INSTRUCTION_LIST_END;
     bool isINC = MI->getOperand(4).getImm() == 1;
     switch (Opcode) {
     case X86::LEA16r:
Index: llvm/lib/Target/X86/X86WinEHState.cpp
===================================================================
--- llvm/lib/Target/X86/X86WinEHState.cpp
+++ llvm/lib/Target/X86/X86WinEHState.cpp
@@ -634,7 +634,7 @@
   // Fill in InitialStates and FinalStates for BasicBlocks with call-sites.
   for (BasicBlock *BB : RPOT) {
     int InitialState = OverdefinedState;
-    int FinalState;
+    int FinalState = 0;
     if (&F.getEntryBlock() == BB)
       InitialState = FinalState = ParentBaseState;
     for (Instruction &I : *BB) {
Index: llvm/lib/Target/X86/X86InstrInfo.cpp
===================================================================
--- llvm/lib/Target/X86/X86InstrInfo.cpp
+++ llvm/lib/Target/X86/X86InstrInfo.cpp
@@ -3565,7 +3565,7 @@
   }
 
   const uint16_t *FoundOpcodesGroup = nullptr;
-  size_t FormIndex;
+  size_t FormIndex = 0;
 
   // Look for the input opcode in the corresponding opcodes table.
   for (size_t GroupIndex = 0; GroupIndex < GroupsNum && !FoundOpcodesGroup;
Index: llvm/lib/Target/X86/X86ISelLowering.cpp
===================================================================
--- llvm/lib/Target/X86/X86ISelLowering.cpp
+++ llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -6516,7 +6516,7 @@
   } else if (VT == MVT::v8i32 || VT == MVT::v16i16) {
     // Try to match an AVX2 horizontal add/sub of signed integers.
     SDValue InVec2, InVec3;
-    unsigned X86Opcode;
+    unsigned X86Opcode = 0;
     bool CanFold = true;
 
     if (isHorizontalBinOp(BV, ISD::ADD, DAG, 0, Half, InVec0, InVec1) &&
@@ -9363,7 +9363,7 @@
     // a half by taking the sum of the half with three inputs and subtracting
     // the sum of the actual three inputs. The difference is the remaining
     // slot.
-    int ADWord, BDWord;
+    int ADWord = 0, BDWord = 0;
     int &TripleDWord = ThreeAInputs ? ADWord : BDWord;
     int &OneInputDWord = ThreeAInputs ? BDWord : ADWord;
     int TripleInputOffset = ThreeAInputs ? AOffset : BOffset;
@@ -15034,7 +15034,7 @@
   unsigned  Opc = 0;
   bool Unsigned = false;
   bool Swap = false;
-  unsigned SSECC;
+  unsigned SSECC = 0;
   switch (SetCCOpcode) {
   default: llvm_unreachable("Unexpected SETCC condition");
   case ISD::SETNE:  SSECC = 4; break;
Index: llvm/lib/Target/X86/X86FastISel.cpp
===================================================================
--- llvm/lib/Target/X86/X86FastISel.cpp
+++ llvm/lib/Target/X86/X86FastISel.cpp
@@ -2595,8 +2595,8 @@
                                 CI->getZExtValue());
     }
 
-    unsigned RHSReg;
-    bool RHSIsKill;
+    unsigned RHSReg = 0;
+    bool RHSIsKill = false;
     if (!ResultReg) {
       RHSReg = getRegForValue(RHS);
       if (RHSReg == 0)
Index: llvm/lib/Support/Windows/Path.inc
===================================================================
--- llvm/lib/Support/Windows/Path.inc
+++ llvm/lib/Support/Windows/Path.inc
@@ -491,7 +491,7 @@
   if (FileHandle == INVALID_HANDLE_VALUE)
     return make_error_code(errc::bad_file_descriptor);
 
-  DWORD flprotect;
+  DWORD flprotect = 0;
   switch (Mode) {
   case readonly:  flprotect = PAGE_READONLY; break;
   case readwrite: flprotect = PAGE_READWRITE; break;
@@ -508,7 +508,7 @@
     return ec;
   }
 
-  DWORD dwDesiredAccess;
+  DWORD dwDesiredAccess = 0;
   switch (Mode) {
   case readonly:  dwDesiredAccess = FILE_MAP_READ; break;
   case readwrite: dwDesiredAccess = FILE_MAP_WRITE; break;
Index: llvm/lib/Support/YAMLParser.cpp
===================================================================
--- llvm/lib/Support/YAMLParser.cpp
+++ llvm/lib/Support/YAMLParser.cpp
@@ -1508,7 +1508,7 @@
                                     unsigned BlockExitIndent,
                                     unsigned &LineBreaks, bool &IsDone) {
   unsigned MaxAllSpaceLineCharacters = 0;
-  StringRef::iterator LongestAllSpaceLine;
+  StringRef::iterator LongestAllSpaceLine = nullptr;
 
   while (true) {
     advanceWhile(&Scanner::skip_s_space);
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to