LLVM MDNode наследование - PullRequest
       8

LLVM MDNode наследование

0 голосов
/ 09 октября 2019

Мне нужно создать DIVariable из существующего MDNode.

Согласно документации , DIVariable наследуется от MDNode. Но прямая попытка создания дает ошибку:

error: no matching constructor for initialization of 'llvm::DIVariable'
                  DIVariable newDIVar(*newMDNode);
                             ^        ~~~~~~~~~~
/root/llvm-7.0.0/include/llvm/IR/DebugInfoMetadata.h:2193:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'llvm::MDNode' to 'const llvm::DIVariable' for 1st
      argument
class DIVariable : public DINode {

Я попытался перейти на один уровень дальше и создать DINode из MDNode, чтобы посмотреть, работает ли это, что дает похожую ошибку:

error: no matching constructor for initialization of 'llvm::DINode'
                  DINode newDINode(*newMDNode);
                         ^         ~~~~~~~~~~
/root/llvm-7.0.0/include/llvm/IR/DebugInfoMetadata.h:155:7: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'llvm::MDNode' to 'const llvm::DINode' for 1st
      argument
class DINode : public MDNode {

Эта ошибка не имеет смысла для меня. Как класс, который наследуется от другого, не конвертируется в него неявным образом?

1 Ответ

0 голосов
/ 09 октября 2019

Нашел ответ для любого, кто ищет в будущем.

В r234255 было удалено много неявных конструкторов копирования в пользу cast <>, isa <> и dyn_cast <> .

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