--- /dev/null
+/*
+ Compile this with GCC on a new platform, to learn various
+ things about argument-passing, return-returning, stack
+ layout, etc. WDP 95/05
+*/
+
+extern long int foo (long int, double, void *, char *, double, long int, char, long int);
+extern double bar (char, float, long int, long int, char *, char **);
+
+long int
+foo (long int a, double b, void *c, char *d, double e, long int f, char g, long int h)
+{
+ __asm__ volatile ("--- BEGIN ---");
+ bar(*d, (float) b, a, f, d, (char **) d);
+ __asm__ volatile ("--- END ---");
+}
+
+double
+bar (char a, float b, long int c, long int d, char *e, char **f)
+{
+ __asm__ volatile ("--- BEGIN ---");
+ foo(c, (double) b, (void *) 0, e, 0.0, d, a, d);
+ __asm__ volatile ("--- END ---");
+}
+
+double
+baz(w)
+ int w;
+{
+ int x[1000];
+ int y;
+
+ for(y = 0; y < 1000; y++)
+ w += x[y];
+
+ return ((double) w);
+}