Skip to content
Snippets Groups Projects
Commit 01bb687d authored by Brad King's avatar Brad King
Browse files

KWSys: Avoid Clang optimizer bug in testProcess-[45]

Clang's optimizer, as of clang version 2.8 (trunk 107463), produces the
undefined instruction 'ud2' for the code "*(int*)0=0" on OS X x86_64.
It causes our crash tests to fail because the child process exits with
an invalid instruction instead of a segmentation fault.  Work around the
bug by using "*(int*)1=0" in this case.
parent 50db4dcf
No related branches found
No related tags found
No related merge requests found
......@@ -15,7 +15,7 @@
SET(KWSYS_DATE_STAMP_YEAR 2010)
# KWSys version date month component. Format is MM.
SET(KWSYS_DATE_STAMP_MONTH 06)
SET(KWSYS_DATE_STAMP_MONTH 07)
# KWSys version date day component. Format is DD.
SET(KWSYS_DATE_STAMP_DAY 30)
SET(KWSYS_DATE_STAMP_DAY 02)
......@@ -94,7 +94,12 @@ 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. */
#else
*(int*)0 = 0;
#endif
fprintf(stdout, "Output after crash on stdout from crash test.\n");
fprintf(stderr, "Output after crash on stderr from crash test.\n");
return 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment