]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/13354 (internal compiler error: in sparc_emit_set_const32)
authorEric Botcazou <ebotcazou@libertysurf.fr>
Wed, 10 Dec 2003 15:30:38 +0000 (16:30 +0100)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 10 Dec 2003 15:30:38 +0000 (15:30 +0000)
PR target/13354
* config/sparc/sparc.c (sparc_output_mi_thunk): Load DELTA
manually if one can do that with only one instruction.

From-SVN: r74500

gcc/ChangeLog
gcc/config/sparc/sparc.c

index 7a0c9d66d06220ee0d5f03f12152b01ecd633f7e..f378c7aa19321c5e30d65eb04a514fce59cd346a 100644 (file)
@@ -1,3 +1,9 @@
+2003-12-10  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       PR target/13354
+       * config/sparc/sparc.c (sparc_output_mi_thunk): Load DELTA
+       manually if one can do that with only one instruction.
+
 2003-12-09  Kelley Cook  <kelleycook@wideopenwest.com>
 
        2003-06-04  Kelley Cook  <kelleycook@wideopenwest.com>
@@ -18179,3 +18185,4 @@ cp:
        * mips.h (FUNCTION_ARG_REGNO_P): Fix parentheses.
 
 See ChangeLog.7 for earlier changes.
+
index 8ddda1de5d22cbd2c41a7339ab9c7b363fc224b9..d6106130e4afc874b045a087176af336431d1414 100644 (file)
@@ -8561,10 +8561,17 @@ sparc_output_mi_thunk (file, thunk_fndecl, delta, vcall_offset, function)
   if (!SPARC_SIMM13_P (delta))
     {
       rtx scratch = gen_rtx_REG (Pmode, 1);
-      if (TARGET_ARCH64)
-       sparc_emit_set_const64 (scratch, delta_rtx);
+
+      if (input_operand (delta_rtx, GET_MODE (scratch)))
+       emit_insn (gen_rtx_SET (VOIDmode, scratch, delta_rtx));
       else
-       sparc_emit_set_const32 (scratch, delta_rtx);
+       {
+         if (TARGET_ARCH64)
+           sparc_emit_set_const64 (scratch, delta_rtx);
+         else
+           sparc_emit_set_const32 (scratch, delta_rtx);
+       }
+
       delta_rtx = scratch;
     }