From e122d6885af0cf0c990867c2c3fc6a9877510fe0 Mon Sep 17 00:00:00 2001 From: Davide Italiano Date: Wed, 22 Feb 2017 18:53:38 +0000 Subject: [ModuleSummaryAnalysis] Don't crash when referencing unnamed globals. Instead, just be conservative as these are unfrequent enough. Thanks to Peter Collingbourne for the discussion about this on IRC. llvm-svn: 295861 --- llvm/lib/Analysis/ModuleSummaryAnalysis.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'llvm/lib/Analysis/ModuleSummaryAnalysis.cpp') diff --git a/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp b/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp index 70b55674c07..950b8987c5b 100644 --- a/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp +++ b/llvm/lib/Analysis/ModuleSummaryAnalysis.cpp @@ -447,6 +447,12 @@ ModuleSummaryIndex llvm::buildModuleSummaryIndex( auto &Summary = GlobalList.second[0]; bool AllRefsCanBeExternallyReferenced = llvm::all_of(Summary->refs(), [&](const ValueInfo &VI) { + // If a global value definition references an unnamed global, + // be conservative. They're valid IR so we don't want to crash + // when we encounter any of them but they're infrequent enough + // that we don't bother optimizing them. + if (!VI.getValue()->hasName()) + return false; return !CantBePromoted.count(VI.getValue()->getGUID()); }); if (!AllRefsCanBeExternallyReferenced) { -- cgit v1.2.3