<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>211701</bug_id>
          
          <creation_ts>2020-05-10 13:09:36 -0700</creation_ts>
          <short_desc>-Wtype-limits warning spam from CCallHelpers.h</short_desc>
          <delta_ts>2020-05-17 19:22:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=212006</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1651103</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-10 13:09:36 -0700</bug_when>
    <thetext>The stable release of GCC 10 has started warning about some preexisting code in CCallHelpers.h. This one is really long, but I&apos;m going to copy the whole thing because the template instantiation is important here. It&apos;s four separate warnings; I&apos;ve added a newline between each one for readability:

[821/2747] Building CXX object Source/JavaScriptCore/CMak...ScriptCore/unified-sources/UnifiedSource-f0a787a9-1.cpp.o
In file included from /home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/bytecode/AccessCase.cpp:31,
                 from DerivedSources/JavaScriptCore/unified-sources/UnifiedSource-f0a787a9-1.cpp:1:
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h: In instantiation of ‘std::array&lt;RegType, NumberOfRegisters&gt; JSC::CCallHelpers::clampArrayToSize(std::array&lt;RegType, decltype (JSC::toInfoFromReg((RegType)(-1)))::numberOfRegisters&gt;) [with unsigned int TargetSize = 0; RegType = JSC::X86Registers::XMMRegisterID; decltype (JSC::toInfoFromReg((RegType)(-1))) = JSC::FPRInfo]’:
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:645:85:   required from ‘void JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 2; unsigned int numGPRSources = 1; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:381:46:   required from ‘void JSC::CCallHelpers::marshallArgumentRegister(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;, RegType, Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 1; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; RegType = JSC::X86Registers::RegisterID; Args = {}]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:399:48:   required from ‘void JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;, JSC::GPRReg, Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 1; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; Args = {}; JSC::GPRReg = JSC::X86Registers::RegisterID]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:579:46:   required from ‘std::enable_if_t&lt;(std::is_base_of&lt;JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm, Arg&gt;::value || std::is_convertible&lt;Arg, JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm&gt;::value)&gt; JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;, Arg, Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 0; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; Arg = JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImmPtr; Args = {JSC::X86Registers::RegisterID}; std::enable_if_t&lt;(std::is_base_of&lt;JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm, Arg&gt;::value || std::is_convertible&lt;Arg, JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm&gt;::value)&gt; = void]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:669:63:   required from ‘std::enable_if_t&lt;(! std::is_same&lt;typename WTF::FunctionTraits&lt;T&gt;::ArgumentType&lt;0&gt;, JSC::CallFrame*&gt;::value)&gt; JSC::CCallHelpers::setupArguments(Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); Args = {JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImmPtr, JSC::X86Registers::RegisterID}; std::enable_if_t&lt;(! std::is_same&lt;typename WTF::FunctionTraits&lt;T&gt;::ArgumentType&lt;0&gt;, JSC::CallFrame*&gt;::value)&gt; = void; typename WTF::FunctionTraits&lt;T&gt;::ArgumentType&lt;0&gt; = JSC::VM*]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/bytecode/AccessCase.cpp:1851:161:   required from here
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:316:32: warning: comparison of unsigned expression in ‘&lt; 0’ is always false [-Wtype-limits]
  316 |         for (unsigned i = 0; i &lt; TargetSize; i++) {
      |                              ~~^~~~~~~~~~~~

/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h: In instantiation of ‘void JSC::CCallHelpers::setupStubArgs(std::array&lt;RegType, NumberOfRegisters&gt;, std::array&lt;RegType, NumberOfRegisters&gt;) [with unsigned int NumberOfRegisters = 0; RegType = JSC::X86Registers::XMMRegisterID]’:
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:645:45:   required from ‘void JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 2; unsigned int numGPRSources = 1; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:381:46:   required from ‘void JSC::CCallHelpers::marshallArgumentRegister(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;, RegType, Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 1; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; RegType = JSC::X86Registers::RegisterID; Args = {}]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:399:48:   required from ‘void JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;, JSC::GPRReg, Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 1; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; Args = {}; JSC::GPRReg = JSC::X86Registers::RegisterID]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:579:46:   required from ‘std::enable_if_t&lt;(std::is_base_of&lt;JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm, Arg&gt;::value || std::is_convertible&lt;Arg, JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm&gt;::value)&gt; JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;, Arg, Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 0; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; Arg = JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImmPtr; Args = {JSC::X86Registers::RegisterID}; std::enable_if_t&lt;(std::is_base_of&lt;JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm, Arg&gt;::value || std::is_convertible&lt;Arg, JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm&gt;::value)&gt; = void]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:669:63:   required from ‘std::enable_if_t&lt;(! std::is_same&lt;typename WTF::FunctionTraits&lt;T&gt;::ArgumentType&lt;0&gt;, JSC::CallFrame*&gt;::value)&gt; JSC::CCallHelpers::setupArguments(Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); Args = {JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImmPtr, JSC::X86Registers::RegisterID}; std::enable_if_t&lt;(! std::is_same&lt;typename WTF::FunctionTraits&lt;T&gt;::ArgumentType&lt;0&gt;, JSC::CallFrame*&gt;::value)&gt; = void; typename WTF::FunctionTraits&lt;T&gt;::ArgumentType&lt;0&gt; = JSC::VM*]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/bytecode/AccessCase.cpp:1851:161:   required from here
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:102:32: warning: comparison of unsigned expression in ‘&lt; 0’ is always false [-Wtype-limits]
  102 |         for (unsigned i = 0; i &lt; NumberOfRegisters; ++i) {
      |                              ~~^~~~~~~~~~~~~~~~~~~

/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h: In instantiation of ‘std::array&lt;RegType, NumberOfRegisters&gt; JSC::CCallHelpers::clampArrayToSize(std::array&lt;RegType, decltype (JSC::toInfoFromReg((RegType)(-1)))::numberOfRegisters&gt;) [with unsigned int TargetSize = 0; RegType = JSC::X86Registers::RegisterID; decltype (JSC::toInfoFromReg((RegType)(-1))) = JSC::GPRInfo]’:
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:639:85:   required from ‘void JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 2; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:386:42:   required from ‘void JSC::CCallHelpers::marshallArgumentRegister(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;, RegType, Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 1; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; RegType = JSC::X86Registers::RegisterID; Args = {}]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:399:48:   required from ‘void JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;, JSC::GPRReg, Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 1; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; Args = {}; JSC::GPRReg = JSC::X86Registers::RegisterID]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:579:46:   required from ‘std::enable_if_t&lt;(std::is_base_of&lt;JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm, Arg&gt;::value || std::is_convertible&lt;Arg, JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm&gt;::value)&gt; JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;, Arg, Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 0; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; Arg = JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImmPtr; Args = {JSC::X86Registers::RegisterID}; std::enable_if_t&lt;(std::is_base_of&lt;JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm, Arg&gt;::value || std::is_convertible&lt;Arg, JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm&gt;::value)&gt; = void]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:669:63:   required from ‘std::enable_if_t&lt;(! std::is_same&lt;typename WTF::FunctionTraits&lt;T&gt;::ArgumentType&lt;0&gt;, JSC::CallFrame*&gt;::value)&gt; JSC::CCallHelpers::setupArguments(Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); Args = {JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImmPtr, JSC::X86Registers::RegisterID}; std::enable_if_t&lt;(! std::is_same&lt;typename WTF::FunctionTraits&lt;T&gt;::ArgumentType&lt;0&gt;, JSC::CallFrame*&gt;::value)&gt; = void; typename WTF::FunctionTraits&lt;T&gt;::ArgumentType&lt;0&gt; = JSC::VM*]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/bytecode/AccessCase.cpp:1851:161:   required from here
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:316:32: warning: comparison of unsigned expression in ‘&lt; 0’ is always false [-Wtype-limits]
  316 |         for (unsigned i = 0; i &lt; TargetSize; i++) {
      |                              ~~^~~~~~~~~~~~

/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h: In instantiation of ‘void JSC::CCallHelpers::setupStubArgs(std::array&lt;RegType, NumberOfRegisters&gt;, std::array&lt;RegType, NumberOfRegisters&gt;) [with unsigned int NumberOfRegisters = 0; RegType = JSC::X86Registers::RegisterID]’:
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:639:45:   required from ‘void JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 2; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:386:42:   required from ‘void JSC::CCallHelpers::marshallArgumentRegister(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;, RegType, Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 1; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; RegType = JSC::X86Registers::RegisterID; Args = {}]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:399:48:   required from ‘void JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;, JSC::GPRReg, Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 1; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; Args = {}; JSC::GPRReg = JSC::X86Registers::RegisterID]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:579:46:   required from ‘std::enable_if_t&lt;(std::is_base_of&lt;JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm, Arg&gt;::value || std::is_convertible&lt;Arg, JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm&gt;::value)&gt; JSC::CCallHelpers::setupArgumentsImpl(JSC::CCallHelpers::ArgCollection&lt;numGPRArgs, numGPRSources, numFPRArgs, numFPRSources, numCrossSources, extraGPRArgs, extraPoke&gt;, Arg, Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); unsigned int numGPRArgs = 0; unsigned int numGPRSources = 0; unsigned int numFPRArgs = 0; unsigned int numFPRSources = 0; unsigned int numCrossSources = 0; unsigned int extraGPRArgs = 0; unsigned int extraPoke = 0; Arg = JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImmPtr; Args = {JSC::X86Registers::RegisterID}; std::enable_if_t&lt;(std::is_base_of&lt;JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm, Arg&gt;::value || std::is_convertible&lt;Arg, JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImm&gt;::value)&gt; = void]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:669:63:   required from ‘std::enable_if_t&lt;(! std::is_same&lt;typename WTF::FunctionTraits&lt;T&gt;::ArgumentType&lt;0&gt;, JSC::CallFrame*&gt;::value)&gt; JSC::CCallHelpers::setupArguments(Args ...) [with OperationType = char*(JSC::VM*, JSC::JSObject*); Args = {JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImmPtr, JSC::X86Registers::RegisterID}; std::enable_if_t&lt;(! std::is_same&lt;typename WTF::FunctionTraits&lt;T&gt;::ArgumentType&lt;0&gt;, JSC::CallFrame*&gt;::value)&gt; = void; typename WTF::FunctionTraits&lt;T&gt;::ArgumentType&lt;0&gt; = JSC::VM*]’
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/bytecode/AccessCase.cpp:1851:161:   required from here
/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h:102:32: warning: comparison of unsigned expression in ‘&lt; 0’ is always false [-Wtype-limits]
  102 |         for (unsigned i = 0; i &lt; NumberOfRegisters; ++i) {
      |                              ~~^~~~~~~~~~~~~~~~~~~

So looking at the code, one would think &quot;well, the template should never be instantiated with TargetSize == or NumberOfRegisters == 0, and therefore this must be a false positive.&quot; But in fact, the templates really are being instantiated with these values, according to the warning:

/home/mcatanzaro/Projects/WebKit/Source/JavaScriptCore/jit/CCallHelpers.h: In instantiation of ‘void JSC::CCallHelpers::setupStubArgs(std::array&lt;RegType, NumberOfRegisters&gt;, std::array&lt;RegType, NumberOfRegisters&gt;) [with unsigned int NumberOfRegisters = 0; RegType = JSC::X86Registers::XMMRegisterID]’:

Seems that&apos;s happening here:

    template&lt;typename OperationType, typename... Args&gt;
    ALWAYS_INLINE std::enable_if_t&lt;std::is_same&lt;FIRST_ARGUMENT_TYPE, CallFrame*&gt;::value&gt; setupArguments(Args... args)
    {
#if USE(JSVALUE64)
        // This only really works for 64-bit since jsvalue regs mess things up for 32-bit...
        static_assert(FunctionTraits&lt;OperationType&gt;::cCallArity() == sizeof...(Args) + 1, &quot;Basic sanity check&quot;);
#endif
        setupArgumentsImpl&lt;OperationType, 0, 0, 0, 0, 0, 0, 0&gt;(ArgCollection&lt;0, 0, 0, 0, 0, 0, 0&gt;(), GPRInfo::callFrameRegister, args...);
    }

    template&lt;typename OperationType, typename... Args&gt;
    ALWAYS_INLINE std::enable_if_t&lt;!std::is_same&lt;FIRST_ARGUMENT_TYPE, CallFrame*&gt;::value&gt; setupArguments(Args... args)
    {
#if USE(JSVALUE64)
        // This only really works for 64-bit since jsvalue regs mess things up for 32-bit...
        static_assert(FunctionTraits&lt;OperationType&gt;::cCallArity() == sizeof...(Args), &quot;Basic sanity check&quot;);
#endif
        setupArgumentsImpl&lt;OperationType, 0, 0, 0, 0, 0, 0, 0&gt;(ArgCollection&lt;0, 0, 0, 0, 0, 0, 0&gt;(), args...);
    }

I tried this naive patch to block that case from being reached at runtime, but it&apos;s not enough to avoid the warnings:

diff --git a/Source/JavaScriptCore/jit/CCallHelpers.h b/Source/JavaScriptCore/jit/CCallHelpers.h
index 35d509bc3f54..2c3425edd9f8 100644
--- a/Source/JavaScriptCore/jit/CCallHelpers.h
+++ b/Source/JavaScriptCore/jit/CCallHelpers.h
@@ -99,9 +99,11 @@ private:
         typedef std::pair&lt;RegType, RegType&gt; RegPair;
         Vector&lt;RegPair, NumberOfRegisters&gt; pairs;
 
-        for (unsigned i = 0; i &lt; NumberOfRegisters; ++i) {
-            if (sources[i] != destinations[i])
-                pairs.append(std::make_pair(sources[i], destinations[i]));
+        if (NumberOfRegisters &gt; 0) {
+            for (unsigned i = 0; i &lt; NumberOfRegisters; ++i) {
+                if (sources[i] != destinations[i])
+                    pairs.append(std::make_pair(sources[i], destinations[i]));
+            }
         }
 
 #if ASSERT_ENABLED
@@ -313,9 +315,11 @@ private:
 
         std::array&lt;RegType, TargetSize&gt; result { };
 
-        for (unsigned i = 0; i &lt; TargetSize; i++) {
-            ASSERT(sourceArray[i] != static_cast&lt;int32_t&gt;(InfoTypeForReg&lt;RegType&gt;::InvalidIndex));
-            result[i] = sourceArray[i];
+        if (TargetSize &gt; 0) {
+            for (unsigned i = 0; i &lt; TargetSize; i++) {
+                ASSERT(sourceArray[i] != static_cast&lt;int32_t&gt;(InfoTypeForReg&lt;RegType&gt;::InvalidIndex));
+                result[i] = sourceArray[i];
+            }
         }
 
         return result;

I don&apos;t pretend to understand the code and I don&apos;t know what to do with them. I guess as long as we are instantiating these templates with TargetSize or NumberOfRegisters set to 0, we&apos;ll need to create separate template specializations to avoid the warning? I&apos;d sooner just disable the warning with pragmas if it doesn&apos;t look like an actual bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651746</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-12 08:52:47 -0700</bug_when>
    <thetext>I&apos;m going to add IGNORE_WARNINGS macros, that&apos;s all I can really do here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651747</commentid>
    <comment_count>2</comment_count>
      <attachid>399130</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-12 08:52:53 -0700</bug_when>
    <thetext>Created attachment 399130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651761</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-12 09:21:56 -0700</bug_when>
    <thetext>Can you try adding if constexpr checks around the for statements like so:

        if constexpr (!!NumberOfRegisters) {
            for (unsigned i = 0; i &lt; NumberOfRegisters; ++i) {
                if (sources[i] != destinations[i])
                    pairs.append(std::make_pair(sources[i], destinations[i]));
            }
        }

        if constexpr (!!TargetSize) {
            for (unsigned i = 0; i &lt; TargetSize; i++) {
                ASSERT(sourceArray[i] != static_cast&lt;int32_t&gt;(InfoTypeForReg&lt;RegType&gt;::InvalidIndex));
                result[i] = sourceArray[i];
            }
        }

See if that helps.  If it does, add a comment about why the if constexpr was added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651769</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-12 09:33:04 -0700</bug_when>
    <thetext>Are any of the EWS using GCC10 yet?  If not, are there plans to migrate that way?   It&apos;s going to be difficult to keep these from continuing to manifest without the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651798</commentid>
    <comment_count>5</comment_count>
      <attachid>399130</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-12 10:31:37 -0700</bug_when>
    <thetext>Comment on attachment 399130
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=399130&amp;action=review

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:103
&gt;          for (unsigned i = 0; i &lt; NumberOfRegisters; ++i) {

Is this warning just about when NumberOfRegisters is 0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651799</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-12 10:32:08 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #3)
&gt; Can you try adding if constexpr checks

We should try this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651943</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-12 14:20:04 -0700</bug_when>
    <thetext>Thanks for being responsive to my attempts to keep the GCC build nice and clean. :)

(In reply to Mark Lam from comment #4)
&gt; Are any of the EWS using GCC10 yet?  If not, are there plans to migrate that
&gt; way?   It&apos;s going to be difficult to keep these from continuing to manifest
&gt; without the EWS.

I&apos;ll let Igalia answer that. afaik the current EWS just uses whatever GCC is provided by Debian stable. Having more EWS would certainly be nice.

Also note that EWS does not build with -Werror, so there&apos;s no way to notice warnings even on current compiler versions. I think changing that would catch probably 90% of GCC warnings before they&apos;re committed to trunk, since relatively few warnings are new warnings.

(In reply to Darin Adler from comment #5)
&gt; &gt; Source/JavaScriptCore/jit/CCallHelpers.h:103
&gt; &gt;          for (unsigned i = 0; i &lt; NumberOfRegisters; ++i) {
&gt; 
&gt; Is this warning just about when NumberOfRegisters is 0?

Right.

(In reply to Mark Lam from comment #3)
&gt; Can you try adding if constexpr checks around the for statements like so:

Oooh, didn&apos;t know about constexpr if. I think that worked, nice! Will let it continue building a while longer just to be certain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651953</commentid>
    <comment_count>8</comment_count>
      <attachid>399179</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-12 14:40:21 -0700</bug_when>
    <thetext>Created attachment 399179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651956</commentid>
    <comment_count>9</comment_count>
      <attachid>399179</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-12 14:42:26 -0700</bug_when>
    <thetext>Comment on attachment 399179
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=399179&amp;action=review

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:103
&gt; +        if constexpr (!!NumberOfRegisters) {

I don’t think we need the !!

&gt; Source/JavaScriptCore/jit/CCallHelpers.h:320
&gt; +        if constexpr (!!TargetSize) {

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651966</commentid>
    <comment_count>10</comment_count>
      <attachid>399179</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-12 15:00:03 -0700</bug_when>
    <thetext>Comment on attachment 399179
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=399179&amp;action=review

&gt;&gt; Source/JavaScriptCore/jit/CCallHelpers.h:103
&gt;&gt; +        if constexpr (!!NumberOfRegisters) {
&gt; 
&gt; I don’t think we need the !!

I already tried without the !!.  Clang complains about ints not matching bools.  That&apos;s why I added it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652000</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-12 16:01:27 -0700</bug_when>
    <thetext>How about if constexpr (NumberOfRegisters &gt; 0)? That&apos;s entirely equivalent and complies with WebKit code style.

The clearest thing to do would be to write &apos;== 0&apos;, but our code style doesn&apos;t allow that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653080</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-05-15 09:25:34 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #11)
&gt; How about if constexpr (NumberOfRegisters &gt; 0)? That&apos;s entirely equivalent
&gt; and complies with WebKit code style.
&gt; 
&gt; The clearest thing to do would be to write &apos;== 0&apos;, but our code style
&gt; doesn&apos;t allow that.

IMHO, (NumberOfRegisters &gt; 0) is fine or you can just leave it as (!!NumberOfRegisters).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653113</commentid>
    <comment_count>13</comment_count>
      <attachid>399498</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-15 11:13:06 -0700</bug_when>
    <thetext>Created attachment 399498
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653118</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-15 11:25:17 -0700</bug_when>
    <thetext>Apparently the &gt; 0 construction doesn&apos;t avoid the build warning...? Huh....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653120</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-05-15 11:29:55 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #14)
&gt; Apparently the &gt; 0 construction doesn&apos;t avoid the build warning...? Huh....

Ah no, it probably does, I just reverted my local changes out of habit before starting a test build to check it. :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653138</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-15 12:25:05 -0700</bug_when>
    <thetext>Committed r261754: &lt;https://trac.webkit.org/changeset/261754&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399498.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653139</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-15 12:26:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/63284459&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399130</attachid>
            <date>2020-05-12 08:52:53 -0700</date>
            <delta_ts>2020-05-12 14:40:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211701-20200512105252.patch</filename>
            <type>text/plain</type>
            <size>2009</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTI5MjRhZTgzNDkzMTEyYTBjOGUxZGQ1Yzk5MjQ5Mzc3NWE3YTAzLi5kZWRlODA5MzkyMTgzMjk0
ZDM1OTFmOWY4ZTc0MTEwNmZhOWNhNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNS0xMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICAtV3R5cGUtbGltaXRzIHdhcm5pbmcgc3BhbSBmcm9tIENDYWxs
SGVscGVycy5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTE3MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTdXBwcmVzcyB0aGUgd2FybmluZ3Mgd2l0aCBwcmFnbWFzLiBDb2RlIGNoYW5nZXMgaGVyZSB3
b3VsZCByZXF1aXJlIHRoZSBleHBlcnRpc2Ugb2YgSlNDCisgICAgICAgIGRldmVsb3BlcnMuCisK
KyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVy
czo6c2V0dXBTdHViQXJncyk6CisgICAgICAgIChKU0M6OkNDYWxsSGVscGVyczo6Y2xhbXBBcnJh
eVRvU2l6ZSk6CisKIDIwMjAtMDUtMDkgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCBlcnJvcnMgYW5kIHdhcm5pbmdzIGZvciBub24t
dW5pZmllZCBKU0NPbmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0ND
YWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApp
bmRleCAzNWQ1MDliYzNmNTRlYThkZDMyZTBhZGVjMDBlZmU3YTUxNTI4YWEyLi42YWVjOWRiMWRj
OTk2OGY0OTY2ZDgxMjRkZDFhNWM0YmE2YzhiOGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQ0NhbGxIZWxwZXJzLmgKQEAgLTk5LDEwICs5OSwxMiBAQCBwcml2YXRlOgogICAgICAgICB0
eXBlZGVmIHN0ZDo6cGFpcjxSZWdUeXBlLCBSZWdUeXBlPiBSZWdQYWlyOwogICAgICAgICBWZWN0
b3I8UmVnUGFpciwgTnVtYmVyT2ZSZWdpc3RlcnM+IHBhaXJzOwogCitJR05PUkVfV0FSTklOR1Nf
QkVHSU4oInR5cGUtbGltaXRzIikKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51
bWJlck9mUmVnaXN0ZXJzOyArK2kpIHsKICAgICAgICAgICAgIGlmIChzb3VyY2VzW2ldICE9IGRl
c3RpbmF0aW9uc1tpXSkKICAgICAgICAgICAgICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3Bh
aXIoc291cmNlc1tpXSwgZGVzdGluYXRpb25zW2ldKSk7CiAgICAgICAgIH0KK0lHTk9SRV9XQVJO
SU5HU19FTkQKIAogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIGF1dG8gbnVtVW5pcXVlU291
cmNlcyA9IFsmXSAoKSAtPiB1bnNpZ25lZCB7CkBAIC0zMTMsMTAgKzMxNSwxMiBAQCBwcml2YXRl
OgogCiAgICAgICAgIHN0ZDo6YXJyYXk8UmVnVHlwZSwgVGFyZ2V0U2l6ZT4gcmVzdWx0IHsgfTsK
IAorSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJ0eXBlLWxpbWl0cyIpCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBUYXJnZXRTaXplOyBpKyspIHsKICAgICAgICAgICAgIEFTU0VSVChz
b3VyY2VBcnJheVtpXSAhPSBzdGF0aWNfY2FzdDxpbnQzMl90PihJbmZvVHlwZUZvclJlZzxSZWdU
eXBlPjo6SW52YWxpZEluZGV4KSk7CiAgICAgICAgICAgICByZXN1bHRbaV0gPSBzb3VyY2VBcnJh
eVtpXTsKICAgICAgICAgfQorSUdOT1JFX1dBUk5JTkdTX0VORAogCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399179</attachid>
            <date>2020-05-12 14:40:21 -0700</date>
            <delta_ts>2020-05-15 11:13:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211701-20200512164020.patch</filename>
            <type>text/plain</type>
            <size>2470</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZGI3MGZkM2NmOTEwYTFiYThlM2QxNWEzY2FjZDk0YzEwZDcxNzQ0Li42MDUzZWQxYzg4Mzc2ZTQx
ZDhkZDZiMzVhOTgxM2UzNDZlYTkzMGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNS0xMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICAtV3R5cGUtbGltaXRzIHdhcm5pbmcgc3BhbSBmcm9tIENDYWxs
SGVscGVycy5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTE3MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTa2lwIHRoZSBwcm9ibGVtYXRpYyBsb29wcyB3aGVuIFRhcmdldFNpemUgb3IgTnVtYmVyT2ZS
ZWdpc3RlcnMgaXMgMCB1c2luZyBjb25zdGV4cHIgaWYuCisgICAgICAgIFNvbHV0aW9uIHN1Z2dl
c3RlZCBieSBNYXJrIExhbS4KKworICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAg
ICAgKEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzKToKKyAgICAgICAgKEpTQzo6Q0Nh
bGxIZWxwZXJzOjpjbGFtcEFycmF5VG9TaXplKToKKwogMjAyMC0wNS0xMiAgVHJ1aXR0IFNhdmVs
bCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyBy
MjYxNTQyLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBl
cnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggZWNk
YTU2NGMwNDhkNzJkZDA5MmRjMmYyYTAyNDNhZWQzYjU1ODk1MS4uZDE2NWZlZGZiOTI4ZTlkOTRj
YTM5ZjMxNzlhYWVmZjliOWI5ZGYyMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxs
SGVscGVycy5oCkBAIC05OSw5ICs5OSwxMiBAQCBwcml2YXRlOgogICAgICAgICB0eXBlZGVmIHN0
ZDo6cGFpcjxSZWdUeXBlLCBSZWdUeXBlPiBSZWdQYWlyOwogICAgICAgICBWZWN0b3I8UmVnUGFp
ciwgTnVtYmVyT2ZSZWdpc3RlcnM+IHBhaXJzOwogCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBOdW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoc291cmNl
c1tpXSAhPSBkZXN0aW5hdGlvbnNbaV0pCi0gICAgICAgICAgICAgICAgcGFpcnMuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKHNvdXJjZXNbaV0sIGRlc3RpbmF0aW9uc1tpXSkpOworICAgICAgICAvLyBp
ZiBjb25zdGV4cHIgYXZvaWRzIHdhcm5pbmdzIHdoZW4gTnVtYmVyT2ZSZWdpc3RlcnMgaXMgMC4K
KyAgICAgICAgaWYgY29uc3RleHByICghIU51bWJlck9mUmVnaXN0ZXJzKSB7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTnVtYmVyT2ZSZWdpc3RlcnM7ICsraSkgeworICAg
ICAgICAgICAgICAgIGlmIChzb3VyY2VzW2ldICE9IGRlc3RpbmF0aW9uc1tpXSkKKyAgICAgICAg
ICAgICAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHNvdXJjZXNbaV0sIGRlc3Rp
bmF0aW9uc1tpXSkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICNpZiBBU1NFUlRfRU5B
QkxFRApAQCAtMzEzLDkgKzMxNiwxMiBAQCBwcml2YXRlOgogCiAgICAgICAgIHN0ZDo6YXJyYXk8
UmVnVHlwZSwgVGFyZ2V0U2l6ZT4gcmVzdWx0IHsgfTsKIAotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgVGFyZ2V0U2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBBU1NFUlQoc291cmNl
QXJyYXlbaV0gIT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oSW5mb1R5cGVGb3JSZWc8UmVnVHlwZT46
OkludmFsaWRJbmRleCkpOwotICAgICAgICAgICAgcmVzdWx0W2ldID0gc291cmNlQXJyYXlbaV07
CisgICAgICAgIC8vIGlmIGNvbnN0ZXhwciBhdm9pZHMgd2FybmluZ3Mgd2hlbiBUYXJnZXRTaXpl
IGlzIDAuCisgICAgICAgIGlmIGNvbnN0ZXhwciAoISFUYXJnZXRTaXplKSB7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgVGFyZ2V0U2l6ZTsgaSsrKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKHNvdXJjZUFycmF5W2ldICE9IHN0YXRpY19jYXN0PGludDMyX3Q+KEluZm9U
eXBlRm9yUmVnPFJlZ1R5cGU+OjpJbnZhbGlkSW5kZXgpKTsKKyAgICAgICAgICAgICAgICByZXN1
bHRbaV0gPSBzb3VyY2VBcnJheVtpXTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399498</attachid>
            <date>2020-05-15 11:13:06 -0700</date>
            <delta_ts>2020-05-15 12:25:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211701-20200515131305.patch</filename>
            <type>text/plain</type>
            <size>2522</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MmMzOTkyYTllMjkwY2RmNjViYWYxYWU2MjZjZmY2MjRmYmZmMWNlLi4zZjIzMzNiZjliYmViZDM5
OGExZjQ1MDBhMTMxMDlhM2UxYzEyMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMC0wNS0xNSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGdu
b21lLm9yZz4KKworICAgICAgICAtV3R5cGUtbGltaXRzIHdhcm5pbmcgc3BhbSBmcm9tIENDYWxs
SGVscGVycy5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTE3MDEKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBT
a2lwIHRoZSBwcm9ibGVtYXRpYyBsb29wcyB3aGVuIFRhcmdldFNpemUgb3IgTnVtYmVyT2ZSZWdp
c3RlcnMgaXMgMCB1c2luZyBjb25zdGV4cHIgaWYuCisgICAgICAgIFNvbHV0aW9uIHN1Z2dlc3Rl
ZCBieSBNYXJrIExhbS4KKworICAgICAgICAqIGppdC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAg
KEpTQzo6Q0NhbGxIZWxwZXJzOjpzZXR1cFN0dWJBcmdzKToKKyAgICAgICAgKEpTQzo6Q0NhbGxI
ZWxwZXJzOjpjbGFtcEFycmF5VG9TaXplKToKKwogMjAyMC0wNS0xNSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGRlYnVnZ2luZyBkYXRhTG9ncyBpbiBM
aW5rQnVmZmVyOjpjb3B5Q29tcGFjdEFuZExpbmtDb2RlKCkgZm9yIHJlbGVhc2UgYnVpbGRzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggZWNkYTU2NGMwNDhk
NzJkZDA5MmRjMmYyYTAyNDNhZWQzYjU1ODk1MS4uMjBiOTU4NmZkNDBhZTJiYWQxZDNhYzIwOTg5
OGM4MDA5ZjdlYTFkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2Fs
bEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5o
CkBAIC05OSw5ICs5OSwxMiBAQCBwcml2YXRlOgogICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxS
ZWdUeXBlLCBSZWdUeXBlPiBSZWdQYWlyOwogICAgICAgICBWZWN0b3I8UmVnUGFpciwgTnVtYmVy
T2ZSZWdpc3RlcnM+IHBhaXJzOwogCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBO
dW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoc291cmNlc1tpXSAhPSBk
ZXN0aW5hdGlvbnNbaV0pCi0gICAgICAgICAgICAgICAgcGFpcnMuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKHNvdXJjZXNbaV0sIGRlc3RpbmF0aW9uc1tpXSkpOworICAgICAgICAvLyBpZiBjb25zdGV4
cHIgYXZvaWRzIHdhcm5pbmdzIHdoZW4gTnVtYmVyT2ZSZWdpc3RlcnMgaXMgMC4KKyAgICAgICAg
aWYgY29uc3RleHByIChOdW1iZXJPZlJlZ2lzdGVycyA+IDApIHsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBOdW1iZXJPZlJlZ2lzdGVyczsgKytpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHNvdXJjZXNbaV0gIT0gZGVzdGluYXRpb25zW2ldKQorICAgICAgICAgICAgICAg
ICAgICBwYWlycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoc291cmNlc1tpXSwgZGVzdGluYXRpb25z
W2ldKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogI2lmIEFTU0VSVF9FTkFCTEVECkBA
IC0zMTMsOSArMzE2LDEyIEBAIHByaXZhdGU6CiAKICAgICAgICAgc3RkOjphcnJheTxSZWdUeXBl
LCBUYXJnZXRTaXplPiByZXN1bHQgeyB9OwogCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBUYXJnZXRTaXplOyBpKyspIHsKLSAgICAgICAgICAgIEFTU0VSVChzb3VyY2VBcnJheVtp
XSAhPSBzdGF0aWNfY2FzdDxpbnQzMl90PihJbmZvVHlwZUZvclJlZzxSZWdUeXBlPjo6SW52YWxp
ZEluZGV4KSk7Ci0gICAgICAgICAgICByZXN1bHRbaV0gPSBzb3VyY2VBcnJheVtpXTsKKyAgICAg
ICAgLy8gaWYgY29uc3RleHByIGF2b2lkcyB3YXJuaW5ncyB3aGVuIFRhcmdldFNpemUgaXMgMC4K
KyAgICAgICAgaWYgY29uc3RleHByIChUYXJnZXRTaXplID4gMCkgeworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IFRhcmdldFNpemU7IGkrKykgeworICAgICAgICAgICAgICAg
IEFTU0VSVChzb3VyY2VBcnJheVtpXSAhPSBzdGF0aWNfY2FzdDxpbnQzMl90PihJbmZvVHlwZUZv
clJlZzxSZWdUeXBlPjo6SW52YWxpZEluZGV4KSk7CisgICAgICAgICAgICAgICAgcmVzdWx0W2ld
ID0gc291cmNlQXJyYXlbaV07CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBy
ZXR1cm4gcmVzdWx0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>