2015-12-20 10 views
1

У меня есть вопрос ..Классифицировать static_cast и dynamic_cast в ИК-код

На уровне ИК-LLVM, есть ли способ существовать различие между static_cast и dynamic_cast?

Если да, как проверить его с помощью команд на уровне IR?

Я знаю, что на уровне clang существует некоторый метод, который уже существует, как показано ниже. - http://clang.llvm.org/doxygen/classclang_1_1CXXNamedCastExpr.html

Не могли бы вы дать мне ценный справочник?

Большое спасибо :)

ответ

2

No. LLVM IR не представляет static_cast, dynamic_cast, или любого такого C++ конструкции на уровне исходного кода. Даже ABI-специфические подсказки могут не всегда присутствовать, например, Itanium при некоторых обстоятельствах не вызывает вызовы функции выполнения.

+0

Итак .. Есть ли способ различать static_cast и dynamic_cast? Должен ли я что-то делать только на уровне clang? – Zzingco

+0

Вы можете сделать обоснованное предположение, но оно никогда не будет на 100% точным. Если вам нужно знать о семантике исходного кода на C++, вы должны * иметь дело с Clang, а не с LLVM. – Puppy

+0

Хорошо, я вижу, спасибо за ваш комментарий :) – Zzingco