Index: include/llvm/LinkAllPasses.h =================================================================== --- include/llvm/LinkAllPasses.h +++ include/llvm/LinkAllPasses.h @@ -46,6 +46,12 @@ #include namespace { + struct BogusRegionPass : public llvm::RegionPass { + explicit BogusRegionPass(char c) : RegionPass(c) {} + bool runOnRegion(llvm::Region *R, llvm::RGPassManager &RGM) override { + return RegionPass::runOnRegion(R, RGM); + } + }; struct ForcePassLinking { ForcePassLinking() { // We must reference the passes in such a way that compilers will not @@ -186,9 +192,9 @@ (void)new llvm::IntervalPartition(); (void)new llvm::ScalarEvolutionWrapperPass(); - ((llvm::Function*)nullptr)->viewCFGOnly(); + llvm::Function::Create(nullptr, llvm::GlobalValue::ExternalLinkage)->viewCFGOnly(); llvm::RGPassManager RGM; - ((llvm::RegionPass*)nullptr)->runOnRegion((llvm::Region*)nullptr, RGM); + (new BogusRegionPass(0))->runOnRegion((llvm::Region*)nullptr, RGM); llvm::AliasSetTracker X(*(llvm::AliasAnalysis*)nullptr); X.add(nullptr, 0, llvm::AAMDNodes()); // for -print-alias-sets (void) llvm::AreStatisticsEnabled();