#c #llvm #llvm-c -api
Вопрос:
Очень стыдно , что при поиске подписки на массив llvm
я не могу найти никаких конкретных результатов, и большинство ответов на stackoverflow на самом деле являются подсказкой для экспертов, а не решением.
То, что мне нужно, — это как загрузить my_array[my_index]
. Моя версия llvm-10.0.0.
Я ищу решение, работающее как с глобальным, так и с локальным массивом и любым индексом переменных.
llvm::Value * address_of_array = ... llvm::Value * index = ... // a variable index (not a constant index) llvm::LoadInst * loader = ??????
что я должен поставить вместо вопросительных знаков?
Примечание:
Я создаю массив из следующих шагов
llvm::Type * element_type = ... llvm::ArrayType* array_type = llvm::ArrayType::get(element_type, array_length); llvm::AllocaInst * alloc_inst = new llvm::AllocaInst(array_type, 0, "array_name", basic_block);
Комментарии:
1. Вы действительно собираетесь написать патч для LLVM?
2. @sweenish, я не понял твою точку зрения.
3. Я хочу сказать, что если вы не работаете с кодовой базой LLVM, вам, вероятно, не нужны эти значения, относящиеся к LLVM. Просто используйте обычные массивы и/или векторы. Что касается вопроса о том, для чего, в вашем вопросе не хватает деталей и ясности. Если бы вы потратили свою энергию на создание достаточного контекста, вместо того, чтобы оскорблять сообщество, от которого вы пытаетесь получить ответ, вы могли бы добиться большего успеха.
4. @sweenish, я использую llvm для генерации кода компилятора. Не уверен, что вы подразумеваете под обычными массивами/векторами.
5. FWIW, такие языки, как Ruby, Java и C, имеют довольно разные типы массивов, если рассматривать их на уровне детализации компилятора. Я подозреваю, что как только вы поймете, каков ваш тип массива, вы сможете использовать найденные вами «подсказки».