The llvm docs for `llvm.cttz.iX(value, flag) specifies that a flag can be passed to control whether zero provides a defined result or not.
Whether std::intrinsics::cttz provides a defined result for zero or not should be specified in the documentation, since if not some code might require if x == 0 { mem::sizeof(x) * 8 } else { std::intrinsics::cttz(x) } to be used (instead of just std::intrinsics::cttz(x)).
See the LLVM documentation: http://llvm.org/docs/LangRef.html#llvm-cttz-intrinsic