<?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>226251</bug_id>
          
          <creation_ts>2021-05-25 17:11:51 -0700</creation_ts>
          <short_desc>Clang can&apos;t compile Optional&lt;GPRTemporary&gt; since r278035 because GPRTemporary has non-const copy constructor</short_desc>
          <delta_ts>2021-05-25 20:32:17 -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>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>
          <dependson>211674</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</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>1763761</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-05-25 17:11:51 -0700</bug_when>
    <thetext>include\optional(95,5): error: the parameter for this explicitly-defaulted copy constructor is const, but a member or base requires it to be non-const

Since r278035 (238131@main)
WinCairo Debug clang-cl can&apos;t compile.
WinCairo Release clang-cl and MSVC can compile.


[800/5730] Building CXX object Source\JavaScriptCore\CMakeFiles\JavaScriptCore.dir\dfg\DFGSpeculativeJIT64.cpp.obj
FAILED: Source/JavaScriptCore/CMakeFiles/JavaScriptCore.dir/dfg/DFGSpeculativeJIT64.cpp.obj 
C:\PROGRA~1\LLVM\bin\clang-cl.exe  /nologo -TP -DBUILDING_JavaScriptCore -DBUILDING_WITH_CMAKE=1 -DHAVE_CONFIG_H=1 -DJavaScriptCore_EXPORTS -DNOCRYPT -DNOMINMAX -DUNICODE -DWINVER=0x601 -DWTF_PLATFORM_WIN_CAIRO=1 -D_CRT_SECURE_NO_WARNINGS -D_HAS_EXCEPTIONS=0 -D_UNICODE -D_WIN32_WINNT=0x601 -D_WINDOWS -D_WINSOCKAPI_=&quot;&quot; -IJavaScriptCore\Headers -I. -I..\..\Source\JavaScriptCore -I..\..\Source\JavaScriptCore\API -I..\..\Source\JavaScriptCore\assembler -I..\..\Source\JavaScriptCore\b3 -I..\..\Source\JavaScriptCore\b3\air -I..\..\Source\JavaScriptCore\bindings -I..\..\Source\JavaScriptCore\builtins -I..\..\Source\JavaScriptCore\bytecode -I..\..\Source\JavaScriptCore\bytecompiler -I..\..\Source\JavaScriptCore\dfg -I..\..\Source\JavaScriptCore\disassembler -I..\..\Source\JavaScriptCore\disassembler\ARM64 -I..\..\Source\JavaScriptCore\disassembler\udis86 -I..\..\Source\JavaScriptCore\domjit -I..\..\Source\JavaScriptCore\ftl -I..\..\Source\JavaScriptCore\heap -I..\..\Source\JavaScriptCore\debugger -I..\..\Source\JavaScriptCore\inspector -I..\..\Source\JavaScriptCore\inspector\agents -I..\..\Source\JavaScriptCore\inspector\augmentable -I..\..\Source\JavaScriptCore\inspector\remote -I..\..\Source\JavaScriptCore\interpreter -I..\..\Source\JavaScriptCore\jit -I..\..\Source\JavaScriptCore\llint -I..\..\Source\JavaScriptCore\parser -I..\..\Source\JavaScriptCore\profiler -I..\..\Source\JavaScriptCore\runtime -I..\..\Source\JavaScriptCore\tools -I..\..\Source\JavaScriptCore\wasm -I..\..\Source\JavaScriptCore\wasm\js -I..\..\Source\JavaScriptCore\yarr -IJavaScriptCore\DerivedSources -IJavaScriptCore\DerivedSources\inspector -IJavaScriptCore\DerivedSources\runtime -IJavaScriptCore\DerivedSources\yarr -I..\include\private -I..\..\Source\JavaScriptCore\inspector\remote\socket -IWTF\Headers -imsvc ..\..\WebKitLibraries\win\include /W4 -fdiagnostics-color=always -fcolor-diagnostics -Wno-noexcept-type -Wno-psabi -Wno-misleading-indentation -Wno-parentheses-equality -Qunused-arguments -Wwrite-strings -Wundef -Wpointer-arith -Wmissing-format-attribute -Wformat-security -Wcast-align -Wno-unknown-argument -Wno-nonportable-include-path -Wno-unknown-pragmas -Wno-macro-redefined -Wno-undef /DWIN32 /D_WINDOWS  /GR- /EHsc- -fno-strict-aliasing /MD /Zi /Ob0 /Od /RTC1 /wd4018 /wd4060 /wd4068 /wd4100 /wd4127 /wd4146 /wd4189 /wd4201 /wd4244 /wd4245 /wd4251 /wd4275 /wd4267 /wd4305 /wd4309 /wd4312 /wd4324 /wd4389 /wd4456 /wd4457 /wd4458 /wd4459 /wd4505 /wd4611 /wd4646 /wd4701 /wd4702 /wd4706 /wd4715 /wd4722 /wd4838 /wd4840 /wd4996 /wd5205 /Zi /GS /EHa- /EHc- /EHs- /fp:except- /analyze- /bigobj /utf-8 /validate-charset -fmsc-version=1911 -ffp-contract=off -fno-slp-vectorize -std:c++17 /showIncludes /FoSource\JavaScriptCore\CMakeFiles\JavaScriptCore.dir\dfg\DFGSpeculativeJIT64.cpp.obj /FdSource\JavaScriptCore\CMakeFiles\JavaScriptCore.dir\ -c -- ..\..\Source\JavaScriptCore\dfg\DFGSpeculativeJIT64.cpp
In file included from ..\..\Source\JavaScriptCore\dfg\DFGSpeculativeJIT64.cpp:27:
In file included from ..\..\Source\JavaScriptCore\dfg/DFGSpeculativeJIT.h:30:
In file included from ..\..\Source\JavaScriptCore\heap/BlockDirectory.h:29:
In file included from ..\..\Source\JavaScriptCore\heap/BlockDirectoryBits.h:29:
In file included from WTF\Headers\wtf/FastBitVector.h:31:
In file included from WTF\Headers\wtf/PrintStream.h:31:
In file included from WTF\Headers\wtf/Forward.h:24:
In file included from WTF\Headers\wtf/Optional.h:23:
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\optional(95,5): error: the parameter for this explicitly-defaulted copy constructor is const, but a member or base requires it to be non-const
    _Optional_destruct_base(const _Optional_destruct_base&amp;) = default;
    ^
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\optional(109,35): note: in instantiation of template class &apos;std::_Optional_destruct_base&lt;JSC::DFG::GPRTemporary, false&gt;&apos; requested here
struct _Optional_construct_base : _Optional_destruct_base&lt;_Ty&gt; {
                                  ^
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\xsmf_control.h(46,28): note: in instantiation of template class &apos;std::_Optional_construct_base&lt;JSC::DFG::GPRTemporary&gt;&apos; requested here
struct _Non_trivial_move : _SMF_control_copy&lt;_Base, _Types...&gt; { // non-trivial move construction facade
                           ^
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\xsmf_control.h(85,31): note: in instantiation of template class &apos;std::_Non_trivial_move&lt;std::_Optional_construct_base&lt;JSC::DFG::GPRTemporary&gt;, JSC::DFG::GPRTemporary&gt;&apos; requested here
struct _Deleted_copy_assign : _SMF_control_move&lt;_Base, _Types...&gt; { // deleted copy assignment facade
                              ^
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\xsmf_control.h(107,35): note: in instantiation of template class &apos;std::_Deleted_copy_assign&lt;std::_Optional_construct_base&lt;JSC::DFG::GPRTemporary&gt;, JSC::DFG::GPRTemporary&gt;&apos; requested here
struct _Non_trivial_move_assign : _SMF_control_copy_assign&lt;_Base, _Types...&gt; { // non-trivial move assignment facade
                                  ^
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.28.29910\include\optional(154,26): note: in instantiation of template class &apos;std::_Non_trivial_move_assign&lt;std::_Optional_construct_base&lt;JSC::DFG::GPRTemporary&gt;, JSC::DFG::GPRTemporary&gt;&apos; requested here
class optional : private _SMF_control&lt;_Optional_construct_base&lt;_Ty&gt;, _Ty&gt; {
                         ^
..\..\Source\JavaScriptCore\dfg\DFGSpeculativeJIT64.cpp(1935,32): note: in instantiation of template class &apos;std::optional&lt;JSC::DFG::GPRTemporary&gt;&apos; requested here
        Optional&lt;GPRTemporary&gt; scratch;
                               ^
1 error generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763765</commentid>
    <comment_count>1</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-05-25 17:15:32 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #0)
&gt; WinCairo Debug clang-cl can&apos;t compile.
&gt; WinCairo Release clang-cl and MSVC can compile.

Wrong. WinCairo Release clang-cl can&apos;t compile.
clang-cl can&apos;t compile while MSVC can.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763784</commentid>
    <comment_count>2</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-05-25 17:46:14 -0700</bug_when>
    <thetext>This?

c++ - When are special member functions of a template class instantiated? - Stack Overflow
https://stackoverflow.com/q/10370713</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763785</commentid>
    <comment_count>3</comment_count>
      <attachid>429718</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-05-25 17:47:20 -0700</bug_when>
    <thetext>Created attachment 429718
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763786</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-25 17:47:36 -0700</bug_when>
    <thetext>Have you tried replacing:
GPRTemporary(GPRTemporary&amp; other) = delete;

with:
GPRTemporary(const GPRTemporary&amp; other) = delete;

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763787</commentid>
    <comment_count>5</comment_count>
      <attachid>429718</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-25 17:48:06 -0700</bug_when>
    <thetext>Comment on attachment 429718
WIP patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:2030
&gt; +    GPRTemporary(GPRTemporary&amp;) = delete;
&gt;  

Do we need both?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763789</commentid>
    <comment_count>6</comment_count>
      <attachid>429718</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-05-25 17:51:03 -0700</bug_when>
    <thetext>Comment on attachment 429718
WIP patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:2030
&gt;&gt;  
&gt; 
&gt; Do we need both?

Oh, no I don&apos;t. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763798</commentid>
    <comment_count>7</comment_count>
      <attachid>429723</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-05-25 18:24:31 -0700</bug_when>
    <thetext>Created attachment 429723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763800</commentid>
    <comment_count>8</comment_count>
      <attachid>429723</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-25 18:25:07 -0700</bug_when>
    <thetext>Comment on attachment 429723
Patch

r=me if the bots are happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763811</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-25 20:31:54 -0700</bug_when>
    <thetext>Committed r278073 (238152@main): &lt;https://commits.webkit.org/238152@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429723.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763812</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-25 20:32:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/78492076&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429718</attachid>
            <date>2021-05-25 17:47:20 -0700</date>
            <delta_ts>2021-05-25 18:24:19 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>559</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA0
MTVjNjk3NmUxNjguLmY0ODQyNzNjODI2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjAyNSw3ICsyMDI1LDggQEAgcHVibGljOgogICAg
IH0KICAgICBHUFJUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqLCBSZXVzZVRhZywgSlNWYWx1ZU9w
ZXJhbmQmLCBXaGljaFZhbHVlV29yZCk7CiAKLSAgICBHUFJUZW1wb3JhcnkoR1BSVGVtcG9yYXJ5
JiBvdGhlcikgPSBkZWxldGU7CisgICAgR1BSVGVtcG9yYXJ5KGNvbnN0IEdQUlRlbXBvcmFyeSYp
ID0gZGVsZXRlOworICAgIEdQUlRlbXBvcmFyeShHUFJUZW1wb3JhcnkmKSA9IGRlbGV0ZTsKIAog
ICAgIEdQUlRlbXBvcmFyeShHUFJUZW1wb3JhcnkmJiBvdGhlcikKICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429723</attachid>
            <date>2021-05-25 18:24:31 -0700</date>
            <delta_ts>2021-05-25 20:31:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226251-20210526102430.patch</filename>
            <type>text/plain</type>
            <size>1665</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4MDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MWNkMDgwY2NhODFiY2ZhZmRlMzdjMjMxNjEwN2MzZjNkN2M5ODI5Li4xODU2ZTczOWE0ZjQyODUz
ZGNhNmE0NGNkNmU0ZTc1NjMwMTBmMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wNS0yNSAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBz
b255LmNvbT4KKworICAgICAgICBDbGFuZyBjYW4ndCBjb21waWxlIE9wdGlvbmFsPEdQUlRlbXBv
cmFyeT4gc2luY2UgcjI3ODAzNSBiZWNhdXNlIEdQUlRlbXBvcmFyeSBoYXMgbm9uLWNvbnN0IGNv
cHkgY29uc3RydWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNjI1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdpbkNhaXJvIGNsYW5nLWNsIGJ1aWxkcyByZXBvcnRlZCBhIGNvbXBpbGF0aW9uIGVy
cm9yIHNpbmNlIHIyNzgwMzUuCisgICAgICAgID4gaW5jbHVkZVxvcHRpb25hbCg5NSw1KTogZXJy
b3I6IHRoZSBwYXJhbWV0ZXIgZm9yIHRoaXMgZXhwbGljaXRseS1kZWZhdWx0ZWQgY29weSBjb25z
dHJ1Y3RvciBpcyBjb25zdCwgYnV0IGEgbWVtYmVyIG9yIGJhc2UgcmVxdWlyZXMgaXQgdG8gYmUg
bm9uLWNvbnN0CisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDogRGVsZXRlZCB0
aGUgY29uc3QgY29weSBjdG9yIGluc3RlYWQgb2YgdGhlIG5vbi1jb25zdCBjb3B5IGN0b3IuCisK
IDIwMjEtMDUtMjUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIFJFR1JFU1NJT04ocjI1NDM4OSkgbWVkaWEgY29udHJv
bHMgbmVlZHMgdGhlIGZ1bGwgbGlzdCBvZiBsYW5ndWFnZSBwcmVmZXJlbmNlcyBmb3Igb3JkZXJp
bmcgdHJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKaW5kZXggNDE1YzY5NzZlMTY4NmRiZDQ5YTY4OWNiMTcwYTIzNmI5ZTY2ZmQzNS4uNTJlMWU4
Y2Q1MmEwNDg2ZTYxMGM1YzQ5MGMzYmEwYTkxN2RjODlmMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMjAyNSw3ICsyMDI1LDcgQEAgcHVi
bGljOgogICAgIH0KICAgICBHUFJUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqLCBSZXVzZVRhZywg
SlNWYWx1ZU9wZXJhbmQmLCBXaGljaFZhbHVlV29yZCk7CiAKLSAgICBHUFJUZW1wb3JhcnkoR1BS
VGVtcG9yYXJ5JiBvdGhlcikgPSBkZWxldGU7CisgICAgR1BSVGVtcG9yYXJ5KGNvbnN0IEdQUlRl
bXBvcmFyeSYpID0gZGVsZXRlOwogCiAgICAgR1BSVGVtcG9yYXJ5KEdQUlRlbXBvcmFyeSYmIG90
aGVyKQogICAgIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>