<?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>209955</bug_id>
          
          <creation_ts>2020-04-03 01:00:27 -0700</creation_ts>
          <short_desc>[Clang 10] Fix -Wimplicit-int-float-conversion compilation warnings in WTF</short_desc>
          <delta_ts>2020-04-04 14:43:15 -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>Web Template Framework</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>
          
          <blocked>204834</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1637266</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-04-03 01:00:27 -0700</bug_when>
    <thetext>[Clang 10] Fix -Wimplicit-int-float-conversion compilation warnings in WTF

This is a sub-task of Bug 204834.

Clang 10 reports a compilation warning:

&gt; wtf/MathExtras.h(401,43): warning: implicit conversion from &apos;unsigned long long&apos; to &apos;double&apos; changes value from 18446744073709551615 to 18446744073709551616 [-Wimplicit-int-float-conversion]
&gt;         double fmodValue = fmod(trunc(d), std::numeric_limits&lt;unsigned long long&gt;::max() + 1.0);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637271</commentid>
    <comment_count>1</comment_count>
      <attachid>395357</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-04-03 01:16:25 -0700</bug_when>
    <thetext>Created attachment 395357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637379</commentid>
    <comment_count>2</comment_count>
      <attachid>395357</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-03 09:09:56 -0700</bug_when>
    <thetext>Comment on attachment 395357
Patch

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

Looks good. review- because I think we need to deal with the float/double thing

&gt; Source/WTF/wtf/MathExtras.h:405
&gt; +constexpr float powerOfTwo(unsigned e)
&gt; +{
&gt; +    float p = 1;
&gt; +    for (unsigned i = 0; i &lt; e; i++)
&gt; +        p *= 2;
&gt; +    return p;
&gt; +}
&gt; +
&gt; +template&lt;typename T&gt; constexpr float maxPlusOne = powerOfTwo(countOfNumberBits&lt;T&gt;);

I think we need this separately for float and double. Just computing the float one and then converting to double won’t give the correct answer.

&gt; Source/WTF/wtf/MathExtras.h:414
&gt; +        double fmodValue = fmod(trunc(d), maxPlusOne&lt;unsigned long long&gt;);

This seems like the right idea, but we would want it for double, not float.

&gt; Source/WTF/wtf/MediaTime.cpp:128
&gt; +    if (doubleTime &gt;= maxPlusOne&lt;int64_t&gt;)

This needs to be double instead of float.

&gt; Source/WTF/wtf/MediaTime.cpp:135
&gt; +    while (std::round(doubleTime * timeScale) &gt;= maxPlusOne&lt;int64_t&gt;)

I don’t understand why std::round is necessary here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637380</commentid>
    <comment_count>3</comment_count>
      <attachid>395357</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-03 09:12:20 -0700</bug_when>
    <thetext>Comment on attachment 395357
Patch

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

&gt; Source/WTF/wtf/MathExtras.h:395
&gt; +template&lt;typename T&gt; constexpr unsigned countOfNumberBits = countOfBits&lt;T&gt; - std::numeric_limits&lt;T&gt;::is_signed;

Could use std::is_signed_v&lt;T&gt; instead of std::numeric_limits&lt;T&gt;::is_signed

I think this should probably be named countOfMagnitudeBits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637391</commentid>
    <comment_count>4</comment_count>
      <attachid>395357</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-03 09:40:35 -0700</bug_when>
    <thetext>Comment on attachment 395357
Patch

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

&gt;&gt; Source/WTF/wtf/MathExtras.h:405
&gt;&gt; +template&lt;typename T&gt; constexpr float maxPlusOne = powerOfTwo(countOfNumberBits&lt;T&gt;);
&gt; 
&gt; I think we need this separately for float and double. Just computing the float one and then converting to double won’t give the correct answer.

Hmm, maybe I am wrong about that. I guess powers of two are particularly well represented in floating point and perhaps converting the float one to double works perfectly.

Best way to prove that would be testing, but I am guessing I was wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637532</commentid>
    <comment_count>5</comment_count>
      <attachid>395411</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-04-03 14:36:30 -0700</bug_when>
    <thetext>Created attachment 395411
test-float-power-of-two.cpp

float has 8bit exponent, which can represent -126〜127. (-127 and 128 are use for NaN and Inf)
I created a test program to convert float powerOfTwo to double, and decomposeDouble of it.

&gt; (...)
&gt; 126 126 1.000000
&gt; 127 127 1.000000
&gt; 128 1024 1.000000
&gt; 129 1024 1.000000
&gt; (..)

powerOfTwo(128) overflows.

It is safe to calculate maxPlusOne for 64bit integer type.

Should I add ASSERT or static_assert? powerOfTwo needs template programing for using static_assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637656</commentid>
    <comment_count>6</comment_count>
      <attachid>395357</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-04-03 23:24:09 -0700</bug_when>
    <thetext>Comment on attachment 395357
Patch

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

&gt;&gt; Source/WTF/wtf/MediaTime.cpp:135
&gt;&gt; +    while (std::round(doubleTime * timeScale) &gt;= maxPlusOne&lt;int64_t&gt;)
&gt; 
&gt; I don’t understand why std::round is necessary here.

Here is the code without the first std::round:

&gt;  while (doubleTime * timeScale &gt;= maxPlusOne&lt;int64_t&gt;)
&gt;      timeScale /= 2;
&gt;  return MediaTime(static_cast&lt;int64_t&gt;(std::round(doubleTime * timeScale)), timeScale, Valid);

If doubleTime * timeScale is pow(2, 63) - 0.5, the condition would be false.
However, std::round(doubleTime * timeScale) will round up, and will be pow(2, 63).
static_cast&lt;int64_t&gt;(pow(2, 63)) is undefined.

However, ordinary &apos;double&apos; type can&apos;t keep the precision of pow(2, 63) - 0.5.
I think it&apos;s safe to omit the first std::round .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637657</commentid>
    <comment_count>7</comment_count>
      <attachid>395439</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-04-03 23:36:13 -0700</bug_when>
    <thetext>Created attachment 395439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637743</commentid>
    <comment_count>8</comment_count>
      <attachid>395439</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-04 14:19:55 -0700</bug_when>
    <thetext>Comment on attachment 395439
Patch

Looks good to me like this</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637744</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-04 14:42:29 -0700</bug_when>
    <thetext>Committed r259537: &lt;https://trac.webkit.org/changeset/259537&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395439.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637745</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-04 14:43:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/61302881&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395357</attachid>
            <date>2020-04-03 01:16:25 -0700</date>
            <delta_ts>2020-04-03 23:36:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209955-20200403171624.patch</filename>
            <type>text/plain</type>
            <size>4967</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ0YmJmMTY0ZTIxY2I2NGQyMTBlNTU4
ZTRhNjc5YTAwZGVhNjU3OTguLjM5M2E3YzE0NDdmZTEwYTQ1ZDBiNGJkNzM1OGM1NDBiNzIxY2Fh
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDQtMDMgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgW0NsYW5nIDEwXSBGaXggLVdpbXBsaWNp
dC1pbnQtZmxvYXQtY29udmVyc2lvbiBjb21waWxhdGlvbiB3YXJuaW5ncyBpbiBXVEYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTk1NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENsYW5nIDEwIHJlcG9y
dHMgYSBjb21waWxhdGlvbiB3YXJuaW5nIGZvciBpbnQgdG8gZmxvYXQKKyAgICAgICAgY29udmVy
c2lvbnMgbG9zaW5nIHRoZSBwcmVjaXNpb24uIFRoZSB3YXJuaW5nIGlzIG9mdGVuIHJlcG9ydGVk
CisgICAgICAgIGZvciBjb2RlIGNvbnZlcnRpbmcgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSB0byBh
biBpbnRlZ2VyIHZhbHVlLgorICAgICAgICBGb3IgZXhhbXBsZToKKworICAgICAgICA+IE9wdGlv
bmFsPGludD4gcG9zaXRpdmVfZmxvYXRfdG9faW50KGZsb2F0IGYpIHsKKyAgICAgICAgPiAgICAg
aWYgKGYgPiBJTlRfTUFYKQorICAgICAgICA+ICAgICAgICAgcmV0dXJuIG51bGxvcHQ7CisgICAg
ICAgID4gICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGYpOworICAgICAgICA+IH0KKworICAg
ICAgICBJTlRfTUFYIGlzIGltcGxpY2l0bHkgY29udmVydGVkIGZsb2F0LCBidXQgZmxvYXQgY2Fu
J3Qga2VlcCB0aGUKKyAgICAgICAgcHJlY2lzaW9uIG9mIGl0LiBBbmQsIEMrKyBzcGVjIGRvZXNu
J3Qgc3BlY2lmeSBpdCBpcyByb3VuZGVkIHVwIG9yCisgICAgICAgIGRvd24uIEFib3ZlIGNvZGUg
c2hvdWxkIGJlIHJld3JpdHRlbiB0bzoKKworICAgICAgICA+IE9wdGlvbmFsPGludD4gcG9zaXRp
dmVfZmxvYXRfdG9faW50KGZsb2F0IGYpIHsKKyAgICAgICAgPiAgICAgaWYgKGYgPj0gcG93KDIs
IDMxKSkKKyAgICAgICAgPiAgICAgICAgIHJldHVybiBudWxsb3B0OworICAgICAgICA+ICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihmKTsKKyAgICAgICAgPiB9CisKKyAgICAgICAgKiB3dGYv
TWF0aEV4dHJhcy5oOgorICAgICAgICAocG93ZXJPZlR3byk6IEFkZGVkLgorICAgICAgICAoZG91
YmxlVG9JbnRlZ2VyKTogQWRkZWQuCisgICAgICAgIChtYXhQbHVzT25lKTogQWRkZWQuCisgICAg
ICAgICogd3RmL01lZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6Ok1lZGlhVGltZTo6Y3JlYXRl
V2l0aEZsb2F0KToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKToK
KwogMjAyMC0wNC0wMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNTkzOTAuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmgKaW5k
ZXggOGVjODk4NzQzMmQ5NjQ1MjJiYzNhMjczZDVmNWU3OWY5ODYxYjYwNy4uOTZkYjVhNjMxYmNh
ZTg0YzIxNzBiNjgxZjg2NzZkMjk3Nzk1M2MzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
TWF0aEV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaApAQCAtMzkxLDYg
KzM5MSwxOSBAQCBpbmxpbmUgdm9pZCBkZWNvbXBvc2VEb3VibGUoZG91YmxlIG51bWJlciwgYm9v
bCYgc2lnbiwgaW50MzJfdCYgZXhwb25lbnQsIHVpbnQ2NAogICAgICAgICBtYW50aXNzYSB8PSAw
eDEwMDAwMDAwMDAwMDAwdWxsOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdGV4cHIg
dW5zaWduZWQgY291bnRPZkJpdHMgPSBzaXplb2YoVCkgKiBDSEFSX0JJVDsKK3RlbXBsYXRlPHR5
cGVuYW1lIFQ+IGNvbnN0ZXhwciB1bnNpZ25lZCBjb3VudE9mTnVtYmVyQml0cyA9IGNvdW50T2ZC
aXRzPFQ+IC0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkOworCitjb25zdGV4cHIg
ZmxvYXQgcG93ZXJPZlR3byh1bnNpZ25lZCBlKQoreworICAgIGZsb2F0IHAgPSAxOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBlOyBpKyspCisgICAgICAgIHAgKj0gMjsKKyAgICByZXR1
cm4gcDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3RleHByIGZsb2F0IG1heFBsdXNP
bmUgPSBwb3dlck9mVHdvKGNvdW50T2ZOdW1iZXJCaXRzPFQ+KTsKKwogLy8gQ2FsY3VsYXRlIGQg
JSAyXns2NH0uCiBpbmxpbmUgdm9pZCBkb3VibGVUb0ludGVnZXIoZG91YmxlIGQsIHVuc2lnbmVk
IGxvbmcgbG9uZyYgdmFsdWUpCiB7CkBAIC0zOTgsNyArNDExLDcgQEAgaW5saW5lIHZvaWQgZG91
YmxlVG9JbnRlZ2VyKGRvdWJsZSBkLCB1bnNpZ25lZCBsb25nIGxvbmcmIHZhbHVlKQogICAgICAg
ICB2YWx1ZSA9IDA7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIC0yXns2NH0gPCBmbW9kVmFsdWUg
PCAyXns2NH0uCi0gICAgICAgIGRvdWJsZSBmbW9kVmFsdWUgPSBmbW9kKHRydW5jKGQpLCBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmcgbG9uZz46Om1heCgpICsgMS4wKTsKKyAgICAg
ICAgZG91YmxlIGZtb2RWYWx1ZSA9IGZtb2QodHJ1bmMoZCksIG1heFBsdXNPbmU8dW5zaWduZWQg
bG9uZyBsb25nPik7CiAgICAgICAgIGlmIChmbW9kVmFsdWUgPj0gMCkgewogICAgICAgICAgICAg
Ly8gMCA8PSBmbW9kVmFsdWUgPCAyXns2NH0uCiAgICAgICAgICAgICAvLyAwIDw9IHZhbHVlIDwg
Ml57NjR9LiBUaGlzIGNhc3QgY2F1c2VzIG5vIGxvc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9NZWRpYVRpbWUuY3BwIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAppbmRleCAx
M2UwODk5NDU3ZTE1MDlhYTdkOGIyNmZmZGFjOGZjZTYzYzZlOGNmLi5iM2RiN2RjOWU5NzcwNWNl
ZDVhNTg5YTMyMGRiNDA1ZTNkNGI4NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9NZWRp
YVRpbWUuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKQEAgLTk1LDE0ICs5
NSwxNCBAQCBNZWRpYVRpbWUgTWVkaWFUaW1lOjpjcmVhdGVXaXRoRmxvYXQoZmxvYXQgZmxvYXRU
aW1lLCB1aW50MzJfdCB0aW1lU2NhbGUpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwog
ICAgIGlmIChzdGQ6OmlzaW5mKGZsb2F0VGltZSkpCiAgICAgICAgIHJldHVybiBzdGQ6OnNpZ25i
aXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRl
VGltZSgpOwotICAgIGlmIChmbG9hdFRpbWUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptYXgoKSkKKyAgICBpZiAoZmxvYXRUaW1lID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAg
ICAgIHJldHVybiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogICAgIGlmIChmbG9hdFRpbWUgPCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKICAgICAgICAgcmV0dXJuIG5lZ2F0
aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgaWYgKCF0aW1lU2NhbGUpCiAgICAgICAgIHJldHVybiBz
dGQ6OnNpZ25iaXQoZmxvYXRUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2
ZUluZmluaXRlVGltZSgpOwogCi0gICAgd2hpbGUgKGZsb2F0VGltZSAqIHRpbWVTY2FsZSA+IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKQorICAgIHdoaWxlIChmbG9hdFRpbWUg
KiB0aW1lU2NhbGUgPj0gbWF4UGx1c09uZTxpbnQ2NF90PikKICAgICAgICAgdGltZVNjYWxlIC89
IDI7CiAgICAgcmV0dXJuIE1lZGlhVGltZShzdGF0aWNfY2FzdDxpbnQ2NF90PihmbG9hdFRpbWUg
KiB0aW1lU2NhbGUpLCB0aW1lU2NhbGUsIFZhbGlkKTsKIH0KQEAgLTEyNSwxNCArMTI1LDE0IEBA
IE1lZGlhVGltZSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZG91YmxlIGRvdWJsZVRpbWUs
IHVpbnQzMl90IHRpbWVTY2FsZSkKICAgICAgICAgcmV0dXJuIGludmFsaWRUaW1lKCk7CiAgICAg
aWYgKHN0ZDo6aXNpbmYoZG91YmxlVGltZSkpCiAgICAgICAgIHJldHVybiBzdGQ6OnNpZ25iaXQo
ZG91YmxlVGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRp
bWUoKTsKLSAgICBpZiAoZG91YmxlVGltZSA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46
Om1heCgpKQorICAgIGlmIChkb3VibGVUaW1lID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAg
ICAgIHJldHVybiBwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogICAgIGlmIChkb3VibGVUaW1lIDwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpCiAgICAgICAgIHJldHVybiBuZWdh
dGl2ZUluZmluaXRlVGltZSgpOwogICAgIGlmICghdGltZVNjYWxlKQogICAgICAgICByZXR1cm4g
c3RkOjpzaWduYml0KGRvdWJsZVRpbWUpID8gbmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0
aXZlSW5maW5pdGVUaW1lKCk7CiAKLSAgICB3aGlsZSAoZG91YmxlVGltZSAqIHRpbWVTY2FsZSA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRfdD46Om1heCgpKQorICAgIHdoaWxlIChzdGQ6OnJv
dW5kKGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUpID49IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAg
ICAgIHRpbWVTY2FsZSAvPSAyOwogICAgIHJldHVybiBNZWRpYVRpbWUoc3RhdGljX2Nhc3Q8aW50
NjRfdD4oc3RkOjpyb3VuZChkb3VibGVUaW1lICogdGltZVNjYWxlKSksIHRpbWVTY2FsZSwgVmFs
aWQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>395411</attachid>
            <date>2020-04-03 14:36:30 -0700</date>
            <delta_ts>2020-04-03 14:36:30 -0700</delta_ts>
            <desc>test-float-power-of-two.cpp</desc>
            <filename>test-float-power-of-two.cpp</filename>
            <type>text/plain</type>
            <size>1659</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">I2luY2x1ZGUgPGxpbWl0cz4KI2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNzdGRpbnQ+CiNp
bmNsdWRlIDxjbGltaXRzPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxjc3RyaW5nPgoKY29u
c3RleHByIGZsb2F0IHBvd2VyT2ZUd28odW5zaWduZWQgZSkKewogIGZsb2F0IHAgPSAxOwogIHdo
aWxlIChlLS0pCiAgICBwICo9IDI7CiAgcmV0dXJuIHA7Cn0KCi8qCiAqIEMrKydzIGlkZWEgb2Yg
YSByZWludGVycHJldF9jYXN0IGxhY2tzIHN1ZmZpY2llbnQgY29qb25lcy4KICovCnRlbXBsYXRl
PHR5cGVuYW1lIFRvVHlwZSwgdHlwZW5hbWUgRnJvbVR5cGU+CmlubGluZSBUb1R5cGUgYml0d2lz
ZV9jYXN0KEZyb21UeXBlIGZyb20pCnsKICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEZyb21UeXBl
KSA9PSBzaXplb2YoVG9UeXBlKSwgImJpdHdpc2VfY2FzdCBzaXplIG9mIEZyb21UeXBlIGFuZCBU
b1R5cGUgbXVzdCBiZSBlcXVhbCEiKTsKICAgIHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PFRv
VHlwZT46OnR5cGUgdG8geyB9OwogICAgc3RkOjptZW1jcHkoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0
byksIHN0YXRpY19jYXN0PHZvaWQqPigmZnJvbSksIHNpemVvZih0bykpOwogICAgcmV0dXJuIHRv
Owp9CgoKLy8gZGVjb21wb3NlICdudW1iZXInIHRvIGl0cyBzaWduLCBleHBvbmVudCwgYW5kIG1h
bnRpc3NhIGNvbXBvbmVudHMuCi8vIFRoZSByZXN1bHQgaXMgaW50ZXJwcmV0ZWQgYXM6Ci8vICAg
ICAoc2lnbiA/IC0xIDogMSkgKiBwb3coMiwgZXhwb25lbnQpICogKG1hbnRpc3NhIC8gKDEgPDwg
NTIpKQppbmxpbmUgdm9pZCBkZWNvbXBvc2VEb3VibGUoZG91YmxlIG51bWJlciwgYm9vbCYgc2ln
biwgaW50MzJfdCYgZXhwb25lbnQsIHVpbnQ2NF90JiBtYW50aXNzYSkKewogICAgc2lnbiA9IHN0
ZDo6c2lnbmJpdChudW1iZXIpOwoKICAgIHVpbnQ2NF90IGJpdHMgPSBiaXR3aXNlX2Nhc3Q8dWlu
dDY0X3Q+KG51bWJlcik7CiAgICBleHBvbmVudCA9IChzdGF0aWNfY2FzdDxpbnQzMl90PihiaXRz
ID4+IDUyKSAmIDB4N2ZmKSAtIDB4M2ZmOwogICAgbWFudGlzc2EgPSBiaXRzICYgMHhGRkZGRkZG
RkZGRkZGdWxsOwoKICAgIC8vIENoZWNrIGZvciB6ZXJvL2Rlbm9ybWFsIHZhbHVlczsgaWYgc28s
IGFkanVzdCB0aGUgZXhwb25lbnQsCiAgICAvLyBpZiBub3QgaW5zZXJ0IHRoZSBpbXBsaWNpdCwg
b21pdHRlZCBsZWFkaW5nIDEgYml0LgogICAgaWYgKGV4cG9uZW50ID09IC0weDNmZikKICAgICAg
ICBleHBvbmVudCA9IG1hbnRpc3NhID8gLTB4M2ZlIDogMDsKICAgIGVsc2UKICAgICAgICBtYW50
aXNzYSB8PSAweDEwMDAwMDAwMDAwMDAwdWxsOwp9CgoKaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0
IGNoYXIqIGFyZ3ZbXSkKewogICAgZm9yICh1bnNpZ25lZCBpPTA7IGk8MTQwOyBpKyspIHsKICAg
ICAgICBib29sIHNpZ247CiAgICAgICAgaW50MzJfdCBleHBvbmVudDsKICAgICAgICB1aW50NjRf
dCBtYW50aXNzYTsKICAgICAgICBkZWNvbXBvc2VEb3VibGUocG93ZXJPZlR3byhpKSwgc2lnbiwg
ZXhwb25lbnQsIG1hbnRpc3NhKTsKICAgICAgICBwcmludGYoIiVkICVkICVmXG4iLCBpLCBleHBv
bmVudCwgZG91YmxlKG1hbnRpc3NhKSAvICgxbGx1IDw8IDUyKSk7CiAgICB9CgogICAgcmV0dXJu
IDA7Cn0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395439</attachid>
            <date>2020-04-03 23:36:13 -0700</date>
            <delta_ts>2020-04-04 14:42:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209955-20200404153612.patch</filename>
            <type>text/plain</type>
            <size>5055</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ0YmJmMTY0ZTIxY2I2NGQyMTBlNTU4
ZTRhNjc5YTAwZGVhNjU3OTguLjM3Y2RkZGVlNDRiOGY2ZDBjNTEwNDI0M2YwOWRlOGU4OTQ5OWZm
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMjAtMDQtMDMgIEZ1amlpIEhpcm9ub3JpICA8SGly
b25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgW0NsYW5nIDEwXSBGaXggLVdpbXBsaWNp
dC1pbnQtZmxvYXQtY29udmVyc2lvbiBjb21waWxhdGlvbiB3YXJuaW5ncyBpbiBXVEYKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTk1NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIENsYW5nIDEwIHJlcG9ydHMg
YSBjb21waWxhdGlvbiB3YXJuaW5nIGZvciBpbnQgdG8gZmxvYXQKKyAgICAgICAgY29udmVyc2lv
bnMgbG9zaW5nIHRoZSBwcmVjaXNpb24uIFRoZSB3YXJuaW5nIGlzIG9mdGVuIHJlcG9ydGVkCisg
ICAgICAgIGZvciBjb2RlIGNvbnZlcnRpbmcgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSB0byBhbiBp
bnRlZ2VyIHZhbHVlLgorICAgICAgICBGb3IgZXhhbXBsZToKKworICAgICAgICA+IE9wdGlvbmFs
PGludD4gcG9zaXRpdmVfZmxvYXRfdG9faW50KGZsb2F0IGYpIHsKKyAgICAgICAgPiAgICAgaWYg
KGYgPiBJTlRfTUFYKQorICAgICAgICA+ICAgICAgICAgcmV0dXJuIG51bGxvcHQ7CisgICAgICAg
ID4gICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGYpOworICAgICAgICA+IH0KKworICAgICAg
ICBJTlRfTUFYIGlzIGltcGxpY2l0bHkgY29udmVydGVkIGZsb2F0LCBidXQgZmxvYXQgY2FuJ3Qg
a2VlcCB0aGUKKyAgICAgICAgcHJlY2lzaW9uIG9mIHN1Y2ggbGFyZ2UgdmFsdWUuIEFuZCwgQysr
IHNwZWMgZG9lc24ndCBzcGVjaWZ5CisgICAgICAgIHdoZXRoZXIgaXQgd291bGQgYmUgcm91bmRl
ZCB1cCBvciBkb3duLiBBYm92ZSBjb2RlIHNob3VsZCBiZQorICAgICAgICByZXdyaXR0ZW4gdG86
CisKKyAgICAgICAgPiBPcHRpb25hbDxpbnQ+IHBvc2l0aXZlX2Zsb2F0X3RvX2ludChmbG9hdCBm
KSB7CisgICAgICAgID4gICAgIGlmIChmID49IHBvdygyLCAzMSkpCisgICAgICAgID4gICAgICAg
ICByZXR1cm4gbnVsbG9wdDsKKyAgICAgICAgPiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
Zik7CisgICAgICAgID4gfQorCisgICAgICAgIEluc3RlYWQgb2YgdXNpbmcgcG93LCB0aGlzIGNo
YW5nZSBhZGRlZCBhIHRlbXBsYXRlIHZhcmlhYmxlCisgICAgICAgIG1heFBsdXNPbmU8VD4uCisK
KyAgICAgICAgKiB3dGYvTWF0aEV4dHJhcy5oOgorICAgICAgICAocG93ZXJPZlR3byk6IEFkZGVk
LgorICAgICAgICAoZG91YmxlVG9JbnRlZ2VyKTogQWRkZWQuCisgICAgICAgIChtYXhQbHVzT25l
KTogQWRkZWQuCisgICAgICAgICogd3RmL01lZGlhVGltZS5jcHA6CisgICAgICAgIChXVEY6Ok1l
ZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KToKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjpjcmVh
dGVXaXRoRG91YmxlKToKKwogMjAyMC0wNC0wMiAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNTkzOTAuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9NYXRoRXh0cmFzLmggYi9Tb3VyY2UvV1RGL3d0Zi9N
YXRoRXh0cmFzLmgKaW5kZXggOGVjODk4NzQzMmQ5NjQ1MjJiYzNhMjczZDVmNWU3OWY5ODYxYjYw
Ny4uNzkzOTQ2NjFmY2IyMzZhMDdlMmYzMDBlMjVhYThiMmE5YTg0OWVkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvTWF0aEV4dHJhcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL01hdGhFeHRy
YXMuaApAQCAtMzkxLDYgKzM5MSwxOSBAQCBpbmxpbmUgdm9pZCBkZWNvbXBvc2VEb3VibGUoZG91
YmxlIG51bWJlciwgYm9vbCYgc2lnbiwgaW50MzJfdCYgZXhwb25lbnQsIHVpbnQ2NAogICAgICAg
ICBtYW50aXNzYSB8PSAweDEwMDAwMDAwMDAwMDAwdWxsOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjb25zdGV4cHIgdW5zaWduZWQgY291bnRPZkJpdHMgPSBzaXplb2YoVCkgKiBDSEFSX0JJ
VDsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciB1bnNpZ25lZCBjb3VudE9mTWFnbml0
dWRlQml0cyA9IGNvdW50T2ZCaXRzPFQ+IC0gc3RkOjppc19zaWduZWRfdjxUPjsKKworY29uc3Rl
eHByIGZsb2F0IHBvd2VyT2ZUd28odW5zaWduZWQgZSkKK3sKKyAgICBmbG9hdCBwID0gMTsKKyAg
ICB3aGlsZSAoZS0tKQorICAgICAgICBwICo9IDI7CisgICAgcmV0dXJuIHA7Cit9CisKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IGNvbnN0ZXhwciBmbG9hdCBtYXhQbHVzT25lID0gcG93ZXJPZlR3byhj
b3VudE9mTWFnbml0dWRlQml0czxUPik7CisKIC8vIENhbGN1bGF0ZSBkICUgMl57NjR9LgogaW5s
aW5lIHZvaWQgZG91YmxlVG9JbnRlZ2VyKGRvdWJsZSBkLCB1bnNpZ25lZCBsb25nIGxvbmcmIHZh
bHVlKQogewpAQCAtMzk4LDcgKzQxMSw3IEBAIGlubGluZSB2b2lkIGRvdWJsZVRvSW50ZWdlcihk
b3VibGUgZCwgdW5zaWduZWQgbG9uZyBsb25nJiB2YWx1ZSkKICAgICAgICAgdmFsdWUgPSAwOwog
ICAgIGVsc2UgewogICAgICAgICAvLyAtMl57NjR9IDwgZm1vZFZhbHVlIDwgMl57NjR9LgotICAg
ICAgICBkb3VibGUgZm1vZFZhbHVlID0gZm1vZCh0cnVuYyhkKSwgc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZCBsb25nIGxvbmc+OjptYXgoKSArIDEuMCk7CisgICAgICAgIGRvdWJsZSBmbW9k
VmFsdWUgPSBmbW9kKHRydW5jKGQpLCBtYXhQbHVzT25lPHVuc2lnbmVkIGxvbmcgbG9uZz4pOwog
ICAgICAgICBpZiAoZm1vZFZhbHVlID49IDApIHsKICAgICAgICAgICAgIC8vIDAgPD0gZm1vZFZh
bHVlIDwgMl57NjR9LgogICAgICAgICAgICAgLy8gMCA8PSB2YWx1ZSA8IDJeezY0fS4gVGhpcyBj
YXN0IGNhdXNlcyBubyBsb3NzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1l
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL01lZGlhVGltZS5jcHAKaW5kZXggMTNlMDg5OTQ1N2UxNTA5
YWE3ZDhiMjZmZmRhYzhmY2U2M2M2ZThjZi4uOTM5Nzc1MDhiNGM1N2UxOTIxMDdjYmIyYzU2MmZm
YmVhZTVmOGE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCkBAIC05NSwxNCArOTUsMTQgQEAgTWVkaWFU
aW1lIE1lZGlhVGltZTo6Y3JlYXRlV2l0aEZsb2F0KGZsb2F0IGZsb2F0VGltZSwgdWludDMyX3Qg
dGltZVNjYWxlKQogICAgICAgICByZXR1cm4gaW52YWxpZFRpbWUoKTsKICAgICBpZiAoc3RkOjpp
c2luZihmbG9hdFRpbWUpKQogICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGZsb2F0VGltZSkg
PyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUoKTsKLSAgICBp
ZiAoZmxvYXRUaW1lID4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpCisgICAg
aWYgKGZsb2F0VGltZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICByZXR1cm4gcG9z
aXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICBpZiAoZmxvYXRUaW1lIDwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQ2NF90Pjo6bWluKCkpCiAgICAgICAgIHJldHVybiBuZWdhdGl2ZUluZmluaXRlVGlt
ZSgpOwogICAgIGlmICghdGltZVNjYWxlKQogICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGZs
b2F0VGltZSkgPyBuZWdhdGl2ZUluZmluaXRlVGltZSgpIDogcG9zaXRpdmVJbmZpbml0ZVRpbWUo
KTsKIAotICAgIHdoaWxlIChmbG9hdFRpbWUgKiB0aW1lU2NhbGUgPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDY0X3Q+OjptYXgoKSkKKyAgICB3aGlsZSAoZmxvYXRUaW1lICogdGltZVNjYWxlID49
IG1heFBsdXNPbmU8aW50NjRfdD4pCiAgICAgICAgIHRpbWVTY2FsZSAvPSAyOwogICAgIHJldHVy
biBNZWRpYVRpbWUoc3RhdGljX2Nhc3Q8aW50NjRfdD4oZmxvYXRUaW1lICogdGltZVNjYWxlKSwg
dGltZVNjYWxlLCBWYWxpZCk7CiB9CkBAIC0xMjUsMTQgKzEyNSwxNCBAQCBNZWRpYVRpbWUgTWVk
aWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGRvdWJsZSBkb3VibGVUaW1lLCB1aW50MzJfdCB0aW1l
U2NhbGUpCiAgICAgICAgIHJldHVybiBpbnZhbGlkVGltZSgpOwogICAgIGlmIChzdGQ6OmlzaW5m
KGRvdWJsZVRpbWUpKQogICAgICAgICByZXR1cm4gc3RkOjpzaWduYml0KGRvdWJsZVRpbWUpID8g
bmVnYXRpdmVJbmZpbml0ZVRpbWUoKSA6IHBvc2l0aXZlSW5maW5pdGVUaW1lKCk7Ci0gICAgaWYg
KGRvdWJsZVRpbWUgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkKKyAgICBp
ZiAoZG91YmxlVGltZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICByZXR1cm4gcG9z
aXRpdmVJbmZpbml0ZVRpbWUoKTsKICAgICBpZiAoZG91YmxlVGltZSA8IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50NjRfdD46Om1pbigpKQogICAgICAgICByZXR1cm4gbmVnYXRpdmVJbmZpbml0ZVRp
bWUoKTsKICAgICBpZiAoIXRpbWVTY2FsZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6c2lnbmJpdChk
b3VibGVUaW1lKSA/IG5lZ2F0aXZlSW5maW5pdGVUaW1lKCkgOiBwb3NpdGl2ZUluZmluaXRlVGlt
ZSgpOwogCi0gICAgd2hpbGUgKGRvdWJsZVRpbWUgKiB0aW1lU2NhbGUgPiBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDY0X3Q+OjptYXgoKSkKKyAgICB3aGlsZSAoZG91YmxlVGltZSAqIHRpbWVTY2Fs
ZSA+PSBtYXhQbHVzT25lPGludDY0X3Q+KQogICAgICAgICB0aW1lU2NhbGUgLz0gMjsKICAgICBy
ZXR1cm4gTWVkaWFUaW1lKHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6cm91bmQoZG91YmxlVGlt
ZSAqIHRpbWVTY2FsZSkpLCB0aW1lU2NhbGUsIFZhbGlkKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>