diff options
Diffstat (limited to 'llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp')
| -rw-r--r-- | llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp | 19 | 
1 files changed, 8 insertions, 11 deletions
| diff --git a/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp b/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp index ab6f0eb660f..6b6dd6194e1 100644 --- a/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp +++ b/llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp @@ -1563,23 +1563,20 @@ void DevirtModule::removeRedundantTypeTests() {  }  bool DevirtModule::run() { +  // If only some of the modules were split, we cannot correctly perform +  // this transformation. We already checked for the presense of type tests +  // with partially split modules during the thin link, and would have emitted +  // an error if any were found, so here we can simply return. +  if ((ExportSummary && ExportSummary->partiallySplitLTOUnits()) || +      (ImportSummary && ImportSummary->partiallySplitLTOUnits())) +    return false; +    Function *TypeTestFunc =        M.getFunction(Intrinsic::getName(Intrinsic::type_test));    Function *TypeCheckedLoadFunc =        M.getFunction(Intrinsic::getName(Intrinsic::type_checked_load));    Function *AssumeFunc = M.getFunction(Intrinsic::getName(Intrinsic::assume)); -  // If only some of the modules were split, we cannot correctly handle -  // code that contains type tests or type checked loads. -  if ((ExportSummary && ExportSummary->partiallySplitLTOUnits()) || -      (ImportSummary && ImportSummary->partiallySplitLTOUnits())) { -    if ((TypeTestFunc && !TypeTestFunc->use_empty()) || -        (TypeCheckedLoadFunc && !TypeCheckedLoadFunc->use_empty())) -      report_fatal_error("inconsistent LTO Unit splitting with llvm.type.test " -                         "or llvm.type.checked.load"); -    return false; -  } -    // Normally if there are no users of the devirtualization intrinsics in the    // module, this pass has nothing to do. But if we are exporting, we also need    // to handle any users that appear only in the function summaries. | 

