<?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>224403</bug_id>
          
          <creation_ts>2021-04-10 00:17:34 -0700</creation_ts>
          <short_desc>[JSC] B3 reduce-double-to-float should reduce only when constant double is canonical one to reduced float value</short_desc>
          <delta_ts>2021-04-13 14:33:19 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <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>1748964</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-10 00:17:34 -0700</bug_when>
    <thetext>[JSC] B3 reduce-double-to-float should reduce only when constant double is canonical one to reduced float value</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748965</commentid>
    <comment_count>1</comment_count>
      <attachid>425678</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-10 00:19:59 -0700</bug_when>
    <thetext>Created attachment 425678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748966</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-10 00:20:02 -0700</bug_when>
    <thetext>&lt;rdar://problem/76259599&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748996</commentid>
    <comment_count>3</comment_count>
      <attachid>425678</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-10 07:37:08 -0700</bug_when>
    <thetext>Comment on attachment 425678
Patch

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

r=me with suggestion.

&gt; Source/JavaScriptCore/b3/B3ReduceStrength.cpp:1690
&gt; +            // We cannot convert FloatToDouble(DoubleToFloat(value)) to value, because double-to-float will trancate some range of double values into one float.

/cannot convert/cannot convert some/

&gt; Source/JavaScriptCore/b3/B3ReduceStrength.cpp:1696
&gt;              if (Value* constant = m_value-&gt;child(0)-&gt;floatToDoubleConstant(m_proc)) {

Currently, both floatToDoubleConstant() and doubleToFloatConstant() do unconditional conversions.  Since their results are always expected to be null checked before use, I recommend either:
1. Make them only return a non-null result if the conversion is lossless, or
2. Add ASSERTs in them that the conversion is lossless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749014</commentid>
    <comment_count>4</comment_count>
      <attachid>425678</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-10 11:53:49 -0700</bug_when>
    <thetext>Comment on attachment 425678
Patch

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

&gt;&gt; Source/JavaScriptCore/b3/B3ReduceStrength.cpp:1690
&gt;&gt; +            // We cannot convert FloatToDouble(DoubleToFloat(value)) to value, because double-to-float will trancate some range of double values into one float.
&gt; 
&gt; /cannot convert/cannot convert some/

Changed.

&gt;&gt; Source/JavaScriptCore/b3/B3ReduceStrength.cpp:1696
&gt;&gt;              if (Value* constant = m_value-&gt;child(0)-&gt;floatToDoubleConstant(m_proc)) {
&gt; 
&gt; Currently, both floatToDoubleConstant() and doubleToFloatConstant() do unconditional conversions.  Since their results are always expected to be null checked before use, I recommend either:
&gt; 1. Make them only return a non-null result if the conversion is lossless, or
&gt; 2. Add ASSERTs in them that the conversion is lossless.

This place is OK to lose bits since `FloatToDouble(constant)` is explicitly offered as an instruction. So, if it loses the bits, that&apos;s the intent of the program.
The above conversion&apos;s problem was shat replacement removed the original semantics.

static_cast&lt;double&gt;(static_cast&lt;float&gt;(1.1)) != 1.1


But this conversion is not losing the semantics since the original program&apos;s intent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749016</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-10 12:00:15 -0700</bug_when>
    <thetext>Committed r275800 (236371@main): &lt;https://commits.webkit.org/236371@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749019</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-10 12:08:21 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #4)
&gt; &gt;&gt; Source/JavaScriptCore/b3/B3ReduceStrength.cpp:1696
&gt; &gt;&gt;              if (Value* constant = m_value-&gt;child(0)-&gt;floatToDoubleConstant(m_proc)) {
&gt; &gt; 
&gt; &gt; Currently, both floatToDoubleConstant() and doubleToFloatConstant() do unconditional conversions.  Since their results are always expected to be null checked before use, I recommend either:
&gt; &gt; 1. Make them only return a non-null result if the conversion is lossless, or
&gt; &gt; 2. Add ASSERTs in them that the conversion is lossless.
&gt; 
&gt; This place is OK to lose bits since `FloatToDouble(constant)` is explicitly
&gt; offered as an instruction. So, if it loses the bits, that&apos;s the intent of
&gt; the program.
&gt; The above conversion&apos;s problem was shat replacement removed the original
&gt; semantics.
&gt; 
&gt; static_cast&lt;double&gt;(static_cast&lt;float&gt;(1.1)) != 1.1
&gt; 
&gt; 
&gt; But this conversion is not losing the semantics since the original program&apos;s
&gt; intent.

Good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749400</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-04-12 14:52:04 -0700</bug_when>
    <thetext>%llu assumes uint64_t is a long long unsigned int, but on Linux x86_64 it&apos;s long unsigned int. Solution is to use the PRIu64 format modifier:

[624/4867] Building CXX object Source/JavaScriptCore/CMak...vedSources/unified-sources/UnifiedSource-23a5fd0e-3.cpp.o
In file included from JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-23a5fd0e-3.cpp:1:
../../Source/JavaScriptCore/b3/B3ConstDoubleValue.cpp: In member function ‘virtual void JSC::B3::ConstDoubleValue::dumpMeta(WTF::CommaPrinter&amp;, WTF::PrintStream&amp;) const’:
../../Source/JavaScriptCore/b3/B3ConstDoubleValue.cpp:197:24: warning: format ‘%llu’ expects argument of type ‘long long unsigned int’, but argument 4 has type ‘long unsigned int’ [-Wformat=]
  197 |     out.printf(&quot;%le(%llu)&quot;, m_value, bitwise_cast&lt;uint64_t&gt;(m_value));
      |                     ~~~^             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                        |                                   |
      |                        long long unsigned int              long unsigned int
      |                     %lu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749867</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-13 14:33:19 -0700</bug_when>
    <thetext>Fixed the warning in https://trac.webkit.org/changeset/275870/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425678</attachid>
            <date>2021-04-10 00:19:59 -0700</date>
            <delta_ts>2021-04-10 07:37:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224403-20210410001959.patch</filename>
            <type>text/plain</type>
            <size>11291</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OGJlYTg5ZmMzYjYxNjg5MThkM2JmYjRlYjA5YWI0OTdjZTY3M2MyLi4yMjRmZWM1ZDU2NjZmNjg4
YzhmZWFjZDYzOGE3MTJmN2FhMzQxNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAyMS0wNC0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEIzIHJlZHVjZS1kb3VibGUtdG8tZmxvYXQgc2hvdWxkIHJlZHVj
ZSBvbmx5IHdoZW4gY29uc3RhbnQgZG91YmxlIGlzIGNhbm9uaWNhbCBvbmUgdG8gcmVkdWNlZCBm
bG9hdCB2YWx1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI0NDAzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83NjI1OTU5OT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHJlZHVjaW5nIGRvdWJs
ZS1jb25zdGFudCB2YWx1ZSB0byBmbG9hdCBpbiBCMywgd2Ugc2hvdWxkIGNoZWNrIHdoZXRoZXIg
dGhlIGRvdWJsZSB2YWx1ZSBpcyBhIGNhbm9uaWNhbCBvbmUKKyAgICAgICAgd2hpY2ggY2FuIGJl
IGNvbnZlcnRlZCBiYWNrIGZyb20gdGhlIHJlZHVjZWQgZmxvYXQgdmFsdWUuIEZvciBleGFtcGxl
LCBkb3VibGUgMS4xIGlzIG5vdCB0aGUgb25lIHNpbmNlIGl0IGlzIHRydW5jYXRlZAorICAgICAg
ICBpbnRvIGZsb2F0IDEuMSBieSByZW1vdmluZyBzb21lIGJpdHMuCisKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PGRvdWJsZT4oc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEuMSkpICE9IDEuMQorCisgICAg
ICAgIFJlZHVjaW5nIHN1Y2ggYSBkb3VibGUgdG8gZmxvYXQgY2hhbmdlcyB0aGUgc2VtYW50aWNz
LgorCisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6
QjM6OkNvbnN0RG91YmxlVmFsdWU6OmR1bXBNZXRhIGNvbnN0KToKKyAgICAgICAgKiBiMy9CM0Nv
bnN0RmxvYXRWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6OmR1
bXBNZXRhIGNvbnN0KToKKyAgICAgICAgKiBiMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwOgor
ICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAqIGIzL3Rlc3RiMy5o
OgorICAgICAgICAocG9wdWxhdGVXaXRoSW50ZXJlc3RpbmdWYWx1ZXMpOgorICAgICAgICAqIGIz
L3Rlc3RiM18xLmNwcDoKKyAgICAgICAgKHJ1bik6CisgICAgICAgICogYjMvdGVzdGIzXzMuY3Bw
OgorICAgICAgICAodGVzdENvbnZlcnREb3VibGVUb0Zsb2F0VG9Eb3VibGUpOgorICAgICAgICAo
dGVzdENvbnZlcnREb3VibGVUb0Zsb2F0RXF1YWwpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6SlNDX0RFRklORV9KSVRfT1BFUkFU
SU9OX1dJVEhfQVRUUklCVVRFUyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1Rv
QjM6OmNyYXNoKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6OmZ0bFVucmVhY2hhYmxlKTogRGVs
ZXRlZC4KKwogMjAyMS0wNC0wOCAgS2hlbSBSYWogIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKICAg
ICAgICAgW1dQRV0gQnVpbGQgZml4ZXMgZm9yIG11c2wgQyBsaWJyYXJ5IG9uIExpbnV4CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCmluZGV4IGFj
OTEwMDJhNmRiNTg3YjFkYWNjZDI5ZWM0NWMxMGIyYjJlNDdmZTAuLjM4YTlkYzc2ZGFiNDhiY2Nh
YWE3ZGQ4ZDE5OTE5MzZjZWE4Zjg3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbnN0RG91YmxlVmFsdWUuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgVHJpU3RhdGUgQ29u
c3REb3VibGVWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3QKIHZvaWQgQ29uc3REb3VibGVWYWx1ZTo6ZHVtcE1ldGEoQ29tbWFQcmludGVyJiBj
b21tYSwgUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoY29tbWEpOwot
ICAgIG91dC5wcmludGYoIiVsZSIsIG1fdmFsdWUpOworICAgIG91dC5wcmludGYoIiVsZSglbGx1
KSIsIG1fdmFsdWUsIGJpdHdpc2VfY2FzdDx1aW50NjRfdD4obV92YWx1ZSkpOwogfQogCiB9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6QjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dEZsb2F0VmFsdWUuY3BwCmluZGV4IDM4Y2M0NjBhMzc1NDAwMzQwNTc1NDk1MmRkMDM5MjdkMzI0
NjkwOTguLmU2NWEyODlhMThjODA4ZGVmNTc3YjM4YTIwZGE5ODhmZGQ3ZTZkZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcApAQCAtMTg2LDcg
KzE4Niw3IEBAIFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHZvaWQgQ29uc3RGbG9hdFZhbHVlOjpkdW1w
TWV0YShDb21tYVByaW50ZXImIGNvbW1hLCBQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewogICAg
IG91dC5wcmludChjb21tYSk7Ci0gICAgb3V0LnByaW50ZigiJWxlIiwgbV92YWx1ZSk7CisgICAg
b3V0LnByaW50ZigiJWxlKCV1KSIsIG1fdmFsdWUsIGJpdHdpc2VfY2FzdDx1aW50MzJfdD4obV92
YWx1ZSkpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZURvdWJsZVRvRmxvYXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKaW5kZXggNjRkMjhlNDAz
YTI4YmY1NzJiYWE5MjY4Y2M2Mzc5NTlkNGU3NTFiMS4uZTk1MWY5OGI2YjRhYjhlZWM2ODIyY2Mz
NWRmYzY4NmI2MjEyNTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UmVkdWNlRG91YmxlVG9GbG9hdC5jcHAKQEAgLTIxMyw4ICsyMTMsMjAgQEAgY2xhc3MgRG91Ymxl
VG9GbG9hdFJlZHVjdGlvbiB7CiAgICAgICAgIGlmICh2YWx1ZS0+b3Bjb2RlKCkgPT0gRmxvYXRU
b0RvdWJsZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgIGlmICh2YWx1ZS0+
aGFzRG91YmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gRG91YmxlIGNvbnN0YW50
IHRydW5jYXRlZCB0byBmbG9hdC4KKyAgICAgICAgaWYgKHZhbHVlLT5oYXNEb3VibGUoKSkgewor
ICAgICAgICAgICAgLy8gV2hlbiBjb21wYXJpbmcgZG91YmxlIGFuZCBmbG9hdCwgc29tZSByYW5n
ZSBvZiBkb3VibGUgdmFsdWVzIHdpbGwgYmUgdHJ1bmNhdGVkIGludG8gb25lIGZsb2F0LgorICAg
ICAgICAgICAgLy8gU28gd2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGlzIGRvdWJsZSB2YWx1ZSBp
cyBvbmUtb24tb25lIHJlcHJlc2VudGF0aW9uIHRvIHRoZSBvcmlnaW5hbCBkb3VibGUuCisgICAg
ICAgICAgICAvLyBMZXQncyBjb25zaWRlciB0aGUgY2FzZSwKKyAgICAgICAgICAgIC8vCisgICAg
ICAgICAgICAvLyAgICAgRXF1YWwoRG91YmxlOiAxLjEsIEZsb2F0VG9Eb3VibGUoRmxvYXQ6IDEu
MSkpCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYmUgZmFsc2Uu
IFRoaXMgaXMgYmVjYXVzZQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vICAgICBzdGF0
aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGZsb2F0PigxLjEpKSAhPSAxLjEKKyAgICAgICAg
ICAgIC8vCisgICAgICAgICAgICBkb3VibGUgY29uc3RWYWx1ZSA9IHZhbHVlLT5hc0RvdWJsZSgp
OworICAgICAgICAgICAgcmV0dXJuIGlzSWRlbnRpY2FsKHN0YXRpY19jYXN0PGRvdWJsZT4oc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGNvbnN0VmFsdWUpKSwgY29uc3RWYWx1ZSk7CisgICAgICAgIH0KIAog
ICAgICAgICBpZiAodmFsdWUtPm9wY29kZSgpID09IFBoaSkgewogICAgICAgICAgICAgcmV0dXJu
IHZhbHVlLT50eXBlKCkgPT0gRmxvYXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcAppbmRleCA5MWM5ZGYzODk4YTBkYjM3NmZiYTIzMTBjMTkyNjFjNjVj
ZTZkMjY4Li41ZTM3N2FmODhlZWMzNzQzNDU0Y2FmN2VjYjhjOGU2N2UyNWIzYTZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC0xNjg3LDYg
KzE2ODcsMTAgQEAgY2xhc3MgUmVkdWNlU3RyZW5ndGggewogICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgY2FzZSBGbG9hdFRvRG91YmxlOgorICAgICAgICAgICAgLy8gV2UgY2Fubm90IGNv
bnZlcnQgRmxvYXRUb0RvdWJsZShEb3VibGVUb0Zsb2F0KHZhbHVlKSkgdG8gdmFsdWUsIGJlY2F1
c2UgZG91YmxlLXRvLWZsb2F0IHdpbGwgdHJhbmNhdGUgc29tZSByYW5nZSBvZiBkb3VibGUgdmFs
dWVzIGludG8gb25lIGZsb2F0LgorICAgICAgICAgICAgLy8gRXhhbXBsZToKKyAgICAgICAgICAg
IC8vICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHN0YXRpY19jYXN0PGZsb2F0PigxLjEpKSAhPSAx
LjEKKwogICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBGbG9hdFRvRG91YmxlKGNvbnN0YW50KQog
ICAgICAgICAgICAgLy8gSW50byB0aGlzOiBDb25zdERvdWJsZShjb25zdGFudCkKICAgICAgICAg
ICAgIGlmIChWYWx1ZSogY29uc3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+ZmxvYXRUb0RvdWJs
ZUNvbnN0YW50KG1fcHJvYykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuaAppbmRleCBmMjMx
MWVmMjNkODY4ZmQ3NjkwYWQ4NjQzMGE5ZGYyMGFjNDI2OWY4Li43YjBlYTU1NjkzODBkNjQ0ZmFk
MTI2NThjYjAwNWMyZDc0Mzg4MjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5oCkBAIC0y
OTAsNiArMjkwLDggQEAgdm9pZCBwb3B1bGF0ZVdpdGhJbnRlcmVzdGluZ1ZhbHVlcyhWZWN0b3I8
QjNPcGVyYW5kPEZsb2F0VHlwZT4+JiBvcGVyYW5kcykKICAgICBvcGVyYW5kcy5hcHBlbmQoeyAi
LTAuNiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oLTAuNikgfSk7CiAgICAgb3BlcmFuZHMuYXBw
ZW5kKHsgIjEuIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigxLikgfSk7CiAgICAgb3BlcmFuZHMu
YXBwZW5kKHsgIi0xLiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oLTEuKSB9KTsKKyAgICBvcGVy
YW5kcy5hcHBlbmQoeyAiMS4xIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigxLjEpIH0pOworICAg
IG9wZXJhbmRzLmFwcGVuZCh7ICItMS4xIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBlPigtMS4xKSB9
KTsKICAgICBvcGVyYW5kcy5hcHBlbmQoeyAiMi4iLCBzdGF0aWNfY2FzdDxGbG9hdFR5cGU+KDIu
KSB9KTsKICAgICBvcGVyYW5kcy5hcHBlbmQoeyAiLTIuIiwgc3RhdGljX2Nhc3Q8RmxvYXRUeXBl
PigtMi4pIH0pOwogICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJNX1BJIiwgc3RhdGljX2Nhc3Q8Rmxv
YXRUeXBlPihNX1BJKSB9KTsKQEAgLTYxNCw3ICs2MTYsOSBAQCB2b2lkIHRlc3RDb252ZXJ0RG91
YmxlVG9GbG9hdE1lbShkb3VibGUgdmFsdWUpOwogdm9pZCB0ZXN0Q29udmVydEZsb2F0VG9Eb3Vi
bGVBcmcoZmxvYXQgdmFsdWUpOwogdm9pZCB0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVJbW0oZmxv
YXQgdmFsdWUpOwogdm9pZCB0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVNZW0oZmxvYXQgdmFsdWUp
Owordm9pZCB0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRUb0RvdWJsZShkb3VibGUgdmFsdWUpOwog
dm9pZCB0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRUb0RvdWJsZVRvRmxvYXQoZG91YmxlIHZhbHVl
KTsKK3ZvaWQgdGVzdENvbnZlcnREb3VibGVUb0Zsb2F0RXF1YWwoZG91YmxlIHZhbHVlKTsKIHZv
aWQgdGVzdExvYWRGbG9hdENvbnZlcnREb3VibGVDb252ZXJ0RmxvYXRTdG9yZUZsb2F0KGZsb2F0
IHZhbHVlKTsKIHZvaWQgdGVzdEZyb3VuZEFyZyhkb3VibGUgdmFsdWUpOwogdm9pZCB0ZXN0RnJv
dW5kTWVtKGRvdWJsZSB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvdGVzdGIzXzEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18xLmNwcApp
bmRleCA5NjRjNmMzNTk3MTFkMzhiMDE5ZWEzZWFhNmMyODgyZmJkMTY3ZWJhLi5lNTJlNmRhYmMz
MzQzZGJhMTQxNjI0NTRlOGZjYTg2NzQ2ZjNjMDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzXzEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90
ZXN0YjNfMS5jcHAKQEAgLTMwOSw3ICszMDksOSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0
ZXIpCiAgICAgUlVOX1VOQVJZKHRlc3RDb252ZXJ0RmxvYXRUb0RvdWJsZUFyZywgZmxvYXRpbmdQ
b2ludE9wZXJhbmRzPGZsb2F0PigpKTsKICAgICBSVU5fVU5BUlkodGVzdENvbnZlcnRGbG9hdFRv
RG91YmxlSW1tLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwogICAgIFJVTl9VTkFS
WSh0ZXN0Q29udmVydEZsb2F0VG9Eb3VibGVNZW0sIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxmbG9h
dD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdFRvRG91YmxlLCBm
bG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKICAgICBSVU5fVU5BUlkodGVzdENvbnZl
cnREb3VibGVUb0Zsb2F0VG9Eb3VibGVUb0Zsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91
YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdENvbnZlcnREb3VibGVUb0Zsb2F0RXF1YWwsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0U3RvcmVG
bG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CiAgICAgUlVOX1VOQVJZKHRl
c3RTdG9yZURvdWJsZUNvbnN0YW50QXNGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7CiAgICAgUlVOX1VOQVJZKHRlc3RMb2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZs
b2F0U3RvcmVGbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGZsb2F0PigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzXzMuY3BwCmluZGV4IDcwOTE2NzJjYTk4ZmFmODk3ZGY1M2ZmZDRh
NTVmM2U5ZmExNmIyMDAuLmI3MTRjMzU3NzQ0OGJjNWI2OTE4OTc1N2RjMTk4YjgzMTI0ODcwZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjNfMy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiM18zLmNwcApAQCAtMjQzOCw2ICsyNDM4LDE4
IEBAIHZvaWQgdGVzdENvbnZlcnRGbG9hdFRvRG91YmxlTWVtKGZsb2F0IHZhbHVlKQogICAgIENI
RUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUpLCBzdGF0
aWNfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwogfQogCit2b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9G
bG9hdFRvRG91YmxlKGRvdWJsZSB2YWx1ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5m
bzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1
ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUs
IE9yaWdpbigpLCBhc0Zsb2F0KTsKKyAgICByb290LT5hcHBlbmROZXdDb250cm9sVmFsdWUocHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwgYXNEb3VibGUpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwo
Y29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2MsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihz
dGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKSkpOworfQorCiB2b2lkIHRlc3RDb252ZXJ0RG91Ymxl
VG9GbG9hdFRvRG91YmxlVG9GbG9hdChkb3VibGUgdmFsdWUpCiB7CiAgICAgUHJvY2VkdXJlIHBy
b2M7CkBAIC0yNDUxLDYgKzI0NjMsMjAgQEAgdm9pZCB0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRU
b0RvdWJsZVRvRmxvYXQoZG91YmxlIHZhbHVlKQogICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBp
bGVBbmRSdW48ZmxvYXQ+KHByb2MsIHZhbHVlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSkp
OwogfQogCit2b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdEVxdWFsKGRvdWJsZSB2YWx1ZSkK
K3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRC
bG9jaygpOworICAgIFZhbHVlKiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICBWYWx1
ZSogYXNGbG9hdCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwg
T3JpZ2luKCksIGFyZ3VtZW50KTsKKyAgICBWYWx1ZSogYXNEb3VibGUgPSByb290LT5hcHBlbmRO
ZXc8VmFsdWU+KHByb2MsIEZsb2F0VG9Eb3VibGUsIE9yaWdpbigpLCBhc0Zsb2F0KTsKKyAgICBW
YWx1ZSogY29uc3RhbnQgPSByb290LT5hcHBlbmROZXc8Q29uc3REb3VibGVWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIHZhbHVlKTsKKyAgICBWYWx1ZSogYXJnc0FyZUVxdWFsID0gcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPihwcm9jLCBFcXVhbCwgT3JpZ2luKCksIGFzRG91YmxlLCBjb25zdGFudCk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFy
Z3NBcmVFcXVhbCk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGJvb2w+KHByb2MsIHZhbHVl
KSA9PSAoc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKSA9PSB2
YWx1ZSkpOworfQorCiB2b2lkIHRlc3RMb2FkRmxvYXRDb252ZXJ0RG91YmxlQ29udmVydEZsb2F0
U3RvcmVGbG9hdChmbG9hdCB2YWx1ZSkKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA1YjEyOThkNGU2
ZGY2YzEyYTk0MGU3ODg4N2I0ZDYyNzMxZjBlYTJkLi5mNGNkZTg1ZTAzZjE0YjNjNTBhNDEwYTVj
NjEwYTJhOTgxMDY0ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwCkBAIC0xMTksOCArMTE5LDggQEAgbmFtZXNwYWNlIHsKIHN0ZDo6YXRvbWlj
PGludD4gY29tcGlsZUNvdW50ZXI7CiAKICNpZiBBU1NFUlRfRU5BQkxFRAotTk9fUkVUVVJOX0RV
RV9UT19DUkFTSCBzdGF0aWMgdm9pZCBmdGxVbnJlYWNoYWJsZSgKLSAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgQmxvY2tJbmRleCBibG9ja0luZGV4LCB1bnNpZ25lZCBub2RlSW5kZXgpCitzdGF0
aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBKU0NfREVDTEFSRV9KSVRfT1BFUkFUSU9OKGZ0bFVu
cmVhY2hhYmxlLCB2b2lkLCAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJsb2NrSW5kZXggYmxvY2tJ
bmRleCwgdW5zaWduZWQgbm9kZUluZGV4KSk7CitKU0NfREVGSU5FX0pJVF9PUEVSQVRJT05fV0lU
SF9BVFRSSUJVVEVTKGZ0bFVucmVhY2hhYmxlLCBOT19SRVRVUk5fRFVFX1RPX0NSQVNILCB2b2lk
LCAoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJsb2NrSW5kZXggYmxvY2tJbmRleCwgdW5zaWduZWQg
bm9kZUluZGV4KSkKIHsKICAgICBkYXRhTG9nKCJDcmFzaGluZyBpbiB0aG91Z2h0LXRvLWJlLXVu
cmVhY2hhYmxlIEZUTC1nZW5lcmF0ZWQgY29kZSBmb3IgIiwgcG9pbnRlckR1bXAoY29kZUJsb2Nr
KSwgIiBhdCBiYXNpYyBibG9jayAjIiwgYmxvY2tJbmRleCk7CiAgICAgaWYgKG5vZGVJbmRleCAh
PSBVSU5UX01BWCkKQEAgLTE5OTA3LDcgKzE5OTA3LDcgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICNlbHNlIC8vIEFTU0VSVF9FTkFCTEVECiAgICAgICAgIG1fb3V0LmNhbGwoCiAgICAgICAgICAg
ICBWb2lkLAotICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoZnRsVW5yZWFjaGFibGUpLAor
ICAgICAgICAgICAgbV9vdXQub3BlcmF0aW9uKGZ0bFVucmVhY2hhYmxlKSwKICAgICAgICAgICAg
IC8vIFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBwb2ludGVyIHRv
IGl0c2VsZiBiZWNhdXNlCiAgICAgICAgICAgICAvLyB0aGF0IHdvdWxkIGNhdXNlIGl0IHRvIGFs
d2F5cyBnZXQgY29sbGVjdGVkLgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoYml0d2lz
ZV9jYXN0PGludHB0cl90Pihjb2RlQmxvY2soKSkpLCBtX291dC5jb25zdEludDMyKGJsb2NrSW5k
ZXgpLAo=
</data>
<flag name="review"
          id="445706"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="445707"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>