나는 llvm :: Value를 가지고 있습니다. 값 : 덤프(),LLVM : 사용 된 유형을 찾는 방법은 무엇입니까?
보통void (...)* bitcast (void()* @test_impl to void (...)*)
나는 이것이 BitCastOperator이라고 가정 것이다, 그러나,이 클래스는 내가 사용하고 LLVM 3.4.2 (존재하지 않는 것 인쇄 도구 중 하나 때문에 I 와 함께 일하는 것은 아직 새로운 버전으로 이식되지 않았다).
Value의 하위 클래스는 무엇입니까? 그리고 앞으로 이러한 질문에 어떻게 대답 할 수 있습니까? 나는 시도했다 :
- lldb로 디버깅. 이 클래스는 최상위 클래스 만 알 수 있습니다.
- rtti 정보에 액세스 중입니다. LLVM은 typeid()와 호환되지 않으며 typeid()와 동등한 자체 RTTI 시스템을 갖고있는 것 같습니다.
- C++ API 코드로 컴파일하면이 값을 만드는 방법을 알 수 있으며이 형식을 볼 수 있습니다. 그러나 llc -march = cpp는 모호한 오류 (잘못된 기본 유형)로 실패하고 clang -march = cpp는이 아키텍처를 알 수 없다고 말합니다. 나는 clang --version과 llc --version이 같은 버전 번호를 부여한다는 것을 확인했다.
- dyn_cast가 작동하지 않기 때문에 BitCastInst가 아닌 것으로 확인되었습니다. 이 값의 어떤 서브 클래스