diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -3313,7 +3313,7 @@ return PL->getAddressSpace() == PR->getAddressSpace(); } -static AttrBuilder getParameterABIAttributes(int I, AttributeList Attrs) { +static AttrBuilder getParameterABIAttributes(unsigned I, AttributeList Attrs) { static const Attribute::AttrKind ABIAttrs[] = { Attribute::StructRet, Attribute::ByVal, Attribute::InAlloca, Attribute::InReg, Attribute::StackAlignment, Attribute::SwiftSelf, @@ -3381,12 +3381,12 @@ // - Only sret, byval, swiftself, and swiftasync ABI-impacting attributes // are allowed in swifttailcc call - for (int I = 0, E = CallerTy->getNumParams(); I != E; ++I) { + for (unsigned I = 0, E = CallerTy->getNumParams(); I != E; ++I) { AttrBuilder ABIAttrs = getParameterABIAttributes(I, CallerAttrs); SmallString<32> Context{CCName, StringRef(" musttail caller")}; verifyTailCCMustTailAttrs(ABIAttrs, Context); } - for (int I = 0, E = CalleeTy->getNumParams(); I != E; ++I) { + for (unsigned I = 0, E = CalleeTy->getNumParams(); I != E; ++I) { AttrBuilder ABIAttrs = getParameterABIAttributes(I, CalleeAttrs); SmallString<32> Context{CCName, StringRef(" musttail callee")}; verifyTailCCMustTailAttrs(ABIAttrs, Context); @@ -3404,7 +3404,7 @@ Assert(CallerTy->getNumParams() == CalleeTy->getNumParams(), "cannot guarantee tail call due to mismatched parameter counts", &CI); - for (int I = 0, E = CallerTy->getNumParams(); I != E; ++I) { + for (unsigned I = 0, E = CallerTy->getNumParams(); I != E; ++I) { Assert( isTypeCongruent(CallerTy->getParamType(I), CalleeTy->getParamType(I)), "cannot guarantee tail call due to mismatched parameter types", &CI); @@ -3413,7 +3413,7 @@ // - All ABI-impacting function attributes, such as sret, byval, inreg, // returned, preallocated, and inalloca, must match. - for (int I = 0, E = CallerTy->getNumParams(); I != E; ++I) { + for (unsigned I = 0, E = CallerTy->getNumParams(); I != E; ++I) { AttrBuilder CallerABIAttrs = getParameterABIAttributes(I, CallerAttrs); AttrBuilder CalleeABIAttrs = getParameterABIAttributes(I, CalleeAttrs); Assert(CallerABIAttrs == CalleeABIAttrs, @@ -5599,15 +5599,6 @@ if (!Fragment) return; - // The frontend helps out GDB by emitting the members of local anonymous - // unions as artificial local variables with shared storage. When SROA splits - // the storage for artificial local variables that are smaller than the entire - // union, the overhang piece will be outside of the allotted space for the - // variable and this check fails. - // FIXME: Remove this check as soon as clang stops doing this; it hides bugs. - if (V->isArtificial()) - return; - verifyFragmentExpression(*V, *Fragment, &I); } @@ -6246,7 +6237,7 @@ AnalysisKey VerifierAnalysis::Key; VerifierAnalysis::Result VerifierAnalysis::run(Module &M, ModuleAnalysisManager &) { - Result Res; + Result Res{}; Res.IRBroken = llvm::verifyModule(M, &dbgs(), &Res.DebugInfoBroken); return Res; }