#include "llvm/Analysis/AssumeBundleQueries.h"
#include "llvm/Analysis/AssumptionCache.h"
#include "llvm/AsmParser/Parser.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Regex.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Transforms/Utils/AssumeBundleBuilder.h"
#include "gtest/gtest.h"
#include <random>
usingnamespacellvm;
namespace llvm {
extern cl::opt<bool> ShouldPreserveAllAttributes;
}
static void RunTest(
StringRef Head, StringRef Tail,
std::vector<std::pair<StringRef, llvm::function_ref<void(Instruction *)>>>
&Tests) { … }
bool hasMatchesExactlyAttributes(AssumeInst *Assume, Value *WasOn,
StringRef AttrToMatch) { … }
bool hasTheRightValue(AssumeInst *Assume, Value *WasOn,
Attribute::AttrKind Kind, unsigned Value) { … }
TEST(AssumeQueryAPI, hasAttributeInAssume) { … }
static bool FindExactlyAttributes(RetainedKnowledgeMap &Map, Value *WasOn,
StringRef AttrToMatch) { … }
static bool MapHasRightValue(RetainedKnowledgeMap &Map, AssumeInst *II,
RetainedKnowledgeKey Key, MinMax MM) { … }
TEST(AssumeQueryAPI, fillMapFromAssume) { … }
static void RunRandTest(uint64_t Seed, int Size, int MinCount, int MaxCount,
unsigned MaxValue) { … }
TEST(AssumeQueryAPI, getKnowledgeFromUseInAssume) { … }
TEST(AssumeQueryAPI, AssumptionCache) { … }
TEST(AssumeQueryAPI, Alignment) { … }