Author: pcc Date: Thu May 4 13:03:25 2017 New Revision: 302176 URL: http://llvm.org/viewvc/llvm-project?rev=302176&view=rev Log: Re-apply r302108, "IR: Use pointers instead of GUIDs to represent edges in the module summary. NFCI." with a fix for the clang backend.
Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp cfe/trunk/test/CodeGen/thinlto_backend.ll Modified: cfe/trunk/lib/CodeGen/BackendUtil.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/BackendUtil.cpp?rev=302176&r1=302175&r2=302176&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/BackendUtil.cpp (original) +++ cfe/trunk/lib/CodeGen/BackendUtil.cpp Thu May 4 13:03:25 2017 @@ -974,10 +974,14 @@ static void runThinLTOBackend(ModuleSumm // via a WriteIndexesThinBackend. FunctionImporter::ImportMapTy ImportList; for (auto &GlobalList : *CombinedIndex) { + // Ignore entries for undefined references. + if (GlobalList.second.SummaryList.empty()) + continue; + auto GUID = GlobalList.first; - assert(GlobalList.second.size() == 1 && + assert(GlobalList.second.SummaryList.size() == 1 && "Expected individual combined index to have one summary per GUID"); - auto &Summary = GlobalList.second[0]; + auto &Summary = GlobalList.second.SummaryList[0]; // Skip the summaries for the importing module. These are included to // e.g. record required linkage changes. if (Summary->modulePath() == M->getModuleIdentifier()) Modified: cfe/trunk/test/CodeGen/thinlto_backend.ll URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/thinlto_backend.ll?rev=302176&r1=302175&r2=302176&view=diff ============================================================================== --- cfe/trunk/test/CodeGen/thinlto_backend.ll (original) +++ cfe/trunk/test/CodeGen/thinlto_backend.ll Thu May 4 13:03:25 2017 @@ -35,8 +35,12 @@ target datalayout = "e-m:e-i64:64-f80:12 target triple = "x86_64-unknown-linux-gnu" declare void @f2() +declare i8* @f3() define void @f1() { call void @f2() + ; Make sure that the backend can handle undefined references. + ; Do an indirect call so that the undefined ref shows up in the combined index. + call void bitcast (i8*()* @f3 to void()*)() ret void } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits