From 1abe60b9be1b7b33e1fa422add5296d392831850 Mon Sep 17 00:00:00 2001 From: Duncan Sands Date: Thu, 11 Sep 2008 15:43:12 +0000 Subject: [PATCH] Intrinsics don't read these kinds of global variables. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56105 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/IPA/GlobalsModRef.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/Analysis/IPA/GlobalsModRef.cpp b/lib/Analysis/IPA/GlobalsModRef.cpp index 70680bfed73..6063a1d16b7 100644 --- a/lib/Analysis/IPA/GlobalsModRef.cpp +++ b/lib/Analysis/IPA/GlobalsModRef.cpp @@ -384,11 +384,13 @@ void GlobalsModRef::AnalyzeCallGraph(CallGraph &CG, Module &M) { // Can't do better than that! } else if (F->onlyReadsMemory()) { FunctionEffect |= Ref; - // This function might call back into the module and read a global, so - // mark all globals read somewhere as being read by this function. - for (std::set::iterator GI = ReadGlobals.begin(), - E = ReadGlobals.end(); GI != E; ++GI) - FR.GlobalInfo[*GI] |= Ref; + if (!F->isIntrinsic()) { + // This function might call back into the module and read a global - + // mark all globals read somewhere as being read by this function. + for (std::set::iterator GI = ReadGlobals.begin(), + E = ReadGlobals.end(); GI != E; ++GI) + FR.GlobalInfo[*GI] |= Ref; + } } else { // Can't say anything useful. KnowNothing = true;