Problem |
Workaround |
ADIC crashes when processing files that
include certain system headers (stdarg.h, vararg.h, libio.h) and gcc
versions 2.96 or 3.x are used for the preprocessing step (the preprocessor
command is in the $ADIC/adic.init.$ADIC_ARCH file). |
Make sure that files processed by ADIC do not include the
non-portable gcc system headers (i.e., headers that contain __builtin
directives) or other headers that include them. |
ADIC locks up when two or more files are being processed simultaneously
(including files specified in a control script); for example: adiC -vd gradient
func1.c func2.c |
Run ADIC with one file at a time; do not specify sources in a control
script; for example: adiC -vd gradient func1.c; adiC -vd gradient func2.c |
Perl error messages when running adiC (e.g., included packages not found). |
If $ADIC/bin/$ADIC_ARCH/perl exists, delete it or move it to a
directory that is not on the path. |
ADIC crashes when a program uses drand48 or similar
system calls that return doubles. |
Please email [email protected] for
suggestions on workarounds for your specific problem. |
An implicit typecast from an int to a float
or double after a mod (%) operation causes ADIC to crash
(e.g., d = i % 2 where i is an int and d is a double). |
Use an explicit typecast, e.g., d = (double)(i % 2). |
ADIC crashes when the source code includes a struct
containing a comma-separated list of function pointers (example). |
Use explicit return types for each function pointer declaration (example). |
On some platforms (Linux, RS6000), ADIC crashes with a segmentation fault
or an "illegal instruction" error message on exit. This does not affect the
correctness of the differentiated code. |
Make sure the value of the ADIC environment variable is longer than 20
characters. If necessary, use symbolic links to shorten the path. |
Certain C++ features are not working. |
No workaraound at present. |