[PATCH] D153618: [AA] use AsmParser on a unittest(NFC)

Kohei Asano via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 23 02:18:11 PDT 2023


khei4 created this revision.
Herald added a subscriber: jeroen.dobbelaere.
Herald added a project: All.
khei4 requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Use AsmParser on some IR handwritten construction.


https://reviews.llvm.org/D153618

Files:
  llvm/unittests/Analysis/AliasAnalysisTest.cpp


Index: llvm/unittests/Analysis/AliasAnalysisTest.cpp
===================================================================
--- llvm/unittests/Analysis/AliasAnalysisTest.cpp
+++ llvm/unittests/Analysis/AliasAnalysisTest.cpp
@@ -162,56 +162,55 @@
   }
 };
 
+static Instruction *getInstructionByName(Function &F, StringRef Name) {
+  for (auto &I : instructions(F))
+    if (I.getName() == Name)
+      return &I;
+  llvm_unreachable("Expected to find instruction!");
+}
+
 TEST_F(AliasAnalysisTest, getModRefInfo) {
   // Setup function.
-  FunctionType *FTy =
-      FunctionType::get(Type::getVoidTy(C), std::vector<Type *>(), false);
-  auto *F = Function::Create(FTy, Function::ExternalLinkage, "f", M);
-  auto *BB = BasicBlock::Create(C, "entry", F);
-  auto IntType = Type::getInt32Ty(C);
-  auto PtrType = Type::getInt32PtrTy(C);
-  auto *Value = ConstantInt::get(IntType, 42);
-  auto *Addr = ConstantPointerNull::get(PtrType);
-  auto Alignment = Align(IntType->getBitWidth() / 8);
-
-  auto *Store1 = new StoreInst(Value, Addr, BB);
-  auto *Load1 = new LoadInst(IntType, 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),
-      Alignment, AtomicOrdering::Monotonic, AtomicOrdering::Monotonic,
-      SyncScope::System, BB);
-  auto *AtomicRMW = new AtomicRMWInst(
-      AtomicRMWInst::Xchg, Addr, ConstantInt::get(IntType, 1), Alignment,
-      AtomicOrdering::Monotonic, SyncScope::System, BB);
-
-  ReturnInst::Create(C, nullptr, BB);
+  LLVMContext C;
+  SMDiagnostic Err;
+  std::unique_ptr<Module> M = parseAssemblyString(R"(
+    define void @f() {
+    entry:
+      store i32 42, ptr null, align 4
+      %load = load i32, ptr null, align 4
+      %add = add i32 42, 42
+      %vaarg = va_arg ptr null, ptr
+      %cmpxchg = cmpxchg ptr null, i32 0, i32 1 monotonic monotonic, align 4
+      %atomicrmw = atomicrmw xchg ptr null, i32 1 monotonic, align 4
+      ret void
+    }
+  )",
+                                                  Err, C);
+  Function *F = M->getFunction("f");
+  Instruction *Store = &*inst_begin(F);
+  Instruction *Load = getInstructionByName(*F, "load");
+  Instruction *Add = getInstructionByName(*F, "add");
+  Instruction *VAArg = getInstructionByName(*F, "vaarg");
+  Instruction *CmpXChg = getInstructionByName(*F, "cmpxchg");
+  Instruction *AtomicRMW = getInstructionByName(*F, "atomicrmw");
 
   auto &AA = getAAResults(*F);
 
   // Check basic results
-  EXPECT_EQ(AA.getModRefInfo(Store1, MemoryLocation()), ModRefInfo::Mod);
-  EXPECT_EQ(AA.getModRefInfo(Store1, std::nullopt), ModRefInfo::Mod);
-  EXPECT_EQ(AA.getModRefInfo(Load1, MemoryLocation()), ModRefInfo::Ref);
-  EXPECT_EQ(AA.getModRefInfo(Load1, std::nullopt), ModRefInfo::Ref);
-  EXPECT_EQ(AA.getModRefInfo(Add1, MemoryLocation()), ModRefInfo::NoModRef);
-  EXPECT_EQ(AA.getModRefInfo(Add1, std::nullopt), ModRefInfo::NoModRef);
-  EXPECT_EQ(AA.getModRefInfo(VAArg1, MemoryLocation()), ModRefInfo::ModRef);
-  EXPECT_EQ(AA.getModRefInfo(VAArg1, std::nullopt), ModRefInfo::ModRef);
-  EXPECT_EQ(AA.getModRefInfo(CmpXChg1, MemoryLocation()), ModRefInfo::ModRef);
-  EXPECT_EQ(AA.getModRefInfo(CmpXChg1, std::nullopt), ModRefInfo::ModRef);
+  EXPECT_EQ(AA.getModRefInfo(Store, MemoryLocation()), ModRefInfo::Mod);
+  EXPECT_EQ(AA.getModRefInfo(Store, std::nullopt), ModRefInfo::Mod);
+  EXPECT_EQ(AA.getModRefInfo(Load, MemoryLocation()), ModRefInfo::Ref);
+  EXPECT_EQ(AA.getModRefInfo(Load, std::nullopt), ModRefInfo::Ref);
+  EXPECT_EQ(AA.getModRefInfo(Add, MemoryLocation()), ModRefInfo::NoModRef);
+  EXPECT_EQ(AA.getModRefInfo(Add, std::nullopt), ModRefInfo::NoModRef);
+  EXPECT_EQ(AA.getModRefInfo(VAArg, MemoryLocation()), ModRefInfo::ModRef);
+  EXPECT_EQ(AA.getModRefInfo(VAArg, std::nullopt), ModRefInfo::ModRef);
+  EXPECT_EQ(AA.getModRefInfo(CmpXChg, MemoryLocation()), ModRefInfo::ModRef);
+  EXPECT_EQ(AA.getModRefInfo(CmpXChg, std::nullopt), ModRefInfo::ModRef);
   EXPECT_EQ(AA.getModRefInfo(AtomicRMW, MemoryLocation()), ModRefInfo::ModRef);
   EXPECT_EQ(AA.getModRefInfo(AtomicRMW, std::nullopt), ModRefInfo::ModRef);
 }
 
-static Instruction *getInstructionByName(Function &F, StringRef Name) {
-  for (auto &I : instructions(F))
-    if (I.getName() == Name)
-      return &I;
-  llvm_unreachable("Expected to find instruction!");
-}
-
 TEST_F(AliasAnalysisTest, BatchAAPhiCycles) {
   LLVMContext C;
   SMDiagnostic Err;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D153618.533903.patch
Type: text/x-patch
Size: 4573 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230623/925a1c4e/attachment.bin>


More information about the llvm-commits mailing list