X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=utils%2Fnot%2Fnot.cpp;h=a5c7183bd2c9b019c07eadd4f5e5abfe80c31d85;hb=f3b62dfcb2d7b864334bc089a2de2dac97f8a0b2;hp=af942500186474bb390347ef053c1ed6d5b49e23;hpb=94afbc661f81a99db036683bb12ea50cdcf8d27b;p=oota-llvm.git diff --git a/utils/not/not.cpp b/utils/not/not.cpp index af942500186..a5c7183bd2c 100644 --- a/utils/not/not.cpp +++ b/utils/not/not.cpp @@ -33,10 +33,11 @@ int main(int argc, const char **argv) { int Result = sys::ExecuteAndWait(Program, argv, nullptr, nullptr, 0, 0, &ErrMsg); #ifdef _WIN32 - // Handle abort() in msvcrt -- It has exit code as 3. - // abort(), aka unreachable, may be handled as crash. - // FIXME: Could we move this into Win32/Program.inc? - if (Result == 3) + // Handle abort() in msvcrt -- It has exit code as 3. abort(), aka + // unreachable, should be recognized as a crash. However, some binaries use + // exit code 3 on non-crash failure paths, so only do this if we expect a + // crash. + if (ExpectCrash && Result == 3) Result = -3; #endif if (Result < 0) {