Invalid code generation

Hi,

The code below should print :

a5 is 0

However it prints in my case:

a5 is 4196880

This is failing on Solaris 10 x86-64 with the following C command line:

cc -xarch=generic64 main.c

I think I have the latest patched version of cc:

cc: Sun C 5.8 Patch 121016-01 2006/01/26

Is this a known issue? Is there a workaround?

Thanks,

Manu

main.c:

[code]#include <stdio.h>

typedef union {

double darg;

inti32arg;

char *rarg;

} my_union;

/* Typed element */

typedef struct {

my_union element;

char type;

} my_typed_item;

void f (char * a1, char * a2, int a3, int a4, int a5, double a6, double a7, double a8, int a9, int a10) {

printf("a3 is %d\n", a3);

printf("a4 is %d\n", a4);

printf("a5 is %d\n", a5);

printf("a6 is %f\n", a6);

printf("a7 is %f\n", a7);

printf("a8 is %f\n", a8);

printf("a9 is %d\n", a9);

printf("a10 is %d\n", a10);

}

void * compute_pointer () {

return (void *) f;

}

void g (void * ptr, my_typed_item * closed, my_typed_item * open) {

((void (*) (char *, char *, int, int, int, double, double, double, int, int)) compute_pointer ()) (closed [1].element.rarg, closed [2].element.rarg, open [1].element.i32arg, open [2].element.i32arg, open [3].element.i32arg, open [4].element.darg, open [5].element.darg, open [6].element.darg, open [7].element.i32arg, open [8].element.i32arg);

}

void call_routine () {

my_typed_item closed[3];

my_typed_item open [9];

closed[1].element.rarg=NULL;

closed[2].element.rarg=NULL;

open[1].element.i32arg=0;

open[2].element.i32arg=0;

open[3].element.i32arg=0;

open[4].element.darg=0;

open[5].element.darg=0;

open[6].element.darg=0;

open[7].element.i32arg=0;

open[8].element.i32arg=0;

g (NULL, closed, open);

}

int main () {

call_routine ();

}[/code]

[2047 byte] By [manus_eiffel] at [2007-11-26 9:48:57]
# 1
This looks like a bug in AMD64 code generation (everything's fine on 64-bit sparc platform). Do you mind filing one through http://bugs.sun.com/bugdatabase/index.jsp ?
MaximKartashev at 2007-7-7 0:57:32 > top of Java-index,Development Tools,Solaris and Linux Development Tools...
# 2
I filed bug according to this issue. BugId is 6465544.to workaround please set some optimization level :cc -xarch=generic64 main.c -Oa.outa3 is 0a4 is 0a5 is 0a6 is 0.000000a7 is 0.000000a8 is 0.000000a9 is 0a10 is
AVL at 2007-7-7 0:57:32 > top of Java-index,Development Tools,Solaris and Linux Development Tools...