4#include <initializer_list>
7#include "lib/big_int_util.h"
8#include "lib/source_file.h"
19class BaseListExpression;
23class StructExpression;
39const Type_Bits *getBitTypeToFit(
int value);
47const IR::Constant *getMaxValueConstant(
const Type *t,
const Util::SourceInfo &srcInfo = {});
66const IR::Expression *getDefaultValue(
const Type *type,
const Util::SourceInfo &srcInfo = {},
67 bool valueRequired =
false);
71const IR::Constant *convertBoolLiteral(
const IR::BoolLiteral *lit);
77std::vector<const Expression *> flattenStructExpression(
const StructExpression *structExpr);
81std::vector<const Expression *> flattenListExpression(
const BaseListExpression *listExpr);
86std::vector<const Expression *> flattenListOrStructExpression(
const Expression *listLikeExpr);
93big_int getBigIntFromLiteral(
const Literal *);
96int getIntFromLiteral(
const Literal *);
101big_int getMaxBvVal(
const Type *t);
104big_int getMaxBvVal(
int bitWidth);
108big_int getMinBvVal(
const Type *t);
127const IR::Node *inlineBlock(
const Transform &, std::initializer_list<const IR::StatOrDecl *>);
128const IR::Node *inlineBlock(
const Transform &,
const IR::IndexedVector<IR::StatOrDecl> &);
129const IR::Node *inlineBlock(
const Transform &, IR::IndexedVector<IR::StatOrDecl> &&);