Intrinsics don't touch internal global variables
(unless passed one via a parameter), even if they
are IntrWriteMem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56115 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Analysis/IPA/GlobalsModRef.cpp b/lib/Analysis/IPA/GlobalsModRef.cpp
index 6063a1d..6736e6f 100644
--- a/lib/Analysis/IPA/GlobalsModRef.cpp
+++ b/lib/Analysis/IPA/GlobalsModRef.cpp
@@ -392,8 +392,10 @@
FR.GlobalInfo[*GI] |= Ref;
}
} else {
- // Can't say anything useful.
- KnowNothing = true;
+ FunctionEffect |= ModRef;
+ // Can't say anything useful unless it's an intrinsic - they don't
+ // read or write global variables of the kind considered here.
+ KnowNothing = !F->isIntrinsic();
}
continue;
}