Path: utzoo!telly!ddsw1!mcdchg!rutgers!mailrus!tut.cis.ohio-state.edu!cs.utexas.edu!meyering From: meyering@cs.utexas.edu (Jim Meyering) Newsgroups: gnu.gcc.bug Subject: 1.32 sun4os4 bug-- passing structures Message-ID: <150@ai.cs.utexas.edu> Date: 25 Jan 89 14:43:05 GMT Distribution: gnu Organization: U. Texas CS Dept., Austin, Texas Lines: 73 /* * gcc-1.32 (sun4-os4) has a problem passing structure arguments. * * If the type FLT is changed to float, all problems disappear. * * If PRINTF is defined and -O is *not* used, the program terminates * with a segmentation fault. In all other cases I've tried, the * program runs, but the arguments to foo are not properly copied. * To be precise, in foo, the value that one would normally expect * to find in b.y is overwritten with that of b.x. (see output in * comments below) */ typedef double FLT; typedef struct point { FLT x, y; } PT; #define N 4 FLT x[N]; #if defined(PRINTF) #define PRINT(a) for (i=0;i #define PRINT(a) for (i=0;i= 0) { PRINT(w); PRINT(x); } exit(0); } void foo(PT a,PT b) { extern FLT x[N]; x[0] = a.x; x[1] = a.y; x[2] = b.x; x[3] = b.y; } -- --- Jim Meyering meyering@cs.utexas.edu