diff --git a/libacc/acc.cpp b/libacc/acc.cpp
index 0a16489..b06ad53 100644
--- a/libacc/acc.cpp
+++ b/libacc/acc.cpp
@@ -1168,7 +1168,8 @@
         virtual void loadR0FromR0() {
             Type* pPointerType = getR0Type();
             assert(pPointerType->tag == TY_POINTER);
-            TypeTag tag = pPointerType->pHead->tag;
+            Type* pNewType = pPointerType->pHead;
+            TypeTag tag = pNewType->tag;
             switch (tag) {
                 case TY_POINTER:
                 case TY_INT:
@@ -1184,11 +1185,14 @@
                 case TY_DOUBLE:
                     o4(0xE1C000D0); // ldrd   r0, [r0]
                     break;
+                case TY_ARRAY:
+                    pNewType = pNewType->pTail;
+                    break;
                 default:
                     error("loadR0FromR0: unimplemented type %d", tag);
                     break;
             }
-            setR0Type(pPointerType->pHead);
+            setR0Type(pNewType);
         }
 
         virtual void leaR0(int ea, Type* pPointerType, ExpressionType et) {
@@ -2213,7 +2217,8 @@
         virtual void loadR0FromR0() {
             Type* pPointerType = getR0Type();
             assert(pPointerType->tag == TY_POINTER);
-            TypeTag tag = pPointerType->pHead->tag;
+            Type* pNewType = pPointerType->pHead;
+            TypeTag tag = pNewType->tag;
             switch (tag) {
                 case TY_POINTER:
                 case TY_INT:
@@ -2233,11 +2238,14 @@
                 case TY_DOUBLE:
                     o2(0x00dd); // fldl (%eax)
                     break;
+                case TY_ARRAY:
+                    pNewType = pNewType->pTail;
+                    break;
                 default:
                     error("loadR0FromR0: unsupported type %d", tag);
                     break;
             }
-            setR0Type(pPointerType->pHead);
+            setR0Type(pNewType);
         }
 
         virtual void leaR0(int ea, Type* pPointerType, ExpressionType et) {
@@ -4126,6 +4134,9 @@
                         pTargetType = pGen->getR0Type();
                         if (pTargetType->tag == TY_FLOAT) {
                             pTargetType = mkpDouble;
+                        } else if (pTargetType->tag == TY_ARRAY) {
+                            // Pass arrays by pointer.
+                            pTargetType = pTargetType->pTail;
                         }
                     }
                     if (pTargetType->tag == TY_VOID) {
diff --git a/libacc/tests/data/array.c b/libacc/tests/data/array.c
index 3af5e31..ca4a728 100644
--- a/libacc/tests/data/array.c
+++ b/libacc/tests/data/array.c
@@ -66,6 +66,34 @@
     printf("\n");
 }
 
+void testDecay() {
+    char c[4];
+    c[0] = 'H';
+    c[1] = 'i';
+    c[2] = '!';
+    c[3] = 0;
+    printf("testDecay: %s\n", c);
+}
+
+void test2D() {
+    char c[10][20];
+    int x;
+    int y;
+    printf("test2D:\n");
+    for(y = 0; y < 10; y++) {
+        for(x = 0; x < 20; x++) {
+            c[y][x] = 'a' + (15 & (y * 19 + x));
+        }
+    }
+    for(y = 0; y < 10; y++) {
+        for(x = 0; x < 20; x++) {
+            printf("%c", c[y][x]);
+        }
+        printf("\n");
+    }
+
+}
+
 int main()
 {
     testLocalInt();
@@ -73,5 +101,7 @@
     testGlobalChar();
     testGlobalDouble();
     testArgs();
+    testDecay();
+    test2D();
     return 0;
 }
diff --git a/libacc/tests/test.py b/libacc/tests/test.py
index 4ad2e13..9691c27 100644
--- a/libacc/tests/test.py
+++ b/libacc/tests/test.py
@@ -394,6 +394,18 @@
 globalChar: 3
 globalDouble: 3
 testArgs: 0 2 4
+testDecay: Hi!
+test2D:
+abcdefghijdefghijklm
+defghijklmghijklmnop
+ghijklmnopjklmnopabc
+jklmnopabcmnopabcdef
+mnopabcdefpabcdefghi
+pabcdefghicdefghijkl
+cdefghijklfghijklmno
+fghijklmnoijklmnopab
+ijklmnopablmnopabcde
+lmnopabcdefghijklmno
 result: 0
 ""","""""")
 
