11#include "llvm/ADT/STLExtras.h"
12#include "llvm/ADT/StringRef.h"
13#include "llvm/Support/Allocator.h"
14#include "llvm/Support/ErrorHandling.h"
23 assert(Operands.size() == numOperands(K));
25 assert(numOperands(K) == 0);
26 void *Mem = Alloc.Allocate(
sizeof(
Formula) +
27 Operands.size() *
sizeof(Operands.front()),
35 llvm::copy(Operands,
reinterpret_cast<const Formula **
>(
Result + 1));
55 llvm_unreachable(
"unhandled formula kind");
60 if (
auto It = Names->find(
getAtom()); It != Names->end()) {
65 switch (numOperands(
kind())) {
72 OS << (
literal() ?
"true" :
"false");
75 llvm_unreachable(
"unhandled formula kind");
90 llvm_unreachable(
"unhandled formula arity");
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.
Base class for all values computed by abstract interpretation.
Dataflow Directional Tag Classes.
static llvm::StringLiteral sigil(Formula::Kind K)
@ Result
The result type of a method or function.