<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><span class="vcard"><a class="email" href="mailto:richard-llvm@metafoo.co.uk" title="Richard Smith <richard-llvm@metafoo.co.uk>"> <span class="fn">Richard Smith</span></a>
</span> changed
              <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED DUPLICATE - 'this' pointer incorrectly qualified inside of __restrict class member function"
   href="http://llvm.org/bugs/show_bug.cgi?id=17793">bug 17793</a>
        <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>NEW
           </td>
           <td>RESOLVED
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">Resolution</td>
           <td>---
           </td>
           <td>DUPLICATE
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED DUPLICATE - 'this' pointer incorrectly qualified inside of __restrict class member function"
   href="http://llvm.org/bugs/show_bug.cgi?id=17793#c2">Comment # 2</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED DUPLICATE - 'this' pointer incorrectly qualified inside of __restrict class member function"
   href="http://llvm.org/bugs/show_bug.cgi?id=17793">bug 17793</a>
              from <span class="vcard"><a class="email" href="mailto:richard-llvm@metafoo.co.uk" title="Richard Smith <richard-llvm@metafoo.co.uk>"> <span class="fn">Richard Smith</span></a>
</span></b>
        <pre>Yup, it's the exact same thing. A more direct way to see the bug than either
testcase we have so far:

struct S {
  void f() __restrict {
    using T = decltype(this);
    using T = S *__restrict;
  }
};

Somewhat amusingly, decltype(this) is '__restrict S *' under clang, 'S
*__restrict' under gcc, and 'S *' under EDG. It's not obvious who's right here
(do 'restrict' qualifiers get dropped like cv-qualifiers when they apply to
rvalues?) but EDG's behavior seems more consistent with our behavior on
'restrict' elsewhere.

*** This bug has been marked as a duplicate of <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - member function `void foo() __restrict__;` incorrectly applies restrict to type, not pointer"
   href="show_bug.cgi?id=17747">bug 17747</a> ***</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>