Fix build with LLVM trunk
MODIFY
CMakeLists.txt
CMakeLists.txt
@@ -192,6 +192,8 @@ if (BUILD_LLVM_UTILS OR BUILD_TV)
add_library(llvm_util STATIC ${LLVM_UTIL_SRCS})
set(ALIVE_LIBS_LLVM llvm_util ${ALIVE_LIBS})
+ set(LLVM_LINK_COMPONENTS ${LLVM_LINK_COMPONENTS} TargetParser)
+
add_llvm_executable(alive-tv
"tools/alive-tv.cpp"
)

MODIFY
tv/tv.cpp
tv/tv.cpp
@@ -453,15 +453,15 @@ llvm::RegisterPass<TVLegacyPass> X("tv", "Translation Validator", false, false);
const llvm::Module * unwrapModule(llvm::Any IR) {
using namespace llvm;
- if (any_isa<const Module *>(IR))
+ if (any_cast<const Module *>(IR))
return any_cast<const Module *>(IR);
- else if (any_isa<const llvm::Function *>(IR))
+ else if (any_cast<const llvm::Function *>(IR))
return any_cast<const llvm::Function *>(IR)->getParent();
- else if (any_isa<const LazyCallGraph::SCC *>(IR)) {
+ else if (any_cast<const LazyCallGraph::SCC *>(IR)) {
auto C = any_cast<const LazyCallGraph::SCC *>(IR);
assert(C->begin() != C->end()); // there's at least one function
return C->begin()->getFunction().getParent();
- } else if (any_isa<const Loop *>(IR))
+ } else if (any_cast<const Loop *>(IR))
return any_cast<const Loop *>(IR)->getHeader()->getParent()->getParent();
llvm_unreachable("Unknown IR unit");
@@ -731,10 +731,10 @@ llvmGetPassPluginInfo() {
auto fn = [](llvm::StringRef P, llvm::Any IR) {
pass_name = P.str();
if (is_clangtv && !is_clangtv_done) {
- if (any_isa<const llvm::Function*>(IR)) {
+ if (any_cast<const llvm::Function *>(IR)) {
runTVPass(*const_cast<llvm::Function*>(
any_cast<const llvm::Function*>(IR)));
- } else if (any_isa<const llvm::Loop*>(IR)) {
+ } else if (any_cast<const llvm::Loop *>(IR)) {
runTVPass(*const_cast<llvm::Function*>(
any_cast<const llvm::Loop *>(IR)->getHeader()
->getParent()));

Fix build with LLVM trunk (#867)