<?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>116352</bug_id>
          
          <creation_ts>2013-05-17 14:31:05 -0700</creation_ts>
          <short_desc>REGRESSION (r149184): Build errors in RefPtr.h when building with Clang, C++98 standard</short_desc>
          <delta_ts>2013-06-18 00:00:41 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>andersca</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>890672</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-17 14:31:05 -0700</bug_when>
    <thetext>r149184 introduced move semantics for the RefPtr, conditioning them with the compiler&apos;s rvalue references support.
http://trac.webkit.org/changeset/149184

The implementation uses the std::move method, supported only in C++11. Still, the Clang compiler can support rvalue references even in C++98 mode due to the extension that is provided and detected via the __has_extension macro in Compiler.h[1]. The __has_extension macro is used intentionally instead of __has_feature, the switch was made in r119162.
http://trac.webkit.org/changeset/119162

This causes compilation errors due to undeclared std::move when building JSC (which AFAIK nobody builds in C++11 std), using Clang 3.2, libstdc++ on the GTK port. Like said, with this configuration, the rvalue references support is enabled, but the C++11 standard is not, ergo the failures.

Same errors are occurring in WTFString.cpp, where std::move is used in String::isolatedCopy when reference-qualified functions support is present. Again the __has_extension macro is used, so the support is enabled even when not building in C++11 std, resulting in build errors due to undeclared std::move. That change was introduced in r149372.
http://trac.webkit.org/changeset/149372

I&apos;ve verified that with the given configuration, using __has_feature instead of __has_extension fixes the problem, but I&apos;m not sure if that&apos;s OK given the change log in r119132 which specifically switched to __has_extension for some Clang features so they could be used even when using the C++98 standard.
http://trac.webkit.org/changeset/119132

[1] http://trac.webkit.org/browser/trunk/Source/WTF/wtf/Compiler.h#L56
[2] http://trac.webkit.org/browser/trunk/Source/WTF/wtf/text/WTFString.cpp#L657</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890704</commentid>
    <comment_count>1</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-05-17 15:35:07 -0700</bug_when>
    <thetext>I’m fine with changing it; on Mac we build all of WebKit with C++11.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890917</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-18 11:57:15 -0700</bug_when>
    <thetext>Would it be OK to replace all the uses of __has_extension with __has_feature?

This would basically enforce to build either in strict C++98 or strict C++11 standard mode, with no extensions provided by Clang for C++98 taken into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891056</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-05-19 13:20:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Would it be OK to replace all the uses of __has_extension with __has_feature?
&gt; 
&gt; This would basically enforce to build either in strict C++98 or strict C++11 standard mode, with no extensions provided by Clang for C++98 taken into account.

Why is anyone building with Clang and C++98.  I think we should strive for Clang plus at least C++11.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891164</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-05-20 04:29:08 -0700</bug_when>
    <thetext>That would work for the GTK port due to limiting the supported compilers. I&apos;m not sure how ambitious other ports are regarding Clang support.

Then again, if C++11 is made mandatory when using Clang, using __has_extension doesn&apos;t have much meaning at the moment since these features are part of C++11 so __has_feature should cover proper detection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901037</commentid>
    <comment_count>5</comment_count>
      <attachid>204823</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-06-17 07:52:23 -0700</bug_when>
    <thetext>Created attachment 204823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901286</commentid>
    <comment_count>6</comment_count>
      <attachid>204823</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-06-18 00:00:34 -0700</bug_when>
    <thetext>Comment on attachment 204823
Patch

Clearing flags on attachment: 204823

Committed r151670: &lt;http://trac.webkit.org/changeset/151670&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901287</commentid>
    <comment_count>7</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-06-18 00:00:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204823</attachid>
            <date>2013-06-17 07:52:23 -0700</date>
            <delta_ts>2013-06-18 00:00:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116352-20130617165036.patch</filename>
            <type>text/plain</type>
            <size>4251</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRiYTdmOWZiZjZlZWRjMjA4NmE5Yjhi
YjZmZWQwZjJhNzQ2NjU3ZTQuLjNlYTgwZDIyZDVkNzhkYjE3MWJiNGVlODJkZjA1NDdmNWNhYmUy
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTMtMDYtMTcgIFphbiBEb2JlcnNlayAgPHpkb2Jl
cnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIxNDkxODQpOiBCdWlsZCBl
cnJvcnMgaW4gUmVmUHRyLmggd2hlbiBidWlsZGluZyB3aXRoIENsYW5nLCBDKys5OCBzdGFuZGFy
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MzUy
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRo
ZSBfX2hhc19mZWF0dXJlIG1hY3JvIGluc3RlYWQgb2YgdGhlIF9faGFzX2V4dGVuc2lvbiBvbmUg
d2hlbiBkZXRlY3Rpbmcgd2hhdCBmZWF0dXJlcyB0aGUgQ2xhbmcgY29tcGlsZXIKKyAgICAgICAg
dGhhdCdzIGJlaW5nIHVzZWQgaXMgY2FwYWJsZSB0byBwcm92aWRlLiBXaXRoIHRoZSBwcm9qZWN0
IG1vdmluZyBvbnRvIHVzaW5nIEMrKzExIHRocm91Z2hvdXQgaXRzIGNvbXBvbmVudHMsCisgICAg
ICAgIHRoZXJlIGN1cnJlbnRseSBleGlzdCBjYXNlcyB3aGVyZSBDKysxMS1zcGVjaWZpYyBmdW5j
dGlvbmFsaXR5IChmb3IgaW5zdGFuY2Ugc3RkOjptb3ZlKSBpcyB1c2VkIGRlc3BpdGUgYmVpbmcK
KyAgICAgICAgZ3VhcmRlZCBieSBjb21waWxlci1zcGVjaWZpYyBmZWF0dXJlIGd1YXJkcyB0aGF0
IHN0aWxsIGdldCBlbmFibGVkIGV2ZW4gd2hlbiBjb21waWxpbmcgaW4gQysrOTggd2l0aCBDbGFu
Zy4KKyAgICAgICAgVGhlIHByb2JsZW1hdGljIGZlYXR1cmVzIGFyZSBlbmFibGVkIGJlY2F1c2Ug
dGhleSdyZSBhdmFpbGFibGUgYXMgQysrOTggbGFuZ3VhZ2UgZXh0ZW5zaW9ucyBieSBDbGFuZy4K
KworICAgICAgICBVc2luZyBfX2hhc19mZWF0dXJlIGluc3RlYWQgZW5hYmxlcyB0aGUgZmVhdHVy
ZSBndWFyZCBvbmx5IGlmIHRoZSB0ZXN0ZWQgZmVhdHVyZSBpcyBhY3R1YWxseSBzdGFuZGFyZGl6
ZWQgaW4KKyAgICAgICAgdGhlIGN1cnJlbnRseSB1c2VkIGxhbmd1YWdlIHN0YW5kYXJkLgorCisg
ICAgICAgICogd3RmL0NvbXBpbGVyLmg6CisKIDIwMTMtMDYtMTQgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIFVTRShXSU5HREkpIGZv
ciB0aGUgV2luZG93cyBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5o
IGIvU291cmNlL1dURi93dGYvQ29tcGlsZXIuaAppbmRleCAyNjQ5NjFlNDllMTBmMTFmY2I0MThl
YjcxZWVkZTYxZTA2Y2M5NTQ5Li5iYTMwOGJiZTczOGMyN2Y2NWYxMWZmZTZiMzc4ZTNmYzlhZDc0
YjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Db21waWxlci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0NvbXBpbGVyLmgKQEAgLTQxLDMwICs0MSwyNiBAQAogI2lmIGRlZmluZWQoX19jbGFu
Z19fKQogI2RlZmluZSBXVEZfQ09NUElMRVJfQ0xBTkcgMQogCi0jaWZuZGVmIF9faGFzX2V4dGVu
c2lvbgotI2RlZmluZSBfX2hhc19leHRlbnNpb24gX19oYXNfZmVhdHVyZSAvKiBDb21wYXRpYmls
aXR5IHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgY2xhbmcgKi8KLSNlbmRpZgotCiAjZGVmaW5lIENM
QU5HX1BSQUdNQShQUkFHTUEpIF9QcmFnbWEoUFJBR01BKQogCiAvKiBTcGVjaWZpYyBjb21waWxl
ciBmZWF0dXJlcyAqLwotI2RlZmluZSBXVEZfQ09NUElMRVJfU1VQUE9SVFNfQ1hYX1ZBUklBRElD
X1RFTVBMQVRFUyBfX2hhc19leHRlbnNpb24oY3h4X3ZhcmlhZGljX3RlbXBsYXRlcykKKyNkZWZp
bmUgV1RGX0NPTVBJTEVSX1NVUFBPUlRTX0NYWF9WQVJJQURJQ19URU1QTEFURVMgX19oYXNfZmVh
dHVyZShjeHhfdmFyaWFkaWNfdGVtcGxhdGVzKQogCiAvKiBUaGVyZSBpcyBhIGJ1ZyBpbiBjbGFu
ZyB0aGF0IGNvbWVzIHdpdGggWGNvZGUgNC4yIHdoZXJlIEF0b21pY1N0cmluZ3MgY2FuJ3QgYmUg
aW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gU3RyaW5ncwogICAgaW4gdGhlIHByZXNlbmNlIG9mIG1v
dmUgY29uc3RydWN0b3JzIGFuZC9vciBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3JzLiBUaGlzIGJ1
ZyBoYXMgYmVlbiBmaXhlZCBpbiBYY29kZSA0LjMgY2xhbmcsIHNvIHdlCiAgICBjaGVjayBmb3Ig
Ym90aCBjeHhfcnZhbHVlX3JlZmVyZW5jZXMgYXMgd2VsbCBhcyB0aGUgdW5yZWxhdGVkIGN4eF9u
b25zdGF0aWNfbWVtYmVyX2luaXQgZmVhdHVyZSB3aGljaCB3ZSBrbm93IHdhcyBhZGRlZCBpbiA0
LjMgKi8KLSNkZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBPUlRTX0NYWF9SVkFMVUVfUkVGRVJFTkNF
UyBfX2hhc19leHRlbnNpb24oY3h4X3J2YWx1ZV9yZWZlcmVuY2VzKSAmJiBfX2hhc19leHRlbnNp
b24oY3h4X25vbnN0YXRpY19tZW1iZXJfaW5pdCkKKyNkZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBP
UlRTX0NYWF9SVkFMVUVfUkVGRVJFTkNFUyBfX2hhc19mZWF0dXJlKGN4eF9ydmFsdWVfcmVmZXJl
bmNlcykgJiYgX19oYXNfZmVhdHVyZShjeHhfbm9uc3RhdGljX21lbWJlcl9pbml0KQogCi0jZGVm
aW5lIFdURl9DT01QSUxFUl9TVVBQT1JUU19DWFhfREVMRVRFRF9GVU5DVElPTlMgX19oYXNfZXh0
ZW5zaW9uKGN4eF9kZWxldGVkX2Z1bmN0aW9ucykKKyNkZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBP
UlRTX0NYWF9ERUxFVEVEX0ZVTkNUSU9OUyBfX2hhc19mZWF0dXJlKGN4eF9kZWxldGVkX2Z1bmN0
aW9ucykKICNkZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBPUlRTX0NYWF9OVUxMUFRSIF9faGFzX2Zl
YXR1cmUoY3h4X251bGxwdHIpCiAjZGVmaW5lIFdURl9DT01QSUxFUl9TVVBQT1JUU19DWFhfRVhQ
TElDSVRfQ09OVkVSU0lPTlMgX19oYXNfZmVhdHVyZShjeHhfZXhwbGljaXRfY29udmVyc2lvbnMp
CiAjZGVmaW5lIFdURl9DT01QSUxFUl9TVVBQT1JUU19CTE9DS1MgX19oYXNfZmVhdHVyZShibG9j
a3MpCi0jZGVmaW5lIFdURl9DT01QSUxFUl9TVVBQT1JUU19DX1NUQVRJQ19BU1NFUlQgX19oYXNf
ZXh0ZW5zaW9uKGNfc3RhdGljX2Fzc2VydCkKLSNkZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBPUlRT
X0NYWF9TVEFUSUNfQVNTRVJUIF9faGFzX2V4dGVuc2lvbihjeHhfc3RhdGljX2Fzc2VydCkKLSNk
ZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBPUlRTX0NYWF9PVkVSUklERV9DT05UUk9MIF9faGFzX2V4
dGVuc2lvbihjeHhfb3ZlcnJpZGVfY29udHJvbCkKLSNkZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBP
UlRTX0hBU19UUklWSUFMX0RFU1RSVUNUT1IgX19oYXNfZXh0ZW5zaW9uKGhhc190cml2aWFsX2Rl
c3RydWN0b3IpCi0jZGVmaW5lIFdURl9DT01QSUxFUl9TVVBQT1JUU19DWFhfU1RST05HX0VOVU1T
IF9faGFzX2V4dGVuc2lvbihjeHhfc3Ryb25nX2VudW1zKQotI2RlZmluZSBXVEZfQ09NUElMRVJf
U1VQUE9SVFNfQ1hYX1JFRkVSRU5DRV9RVUFMSUZJRURfRlVOQ1RJT05TIF9faGFzX2V4dGVuc2lv
bihjeHhfcmVmZXJlbmNlX3F1YWxpZmllZF9mdW5jdGlvbnMpCisjZGVmaW5lIFdURl9DT01QSUxF
Ul9TVVBQT1JUU19DX1NUQVRJQ19BU1NFUlQgX19oYXNfZmVhdHVyZShjX3N0YXRpY19hc3NlcnQp
CisjZGVmaW5lIFdURl9DT01QSUxFUl9TVVBQT1JUU19DWFhfU1RBVElDX0FTU0VSVCBfX2hhc19m
ZWF0dXJlKGN4eF9zdGF0aWNfYXNzZXJ0KQorI2RlZmluZSBXVEZfQ09NUElMRVJfU1VQUE9SVFNf
Q1hYX09WRVJSSURFX0NPTlRST0wgX19oYXNfZmVhdHVyZShjeHhfb3ZlcnJpZGVfY29udHJvbCkK
KyNkZWZpbmUgV1RGX0NPTVBJTEVSX1NVUFBPUlRTX0hBU19UUklWSUFMX0RFU1RSVUNUT1IgX19o
YXNfZmVhdHVyZShoYXNfdHJpdmlhbF9kZXN0cnVjdG9yKQorI2RlZmluZSBXVEZfQ09NUElMRVJf
U1VQUE9SVFNfQ1hYX1NUUk9OR19FTlVNUyBfX2hhc19mZWF0dXJlKGN4eF9zdHJvbmdfZW51bXMp
CisjZGVmaW5lIFdURl9DT01QSUxFUl9TVVBQT1JUU19DWFhfUkVGRVJFTkNFX1FVQUxJRklFRF9G
VU5DVElPTlMgX19oYXNfZmVhdHVyZShjeHhfcmVmZXJlbmNlX3F1YWxpZmllZF9mdW5jdGlvbnMp
CiAjZW5kaWYKIAogI2lmbmRlZiBDTEFOR19QUkFHTUEK
</data>

          </attachment>
      

    </bug>

</bugzilla>