<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </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 - Function multiversioning doesn't support function templates"
   href="https://bugs.llvm.org/show_bug.cgi?id=41613">41613</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Function multiversioning doesn't support function templates
          </td>
        </tr>

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

        <tr>
          <th>Version</th>
          <td>8.0
          </td>
        </tr>

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

        <tr>
          <th>OS</th>
          <td>Linux
          </td>
        </tr>

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

        <tr>
          <th>Severity</th>
          <td>enhancement
          </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>nheart@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>blitzrakete@gmail.com, dgregor@apple.com, erik.pilkington@gmail.com, llvm-bugs@lists.llvm.org, richard-llvm@metafoo.co.uk
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Created <span class=""><a href="attachment.cgi?id=21825" name="attach_21825" title="Templated function multiversioning">attachment 21825</a> <a href="attachment.cgi?id=21825&action=edit" title="Templated function multiversioning">[details]</a></span>
Templated function multiversioning

Hey,

Function multiversioning doesn't seem to support function templates. AFAIK
there was some discussion about it where function templates were left out of
the implementation as it didn't work in gcc back then:
<a href="https://reviews.llvm.org/D51650">https://reviews.llvm.org/D51650</a>

The example code attached fails to compile with:

clang++ test.cpp 
test.cpp:7:39: error: attribute 'target' multiversioned functions do not yet
      support function templates
__attribute__ ((target("default"))) T foo(T num) {
                                      ^

To be fair, GCC still doesn't do that (yet) but I have opened a bug report over
there as well: <a href="https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90260">https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90260</a>

Are there plans to support this?

Cheers,

Nick</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>