AIX 1.1 C compiler bug?
Anthony M. Richardson
amr at dukee.egr.duke.edu
Mon Mar 5 09:56:54 AEST 1990
The following simple program illustrates what I believe is a bug in the
AIX 1.1 C compiler.
#include <stdio.h>
main() { sub1(0.9); }
int sub1(tick) float tick;
{ sub2(&tick); printf("tick %f\n",tick); }
int sub2(tick) float *tick;
{ *tick = 0.5; }
The value printed by the printf in routine sub1() is 0.9, not 0.5. The bug
only appears when the address of a function argument is passed to sub2(),
i.e.
#include <stdio.h>
main() { float tick=0.9; sub2(&tick); printf("tick %f\n",tick); }
works correctly (prints 0.5).
This is a bug isn't it? (I thought register variables where the only types
you couldn't use the address of operator (&) on.) I can get around it
by using
int sub1(tick) float tick;
{ float dummy; dummy=tick; sub2(&dummy); tick=dummy; }
but it took me awhile to find the bug in the first place.
Tony Richardson amr at dukee.egr.duke.edu
take the address of
More information about the Comp.unix.aix
mailing list