diff --git a/python_bindings/halide/test/correctness/basics.py b/python_bindings/halide/test/correctness/basics.py index 15bc76087e77..e1853eb05c52 100644 --- a/python_bindings/halide/test/correctness/basics.py +++ b/python_bindings/halide/test/correctness/basics.py @@ -410,12 +410,13 @@ def test_requirements(): delta.set(1) p.realize([10]) - with assert_throws(hl.HalideError, r"Requirement Failed: \(false\)"): + with assert_throws(hl.HalideError, r"Requirement Failed: \(\(delta != 0\)\)"): delta.set(0) p.realize([10]) with assert_throws( - hl.HalideError, r"Requirement Failed: \(false\) negative values are bad -1" + hl.HalideError, + r"Requirement Failed: \(\(delta > 0\)\) negative values are bad -1", ): delta.set(-1) p.realize([10]) diff --git a/src/IROperator.cpp b/src/IROperator.cpp index 996c9eb4a469..710883026201 100644 --- a/src/IROperator.cpp +++ b/src/IROperator.cpp @@ -1283,10 +1283,12 @@ Expr unwrap_tags(const Expr &e) { return e; } -Expr requirement_failed_error(Expr condition, const std::vector &args) { +Expr requirement_failed_error(const Expr &condition, const std::vector &args) { + std::stringstream cond_str; + cond_str << condition; return Call::make(Int(32), "halide_error_requirement_failed", - {stringify({std::move(condition)}), combine_strings(args)}, + {cond_str.str(), combine_strings(args)}, Call::Extern); } diff --git a/src/IROperator.h b/src/IROperator.h index a8fc33f291a9..6489a580e106 100644 --- a/src/IROperator.h +++ b/src/IROperator.h @@ -411,7 +411,7 @@ inline HALIDE_NO_USER_CODE_INLINE void collect_print_args(std::vector &arg collect_print_args(args, std::forward(more_args)...); } -Expr requirement_failed_error(Expr condition, const std::vector &args); +Expr requirement_failed_error(const Expr &condition, const std::vector &args); Expr memoize_tag_helper(Expr result, const std::vector &cache_key_values);