У меня есть программа, которая отлично работает, когда я запускаю ее с использованием C ++, однако, когда я вызываю ее из моего кода LLVM IR, она не работает.
Функция (library / library.cpp)
extern "C" DLLEXPORT double *DOT(double A[3][3], double B[3][3]) {
std::cout << A[0][0] << std::endl;
...
}
LLVM IR (out.ll)
declare [3 x double] @DOT([3 x [3 x double]], [3 x [3 x double]])
...
%a1 = load [3 x [3 x double]], [3 x [3 x double]]* %a
%b2 = load [3 x [3 x double]], [3 x [3 x double]]* %b
%calltmp = call [3 x double] @DOT([3 x [3 x double]] %a1, [3 x [3 x double]] %b2)
Я не включил полную программу для экономии места, но, если это полезно, просто спросите, и я обновлю вопрос.
Ошибка (встроенная)
[1] 3086 segmentation fault ./built
Я использую следующую команду для компиляции кода:
clang++ library/library.cpp out.ll -o built
Информация
Это работает:
std::cout << A[0] << std::endl; // 0x1
Это не:
std::cout << A[0][0] << std::endl;