# HG changeset patch # User kono # Date 1159333075 -32400 # Node ID 4d28634e46e44046d138f6ab59f0b926f37e900c # Parent 4e08fbf6754b444d99073cbfa463e796bdd1fd76 *** empty log message *** diff -r 4e08fbf6754b -r 4d28634e46e4 Changes --- a/Changes Sun Sep 10 22:11:41 2006 +0900 +++ b/Changes Wed Sep 27 13:57:55 2006 +0900 @@ -8840,6 +8840,33 @@ test/i3.c がひどい... - - - +Wed Sep 27 13:47:47 JST 2006 + +PowerPC の 構造体の引渡しが int とかと混在すると、gcc と整合しないらしい。 + + .globl _main01 +_main01: + mflr r0 + stmw r30,-8(r1) + stw r0,8(r1) + stwu r1,-80(r1) + mr r30,r1 + bcl 20,31,"L00000000001$pb" +"L00000000001$pb": + mflr r31 + stw r3,104(r30) + stw r4,108(r30) + stw r5,112(r30) + stw r6,116(r30) + stw r7,120(r30) + stw r8,124(r30) + stw r9,128(r30) + stw r10,132(r30) + lwz r0,108(r30) + +あぁ、integer の要素の場合は、先頭のいくつかは、レジスタに +マッピングされるみたいだね。 + +これは、なんかあったな。ARM は、そういう仕組みになっていて +対処しているみたいだね。なんでだろう? + diff -r 4e08fbf6754b -r 4d28634e46e4 test/tmp7.c --- a/test/tmp7.c Sun Sep 10 22:11:41 2006 +0900 +++ b/test/tmp7.c Wed Sep 27 13:57:55 2006 +0900 @@ -10,6 +10,12 @@ INLINE struct aa main0(int); +INLINE void +main01(int k, struct aa a) +{ + printf("main01 k=%d,a[0]=%d,a[99]=%d\n",k,a.a[0],a.a[99]); +} + INLINE struct aa main0(int k) { @@ -78,6 +84,10 @@ j = 3; + aaa.a[0] = 55; + aaa.a[99] = 66; + main01(j,aaa); + bbb = main0(123); printf("#0082:copied main0 ccc.a[55] %d==123\n",bbb.a[55]); aap[2] = &bbb;