Make getModRefInfo(Instruction *) not crash on certain types of instructions
[oota-llvm.git] / unittests / Analysis / AliasAnalysisTest.cpp
index 1ba396c1ecae4c7824b15a621e8b292684bd7ef4..66ed4637c7ae5f0408956cc3274d6d0fee7aa4de 100644 (file)
@@ -81,6 +81,13 @@ TEST_F(AliasAnalysisTest, getModRefInfo) {
   auto *Store1 = new StoreInst(Value, Addr, BB);
   auto *Load1 = new LoadInst(Addr, "load", BB);
   auto *Add1 = BinaryOperator::CreateAdd(Value, Value, "add", BB);
+  auto *VAArg1 = new VAArgInst(Addr, PtrType, "vaarg", BB);
+  auto *CmpXChg1 = new AtomicCmpXchgInst(Addr, ConstantInt::get(IntType, 0),
+                                         ConstantInt::get(IntType, 1),
+                                         Monotonic, Monotonic, CrossThread, BB);
+  auto *AtomicRMW =
+      new AtomicRMWInst(AtomicRMWInst::Xchg, Addr, ConstantInt::get(IntType, 1),
+                        Monotonic, CrossThread, BB);
 
   ReturnInst::Create(C, nullptr, BB);
 
@@ -88,6 +95,9 @@ TEST_F(AliasAnalysisTest, getModRefInfo) {
   CheckModRef(Store1, AliasAnalysis::ModRefResult::Mod);
   CheckModRef(Load1, AliasAnalysis::ModRefResult::Ref);
   CheckModRef(Add1, AliasAnalysis::ModRefResult::NoModRef);
+  CheckModRef(VAArg1, AliasAnalysis::ModRefResult::ModRef);
+  CheckModRef(CmpXChg1, AliasAnalysis::ModRefResult::ModRef);
+  CheckModRef(AtomicRMW, AliasAnalysis::ModRefResult::ModRef);
 }
 
 } // end anonymous namspace