comparison llvm/unittests/Analysis/AliasAnalysisTest.cpp @ 252:1f2b6ac9f198 llvm-original

LLVM16-1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Aug 2023 09:04:13 +0900
parents c4bab56944e8
children
comparison
equal deleted inserted replaced
237:c80f45b162ad 252:1f2b6ac9f198
83 : AAResultBase(std::move(Arg)), CB(std::move(Arg.CB)) {} 83 : AAResultBase(std::move(Arg)), CB(std::move(Arg.CB)) {}
84 84
85 bool invalidate(Function &, const PreservedAnalyses &) { return false; } 85 bool invalidate(Function &, const PreservedAnalyses &) { return false; }
86 86
87 AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB, 87 AliasResult alias(const MemoryLocation &LocA, const MemoryLocation &LocB,
88 AAQueryInfo &AAQI) { 88 AAQueryInfo &AAQI, const Instruction *) {
89 CB(); 89 CB();
90 return AliasResult::MayAlias; 90 return AliasResult::MayAlias;
91 } 91 }
92 }; 92 };
93 } 93 }
167 FunctionType *FTy = 167 FunctionType *FTy =
168 FunctionType::get(Type::getVoidTy(C), std::vector<Type *>(), false); 168 FunctionType::get(Type::getVoidTy(C), std::vector<Type *>(), false);
169 auto *F = Function::Create(FTy, Function::ExternalLinkage, "f", M); 169 auto *F = Function::Create(FTy, Function::ExternalLinkage, "f", M);
170 auto *BB = BasicBlock::Create(C, "entry", F); 170 auto *BB = BasicBlock::Create(C, "entry", F);
171 auto IntType = Type::getInt32Ty(C); 171 auto IntType = Type::getInt32Ty(C);
172 auto PtrType = Type::getInt32PtrTy(C); 172 auto PtrType = PointerType::get(C, 0);
173 auto *Value = ConstantInt::get(IntType, 42); 173 auto *Value = ConstantInt::get(IntType, 42);
174 auto *Addr = ConstantPointerNull::get(PtrType); 174 auto *Addr = ConstantPointerNull::get(PtrType);
175 auto Alignment = Align(IntType->getBitWidth() / 8); 175 auto Alignment = Align(IntType->getBitWidth() / 8);
176 176
177 auto *Store1 = new StoreInst(Value, Addr, BB); 177 auto *Store1 = new StoreInst(Value, Addr, BB);
190 190
191 auto &AA = getAAResults(*F); 191 auto &AA = getAAResults(*F);
192 192
193 // Check basic results 193 // Check basic results
194 EXPECT_EQ(AA.getModRefInfo(Store1, MemoryLocation()), ModRefInfo::Mod); 194 EXPECT_EQ(AA.getModRefInfo(Store1, MemoryLocation()), ModRefInfo::Mod);
195 EXPECT_EQ(AA.getModRefInfo(Store1, None), ModRefInfo::Mod); 195 EXPECT_EQ(AA.getModRefInfo(Store1, std::nullopt), ModRefInfo::Mod);
196 EXPECT_EQ(AA.getModRefInfo(Load1, MemoryLocation()), ModRefInfo::Ref); 196 EXPECT_EQ(AA.getModRefInfo(Load1, MemoryLocation()), ModRefInfo::Ref);
197 EXPECT_EQ(AA.getModRefInfo(Load1, None), ModRefInfo::Ref); 197 EXPECT_EQ(AA.getModRefInfo(Load1, std::nullopt), ModRefInfo::Ref);
198 EXPECT_EQ(AA.getModRefInfo(Add1, MemoryLocation()), ModRefInfo::NoModRef); 198 EXPECT_EQ(AA.getModRefInfo(Add1, MemoryLocation()), ModRefInfo::NoModRef);
199 EXPECT_EQ(AA.getModRefInfo(Add1, None), ModRefInfo::NoModRef); 199 EXPECT_EQ(AA.getModRefInfo(Add1, std::nullopt), ModRefInfo::NoModRef);
200 EXPECT_EQ(AA.getModRefInfo(VAArg1, MemoryLocation()), ModRefInfo::ModRef); 200 EXPECT_EQ(AA.getModRefInfo(VAArg1, MemoryLocation()), ModRefInfo::ModRef);
201 EXPECT_EQ(AA.getModRefInfo(VAArg1, None), ModRefInfo::ModRef); 201 EXPECT_EQ(AA.getModRefInfo(VAArg1, std::nullopt), ModRefInfo::ModRef);
202 EXPECT_EQ(AA.getModRefInfo(CmpXChg1, MemoryLocation()), ModRefInfo::ModRef); 202 EXPECT_EQ(AA.getModRefInfo(CmpXChg1, MemoryLocation()), ModRefInfo::ModRef);
203 EXPECT_EQ(AA.getModRefInfo(CmpXChg1, None), ModRefInfo::ModRef); 203 EXPECT_EQ(AA.getModRefInfo(CmpXChg1, std::nullopt), ModRefInfo::ModRef);
204 EXPECT_EQ(AA.getModRefInfo(AtomicRMW, MemoryLocation()), ModRefInfo::ModRef); 204 EXPECT_EQ(AA.getModRefInfo(AtomicRMW, MemoryLocation()), ModRefInfo::ModRef);
205 EXPECT_EQ(AA.getModRefInfo(AtomicRMW, None), ModRefInfo::ModRef); 205 EXPECT_EQ(AA.getModRefInfo(AtomicRMW, std::nullopt), ModRefInfo::ModRef);
206 } 206 }
207 207
208 static Instruction *getInstructionByName(Function &F, StringRef Name) { 208 static Instruction *getInstructionByName(Function &F, StringRef Name) {
209 for (auto &I : instructions(F)) 209 for (auto &I : instructions(F))
210 if (I.getName() == Name) 210 if (I.getName() == Name)