changeset 624:4d28634e46e4

*** empty log message ***
author kono
date Wed, 27 Sep 2006 13:57:55 +0900
parents 4e08fbf6754b
children 4b4c6b1ea69a
files Changes test/tmp7.c
diffstat 2 files changed, 40 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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 は、そういう仕組みになっていて
+対処しているみたいだね。なんでだろう?
+
--- 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;