The following code should throw an error on the call to split but does not. Instead it compiles to a garbage pipeline that sprays writes all over the place.
#include "Halide.h"
using namespace Halide;
int main(int argc, char **argv) {
Var x;
Func f;
f(x) = 0;
f.split(x, x, x, 16, TailStrategy::RoundUp);
return 0;
}