LLVM пересекает IR и ищет все вызовы @ llvm.dbg.declare - PullRequest
0 голосов
/ 08 июня 2018

Я пишу проход LLVM, который загружает число объявленных переменных в ядре openCL.Для этого мне нужно включить информацию об отладке и получить доступ к информации @llvm.dbg.declare.

Я перебираю все инструкции функции и использую шаблон isa<CallInst> для идентификации инструкций вызова.

Теперь есть два случая, у меня может быть либо

call void @llvm.dbg.declare(metadata float addrspace(1)** %4, metadata !20, metadata !DIExpression()), !dbg !21

или

%6 = call i32 @get_global_id(i32 0), !dbg !25

Как можноЯ проверяю, что CallInst имеет метаданные, связанные с ним, то есть он имеет @llvm.dbg.declare внутри, а затем, как извлечь имя объявления переменной (подозреваю, с помощью метода getOperand()?

...