Index: llvm/trunk/lib/LTO/LTO.cpp =================================================================== --- llvm/trunk/lib/LTO/LTO.cpp +++ llvm/trunk/lib/LTO/LTO.cpp @@ -177,6 +177,7 @@ auto AddUsedThings = [&](GlobalValueSummary *GS) { if (!GS) return; + AddUnsigned(GS->isLive()); for (const ValueInfo &VI : GS->refs()) { AddUnsigned(VI.isDSOLocal()); AddUsedCfiGlobal(VI.getGUID()); Index: llvm/trunk/test/LTO/Resolution/X86/cache-prevailing.ll =================================================================== --- llvm/trunk/test/LTO/Resolution/X86/cache-prevailing.ll +++ llvm/trunk/test/LTO/Resolution/X86/cache-prevailing.ll @@ -0,0 +1,18 @@ +; Tests whether the cache is sensitive to the prevailing bit. +; RUN: rm -rf %t.cache +; RUN: opt -module-hash -module-summary -o %t.bc %s +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache \ +; RUN: -r %t.bc,foo,p -r %t.bc,bar,px +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache \ +; RUN: -r %t.bc,foo, -r %t.bc,bar,px +; RUN: ls %t.cache | count 2 + +target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-pc-windows-msvc19.11.0" + +@foo = linkonce_odr constant i32 1, comdat +$foo = comdat any + +define i32* @bar() { + ret i32* @foo +}