diff options
author | Brad King <brad.king@kitware.com> | 2010-07-09 14:30:18 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2010-07-09 14:40:06 (GMT) |
commit | 70154efef86c7025435b15c52a8a1a5b47067835 (patch) | |
tree | 7c507a8ba1efa02993a192bb0afc8ae7cd96470a /Source/kwsys/testProcess.c | |
parent | a1a4a2cb6dbcc0b2ec0f07aa2d4b36242e4fe3df (diff) | |
download | CMake-70154efef86c7025435b15c52a8a1a5b47067835.zip CMake-70154efef86c7025435b15c52a8a1a5b47067835.tar.gz CMake-70154efef86c7025435b15c52a8a1a5b47067835.tar.bz2 |
KWSys: Avoid undefined behavior in Process crash tests
Clang is smart enough to recognize that "*(int*)0=0" invokes undefined
behavior, warns, and produces an "undefined instruction". The message
in commit "Avoid Clang optimizer bug in testProcess-[45]" (2010-07-02)
is incorrect; this is not a Clang bug. It really is undefined
behavior. Use "*(int*)1=0" to produce a crash instead.
Diffstat (limited to 'Source/kwsys/testProcess.c')
-rw-r--r-- | Source/kwsys/testProcess.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/Source/kwsys/testProcess.c b/Source/kwsys/testProcess.c index 6044917..877002a 100644 --- a/Source/kwsys/testProcess.c +++ b/Source/kwsys/testProcess.c @@ -94,9 +94,8 @@ int test4(int argc, const char* argv[]) fprintf(stderr, "Output before crash on stderr from crash test.\n"); fflush(stdout); fflush(stderr); -#if defined(__APPLE__) && defined(__x86_64__) && defined(__OPTIMIZE__) \ - && defined(__clang__) - *(int*)1 = 0; /* Clang's optimizer produces bad code for 0-ptr. */ +#if defined(__clang__) + *(int*)1 = 0; /* Clang warns about 0-ptr; undefined behavior. */ #else *(int*)0 = 0; #endif |