summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/Analysis
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2017-06-07 21:37:39 +0000
committerDavid Blaikie <dblaikie@gmail.com>2017-06-07 21:37:39 +0000
commit7a9b788830da0a426fb0ff0a4cec6d592bb026e9 (patch)
treed32dec96d46960f7c533cbd8f7861d548c713e81 /llvm/unittests/Analysis
parentcecb1121bb0f4d3ae6c3cb4919f7c05fe6ddb330 (diff)
downloadbcm5719-llvm-7a9b788830da0a426fb0ff0a4cec6d592bb026e9.tar.gz
bcm5719-llvm-7a9b788830da0a426fb0ff0a4cec6d592bb026e9.zip
GlobalsModRef: Ensure optnone+readonly/readnone attributes are respected
llvm-svn: 304945
Diffstat (limited to 'llvm/unittests/Analysis')
-rw-r--r--llvm/unittests/Analysis/GlobalsModRefTest.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/llvm/unittests/Analysis/GlobalsModRefTest.cpp b/llvm/unittests/Analysis/GlobalsModRefTest.cpp
index da8b44d273f..323edc2cc17 100644
--- a/llvm/unittests/Analysis/GlobalsModRefTest.cpp
+++ b/llvm/unittests/Analysis/GlobalsModRefTest.cpp
@@ -16,7 +16,13 @@ using namespace llvm;
TEST(GlobalsModRef, OptNone) {
StringRef Assembly = R"(
- define void @f() optnone {
+ define void @f1() optnone {
+ ret void
+ }
+ define void @f2() optnone readnone {
+ ret void
+ }
+ define void @f3() optnone readonly {
ret void
}
)";
@@ -27,9 +33,14 @@ TEST(GlobalsModRef, OptNone) {
ASSERT_TRUE(M) << "Bad assembly?";
const auto &funcs = M->functions();
- ASSERT_NE(funcs.begin(), funcs.end());
- EXPECT_EQ(std::next(funcs.begin()), funcs.end());
- const Function &F = *funcs.begin();
+ auto I = funcs.begin();
+ ASSERT_NE(I, funcs.end());
+ const Function &F1 = *I;
+ ASSERT_NE(++I, funcs.end());
+ const Function &F2 = *I;
+ ASSERT_NE(++I, funcs.end());
+ const Function &F3 = *I;
+ EXPECT_EQ(++I, funcs.end());
Triple Trip(M->getTargetTriple());
TargetLibraryInfoImpl TLII(Trip);
@@ -37,5 +48,8 @@ TEST(GlobalsModRef, OptNone) {
llvm::CallGraph CG(*M);
auto AAR = GlobalsAAResult::analyzeModule(*M, TLI, CG);
- EXPECT_EQ(FMRB_UnknownModRefBehavior, AAR.getModRefBehavior(&F));
+
+ EXPECT_EQ(FMRB_UnknownModRefBehavior, AAR.getModRefBehavior(&F1));
+ EXPECT_EQ(FMRB_DoesNotAccessMemory, AAR.getModRefBehavior(&F2));
+ EXPECT_EQ(FMRB_OnlyReadsMemory, AAR.getModRefBehavior(&F3));
}
OpenPOWER on IntegriCloud