<html>
    <head>
      <base href="http://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - Rejects friend function due to language linkage"
   href="http://llvm.org/bugs/show_bug.cgi?id=17337">17337</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Rejects friend function due to language linkage
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>C++
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>alp@nuanti.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>dgregor@apple.com, llvmbugs@cs.uiuc.edu
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>These two cases broke when r181163 started using lexical DC to check for
language linkage.

The lexical approach to linkage specs in clang seems to be at odds with the
language ref resulting in a lot of bugs like this.

<a href="http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130429/079224.html">http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130429/079224.html</a>


namespace test16b {
  extern "C++" {
    class Foo;
    extern "C" int bar(Foo *y);
    class Foo {
      int x;
      friend int bar(Foo *y);
    };
    extern "C" int bar(Foo *y) {
      return y->x;
    }
  }
}

namespace test16c {
  extern "C" {
    class Foo;
    extern "C++" int bar(Foo *y);
    class Foo {
      int x;
      friend int bar(Foo *y);
    };
    extern "C++" int bar(Foo *y) {
      return y->x;
    }
  }
}</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>