<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 - Please support #pragma clang target"
   href="https://bugs.llvm.org/show_bug.cgi?id=34661">34661</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Please support #pragma clang target
          </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>Windows NT
          </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>myriachan@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>dgregor@apple.com, llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>If you want to write an application that automatically uses extended intrinsics
if the processor supports them, you have to compile multiple source files with
differing target command-line options.  This works at a basic level.

There's one major problem, though: if you have inline or template functions in
header files, the compiler will be free to generate code using the extended
features for these functions.  If you're unlucky at link time, the linker will
choose the copy of these functions that use the extended processor features,
causing a crash when they don't exist.

GCC solves this by having pragmas (using the "basic" x86-64 as an example):

#pragma GCC push_options
#pragma GCC target "arch=k8"
#include "MyHeader.h"
#pragma GCC pop_options

Could a #pragma clang target be added for similar purposes?</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>