откуда берется llvm.memcpy.p0i8.p0i8.i64 - PullRequest
0 голосов
/ 22 марта 2019

Я тестирую Clang и компилирую простой C-файл, включая struct asigning. Когда я вижу код LLVM, появляется llvm.memcpy.p0i8.p0i8.i64, откуда? Я не вижу определения, только вижу его как функцию.

1 Ответ

1 голос
/ 22 марта 2019

Это встроенная функция LLVM.Согласно справочному языку:

LLVM предоставляет встроенные функции для нескольких важных стандартных функций библиотеки C.Эти встроенные функции позволяют интерфейсам исходного языка передавать информацию о выравнивании аргументов указателя генератору кода, предоставляя возможность для более эффективной генерации кода.

В частности, llvm.memcpy присваивает:

Встроенные функции 'llvm.memcpy. *' Копируют блок памяти из исходного местоположения в местоположение назначения.

Обратите внимание, что, в отличие от стандартной функции libc, llvm.memcpy.* intrinsics не возвращает значение, принимает дополнительные изменчивые аргументы, а указатели могут быть в указанных адресных пространствах.

...