Clang игнорирует __attribute __ ((target ())) - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь скомпилировать атрибут ((target ())) пример с помощью clang, поставляемого с xcode:

//test.cpp
__attribute__((target("arch=atom")))
void foo() {} // will be called on 'atom' processors.
__attribute__((target("default")))
void foo() {} // will be called on any other processors.

int main ()
{
  return 0;
}
clang --version && clang test.cpp

но не получается:

Apple LLVM version 9.1.0 (clang-902.0.39.2)
Target: x86_64-apple-darwin18.5.0
Thread model: posix
InstalledDir: /Applications/Xcode9.4.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
test.cpp:4:6: error: redefinition of 'foo'
void foo() {} // will be called on any other processors.
     ^
test.cpp:2:6: note: previous definition is here
void foo() {} // will be called on 'atom' processors.
     ^
1 error generated.

Когда я пытаюсь скомпилировать этот код с помощью clang binary для osx , он работает!

clang version 8.0.0 (tags/RELEASE_800/final)
Target: x86_64-apple-darwin18.5.0
Thread model: posix
InstalledDir: /Users/oleksii/Downloads/clang+llvm-8.0.0-x86_64-apple-darwin/bin/.

Также это работает, когда я использую онлайн-компиляторы. Я пробовал разные версии XCode, и это просто не работает. Почему поведение отличается?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...