sparc.md (pic_lo_sum_di, [...]): Rename to movdi_lo_sum_pic and movdi_high_pic and...
authorDavid S. Miller <davem@pierdol.cobaltmicro.com>
Sat, 29 Aug 1998 22:46:34 +0000 (22:46 +0000)
committerDavid S. Miller <davem@gcc.gnu.org>
Sat, 29 Aug 1998 22:46:34 +0000 (15:46 -0700)
* config/sparc/sparc.md (pic_lo_sum_di, pic_sethi_di): Rename to
movdi_lo_sum_pic and movdi_high_pic and make visible.
* config/sparc/sparc.c (legitimize_pic_address): For -fPIC,
emit these when Pmode is not SImode.
* config/sparc/linux64.h (SPARC_DEFAULT_CMODEL): Make CM_MEDLOW.

From-SVN: r22094

gcc/ChangeLog
gcc/config/sparc/linux64.h
gcc/config/sparc/sparc.c
gcc/config/sparc/sparc.md

index 0cab3e221f2add4649d476a5cfdd0c4d4f446637..1e17e2b53bbf7f40c75ef9a11c29d0fb18da9957 100644 (file)
@@ -1,3 +1,11 @@
+Sat Aug 29 21:38:24 1998  David S. Miller  <davem@pierdol.cobaltmicro.com>
+
+       * config/sparc/sparc.md (pic_lo_sum_di, pic_sethi_di): Rename to
+       movdi_lo_sum_pic and movdi_high_pic and make visible.
+       * config/sparc/sparc.c (legitimize_pic_address): For -fPIC,
+       emit these when Pmode is not SImode.
+       * config/sparc/linux64.h (SPARC_DEFAULT_CMODEL): Make CM_MEDLOW.
+
 Sat Aug 29 14:59:32 1998  Mumit Khan  <khan@xraylith.wisc.edu>
 
        * i386/cygwin32.h (ASM_OUTPUT_SECTION_NAME): Don't emit
index 866d357c8cfd626dabd8a157d6c60686fc30c818..9c2df818a777f17f38b2923e0ca8bdda0119f9e8 100644 (file)
@@ -82,7 +82,7 @@ Boston, MA 02111-1307, USA.  */
 
 /* The default code model.  */
 #undef SPARC_DEFAULT_CMODEL
-#define SPARC_DEFAULT_CMODEL CM_MEDANY
+#define SPARC_DEFAULT_CMODEL CM_MEDLOW
 
 #undef WCHAR_TYPE
 #define WCHAR_TYPE "long int"
index 11c17f5206ce019054638c4486131b96bbc2f186..0e8b8042b7d8a0086fee7fde2d2397fcdf77e9e6 100644 (file)
@@ -2449,8 +2449,16 @@ legitimize_pic_address (orig, mode, reg)
             won't get confused into thinking that these two instructions
             are loading in the true address of the symbol.  If in the
             future a PIC rtx exists, that should be used instead.  */
-         emit_insn (gen_movsi_high_pic (temp_reg, orig));
-         emit_insn (gen_movsi_lo_sum_pic (temp_reg, temp_reg, orig));
+         if (Pmode == SImode)
+           {
+             emit_insn (gen_movsi_high_pic (temp_reg, orig));
+             emit_insn (gen_movsi_lo_sum_pic (temp_reg, temp_reg, orig));
+           }
+         else
+           {
+             emit_insn (gen_movdi_high_pic (temp_reg, orig));
+             emit_insn (gen_movdi_lo_sum_pic (temp_reg, temp_reg, orig));
+           }
          address = temp_reg;
        }
       else
index 6290a55d34dd8667956a015d5a40c832bac6f2c7..f1ac5ce0a63266c9b4d5b0a0810983c74f414b3c 100644 (file)
 ;; Sparc-v9 code model support insns.  See sparc_emit_set_symbolic_const64
 ;; in sparc.c to see what is going on here... PIC stuff comes first.
 
-(define_insn "*pic_lo_sum_di"
+(define_insn "movdi_lo_sum_pic"
   [(set (match_operand:DI 0 "register_operand" "=r")
         (lo_sum:DI (match_operand:DI 1 "register_operand" "r")
                    (unspec:DI [(match_operand:DI 2 "immediate_operand" "in")] 0)))]
   [(set_attr "type" "ialu")
    (set_attr "length" "1")])
 
-(define_insn "*pic_sethi_di"
+(define_insn "movdi_high_pic"
   [(set (match_operand:DI 0 "register_operand" "=r")
         (high:DI (unspec:DI [(match_operand 1 "" "")] 0)))]
   "TARGET_ARCH64 && flag_pic && check_pic (1)"