I think we should not try to decipher the exit code here, 1,2,3 might change in the future, or LLVM might add 4, etc. Instead, how about if the return code is not 0, then we raise a more general-sounding exception?

Another question, did you verify the test suite passes with this change? default and other should be enough.