Mercurial > hg > CbC > CbC_llvm
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) |