diff --git a/libacc/acc.cpp b/libacc/acc.cpp
index 1a3d315..e7f7d8d 100644
--- a/libacc/acc.cpp
+++ b/libacc/acc.cpp
@@ -391,13 +391,6 @@
          */
         virtual void storeR0(int ea, Type* pType) = 0;
 
-        /* load R0 from a variable.
-         * If ea <= LOCAL, then this is a local variable, or an
-         * argument, addressed relative to FP.
-         * else it is an absolute global address.
-         */
-        virtual void loadR0(int ea, Type* pType) = 0;
-
         /**
          * Convert R0 to the given type.
          */
@@ -1097,6 +1090,7 @@
             Type* pPointerType = getR0Type();
             assert(pPointerType->tag == TY_POINTER);
             switch (pPointerType->pHead->tag) {
+                case TY_POINTER:
                 case TY_INT:
                 case TY_FLOAT:
                     o4(0xE5900000); // ldr r0, [r0]
@@ -1105,7 +1099,7 @@
                     o4(0xE5D00000); // ldrb r0, [r0]
                     break;
                 case TY_DOUBLE:
-                    o4(0xE1C000D0); // ldrd r0, [r0]
+                    o4(0xE1C000D0); // ldrd   r0, [r0]
                     break;
                 default:
                     error("loadR0FromR0: unimplemented type");
@@ -1185,23 +1179,11 @@
                     }
                     if (ea > -LOCAL && ea < LOCAL) {
                         // Local, fp relative
-                        if (ea < -4095 || ea > 4095) {
-                            error("Offset out of range: %08x", ea);
-                        }
-                        if (ea < 0) {
-                            o4(0xE50B0000 | (0xfff & (4-ea))); // str r0, [fp,#-ea]
-                            o4(0xE50B1000 | (0xfff & (-ea))); // str r1, [fp,#-ea+4]
-#if 0
-                            // strd doesn't seem to work. Is encoding wrong?
-                        } else if (ea < 0) {
-                            o4(0xE1CB000F | ((0xff & (-ea)) << 4)); // strd r0, [fp,#-ea]
-                        } else if (ea < 256) {
-                            o4(0xE14B000F | ((0xff & ea) << 4)); // strd r0, [fp,#ea]
-#endif
-                        } else {
-                            o4(0xE58B0000 | (0xfff & ea)); // str r0, [fp,#ea]
-                            o4(0xE58B1000 | (0xfff & (ea + 4))); // str r1, [fp,#ea+4]
-                        }
+                        // Global, absolute
+                        o4(0xE59F2000); //         ldr r2, .L1
+                        o4(0xEA000000); //         b .L99
+                        o4(ea);         // .L1:    .word 0
+                        o4(0xE18B00F2); // .L99:   strd r0, [fp,r2]
                     } else{
                         // Global, absolute
                         o4(0xE59F2000); //         ldr r2, .L1
@@ -1216,80 +1198,6 @@
             }
         }
 
-        virtual void loadR0(int ea, Type* pType) {
-            TypeTag tag = pType->tag;
-            switch (tag) {
-                case TY_CHAR:
-                    if (ea < LOCAL) {
-                        // Local, fp relative
-                        if (ea < -4095 || ea > 4095) {
-                            error("Offset out of range: %08x", ea);
-                        }
-                        if (ea < 0) {
-                            o4(0xE55B0000 | (0xfff & (-ea))); // ldrb r0, [fp,#-ea]
-                        } else {
-                            o4(0xE5DB0000 | (0xfff & ea));    // ldrb r0, [fp,#ea]
-                        }
-                    } else {
-                        // Global, absolute
-                        o4(0xE59F2000); //        ldr r2, .L1
-                        o4(0xEA000000); //        b .L99
-                        o4(ea);         // .L1:   .word ea
-                        o4(0xE5D20000); // .L99:  ldrb r0, [r2]
-                    }
-                    break;
-                case TY_POINTER:
-                case TY_INT:
-                case TY_FLOAT:
-                    if (ea < LOCAL) {
-                        // Local, fp relative
-                        if (ea < -4095 || ea > 4095) {
-                            error("Offset out of range: %08x", ea);
-                        }
-                        if (ea < 0) {
-                            o4(0xE51B0000 | (0xfff & (-ea))); // ldr r0, [fp,#-ea]
-                        } else {
-                            o4(0xE59B0000 | (0xfff & ea));    // ldr r0, [fp,#ea]
-                        }
-                    } else {
-                        // Global, absolute
-                        o4(0xE59F2000); //        ldr r2, .L1
-                        o4(0xEA000000); //        b .L99
-                        o4(ea);         // .L1:   .word ea
-                        o4(0xE5920000); // .L99:  ldr r0, [r2]
-                    }
-                    break;
-                case TY_DOUBLE:
-                    if ((ea & 0x7) != 0) {
-                        error("double address is not aligned: %d", ea);
-                    }
-                    if (ea < LOCAL) {
-                        // Local, fp relative
-                        if (ea < -4095 || ea > 4095) {
-                            error("Offset out of range: %08x", ea);
-                        }
-                        if (ea < 0) {
-                            o4(0xE51B0000 | (0xfff & (4-ea))); // ldr r0, [fp,#-ea]
-                            o4(0xE51B1000 | (0xfff & (-ea))); // ldr r1, [fp,#-ea+4]
-                        } else {
-                            o4(0xE59B0000 | (0xfff & ea));    // ldr r0, [fp,#ea]
-                            o4(0xE59B1000 | (0xfff & (ea+4)));    // ldr r0, [fp,#ea+4]
-                        }
-                    } else {
-                        // Global, absolute
-                        o4(0xE59F2000); //        ldr r2, .L1
-                        o4(0xEA000000); //        b .L99
-                        o4(ea);         // .L1:   .word ea
-                        o4(0xE1C200D0); // .L99:  ldrd r0, [r2]
-                    }
-                    break;
-                default:
-                    error("Unable to load type %d", tag);
-                    break;
-            }
-            setR0Type(pType);
-        }
-
         virtual void convertR0(Type* pType){
             Type* pR0Type = getR0Type();
             if (bitsSame(pType, pR0Type)) {
@@ -2236,6 +2144,7 @@
             Type* pPointerType = getR0Type();
             assert(pPointerType->tag == TY_POINTER);
             switch (pPointerType->pHead->tag) {
+                case TY_POINTER:
                 case TY_INT:
                     o2(0x008b); /* mov (%eax), %eax */
                     break;
@@ -2296,41 +2205,6 @@
             }
         }
 
-        virtual void loadR0(int ea, Type* pType) {
-            TypeTag tag = pType->tag;
-            switch (tag) {
-                case TY_CHAR:
-                    if (ea < -LOCAL || ea > LOCAL) {
-                        oad(0x05BE0F, ea); // movsbl  ea,%eax
-                    } else {
-                        oad(0x85BE0F, ea); // movsbl  ea(%ebp),%eax
-                    }
-                    break;
-                case TY_INT:
-                case TY_POINTER:
-                    gmov(8, ea); /* mov EA, %eax */
-                    break;
-                case TY_FLOAT:
-                    if (ea < -LOCAL || ea > LOCAL) {
-                        oad(0x05d9, ea); // flds ea
-                    } else {
-                        oad(0x85d9, ea); // flds ea(%ebp)
-                    }
-                    break;
-                case TY_DOUBLE:
-                    if (ea < -LOCAL || ea > LOCAL) {
-                        oad(0x05dd, ea); // fldl ea
-                    } else {
-                        oad(0x85dd, ea); // fldl ea(%ebp)
-                    }
-                    break;
-                default:
-                    error("Unable to load type %d", tag);
-                    break;
-            }
-            setR0Type(pType);
-        }
-
         virtual void convertR0(Type* pType){
             Type* pR0Type = getR0Type();
             if (pR0Type == NULL) {
@@ -2697,11 +2571,6 @@
             mpBase->storeR0(ea, pType);
         }
 
-        virtual void loadR0(int ea, Type* pType) {
-            fprintf(stderr, "loadR0(%d, pType)\n", ea);
-            mpBase->loadR0(ea, pType);
-        }
-
         virtual void convertR0(Type* pType){
             fprintf(stderr, "convertR0(pType tag=%d)\n",  pType->tag);
             mpBase->convertR0(pType);
@@ -4104,7 +3973,8 @@
                         pGen->popR0();
                         next();
                     } else {
-                        pGen->loadR0(n, pVI->pType);
+                        pGen->leaR0(n, createPtrType(pVI->pType));
+                        pGen->loadR0FromR0();
                     }
                 }
             }
