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.
This commit is contained in:
parent
9f3524f469
commit
c3389d4ce2
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue