Skip to content

Commit b1d9854

Browse files
committed
add assert to builder
1 parent 7e28c7d commit b1d9854

3 files changed

Lines changed: 23 additions & 0 deletions

File tree

taichi/ir/ir_builder.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,12 @@ ContinueStmt *IRBuilder::create_continue() {
129129
return insert(Stmt::make_typed<ContinueStmt>());
130130
}
131131

132+
void IRBuilder::create_assert(Stmt *cond, const std::string &msg) {
133+
std::vector<Stmt *> empty_args;
134+
auto assert_stmt = Stmt::make_typed<AssertStmt>(cond, msg, empty_args);
135+
insert(std::move(assert_stmt));
136+
}
137+
132138
FuncCallStmt *IRBuilder::create_func_call(Function *func,
133139
const std::vector<Stmt *> &args) {
134140
return insert(Stmt::make_typed<FuncCallStmt>(func, args));

taichi/ir/ir_builder.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ class IRBuilder {
121121
IfStmt *create_if(Stmt *cond);
122122
WhileControlStmt *create_break();
123123
ContinueStmt *create_continue();
124+
void create_assert(Stmt *cond, const std::string &msg);
124125

125126
// Function.
126127
FuncCallStmt *create_func_call(Function *func,

tests/cpp/ir/ir_builder_test.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,22 @@ TEST(IRBuilder, Bool) {
2929
)");
3030
}
3131

32+
TEST(IRBuilder, Assert) {
33+
IRBuilder builder;
34+
auto *bool_true = builder.get_bool(true);
35+
builder.create_assert(bool_true, "assertion failed");
36+
auto block = builder.extract_ir();
37+
38+
auto print = irpass::make_pass_printer(true, true, "", bool_true);
39+
std::string ir_string;
40+
irpass::print(block->get_ir_root(), &ir_string);
41+
EXPECT_STREQ(ir_string.c_str(),
42+
"kernel {\n"
43+
" <u1> $0 = const true\n"
44+
" 1 : assert $0, \"assertion failed\"\n"
45+
"}\n");
46+
}
47+
3248
TEST(IRBuilder, Basic) {
3349
IRBuilder builder;
3450
auto *lhs = builder.get_int32(40);

0 commit comments

Comments
 (0)