* src/vm/jit/arm/codegen.c: Remove hack for return value in float registers.
authorStefan Ring <stefan@complang.tuwien.ac.at>
Fri, 14 Oct 2011 21:22:53 +0000 (23:22 +0200)
committerStefan Ring <stefan@complang.tuwien.ac.at>
Fri, 14 Oct 2011 21:22:53 +0000 (23:22 +0200)
This would only be relevant for -mfloat-abi=hard (armhf). At the moment,
support for armhf is rather pointless and can never have worked because all
arguments are passed in integer registers unconditionally. This applies to both
the internal and the system ABI.

src/vm/jit/arm/codegen.c

index f96ee749c441bcf2d081eb4fab84f6121053786f..b82661a1d997e17bfb0d2ea77f5961f1c8d4f72a 100644 (file)
@@ -1708,28 +1708,6 @@ void codegen_emit_instruction(jitdata* jd, instruction* iptr)
                        M_MOV(REG_LR, REG_PC);
                        M_MOV(REG_PC, REG_PV);
 
-#if !defined(__SOFTFP__)
-                       d = md->returntype.type;
-
-                       /* TODO: this is only a hack, since we use R0/R1 for float
-                          return!  this depends on gcc; it is independent from
-                          our ENABLE_SOFTFLOAT define */
-                       if (d != TYPE_VOID && IS_FLT_DBL_TYPE(d)) {
-#if 0 && !defined(NDEBUG)
-                               dolog("BUILTIN that returns float or double (%s.%s)", m->clazz->name->text, m->name->text);
-#endif
-                               /* we cannot use this macro, since it is not defined
-                                  in ENABLE_SOFTFLOAT M_CAST_FLT_TO_INT_TYPED(d,
-                                  REG_FRESULT, REG_RESULT_TYPED(d)); */
-                               if (IS_2_WORD_TYPE(d)) {
-                                       DCD(0xed2d8102); /* stfd    f0, [sp, #-8]! */
-                                       M_LDRD_UPDATE(REG_RESULT_PACKED, REG_SP, 8);
-                               } else {
-                                       DCD(0xed2d0101); /* stfs    f0, [sp, #-4]!*/
-                                       M_LDR_UPDATE(REG_RESULT, REG_SP, 4);
-                               }
-                       }
-#endif
                        break;
 
                case ICMD_INVOKESPECIAL:
@@ -2507,25 +2485,6 @@ void codegen_emit_stub_native(jitdata *jd, methoddesc *nmd, functionptr f, int s
 
        emit_recompute_pv(cd);
 
-#if !defined(__SOFTFP__)
-       /* TODO: this is only a hack, since we use R0/R1 for float return! */
-       /* this depends on gcc; it is independent from our ENABLE_SOFTFLOAT define */
-       if (md->returntype.type != TYPE_VOID && IS_FLT_DBL_TYPE(md->returntype.type)) {
-#if 0 && !defined(NDEBUG)
-               dolog("NATIVESTUB that returns float or double (%s.%s)", m->clazz->name->text, m->name->text);
-#endif
-               /* we cannot use this macro, since it is not defined in ENABLE_SOFTFLOAT */
-               /* M_CAST_FLT_TO_INT_TYPED(md->returntype.type, REG_FRESULT, REG_RESULT_TYPED(md->returntype.type)); */
-               if (IS_2_WORD_TYPE(md->returntype.type)) {
-                       DCD(0xed2d8102); /* stfd    f0, [sp, #-8]! */
-                       M_LDRD_UPDATE(REG_RESULT_PACKED, REG_SP, 8);
-               } else {
-                       DCD(0xed2d0101); /* stfs    f0, [sp, #-4]!*/
-                       M_LDR_UPDATE(REG_RESULT, REG_SP, 4);
-               }
-       }
-#endif
-
        /* remove native stackframe info */
        /* TODO: improve this store/load */