aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Hannum <mycroft@gnu.org>1992-07-06 21:48:21 +0000
committerCharles Hannum <mycroft@gnu.org>1992-07-06 21:48:21 +0000
commit95393dfdf89145c8cc8224c1c2e1782ce2d8273c (patch)
tree8f2ed1cdc517608a7876eac66f18bb930ef17afe
parent9b4e97b0d01f1ddae5bbbace17eed0e9812f5b6b (diff)
downloadgcc-95393dfdf89145c8cc8224c1c2e1782ce2d8273c.zip
gcc-95393dfdf89145c8cc8224c1c2e1782ce2d8273c.tar.gz
gcc-95393dfdf89145c8cc8224c1c2e1782ce2d8273c.tar.bz2
entered into RCS
From-SVN: r1481
-rw-r--r--gcc/config/i386/i386.h19
-rw-r--r--gcc/config/i386/i386.md12
2 files changed, 31 insertions, 0 deletions
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index 847cf3e..a03b582 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -37,6 +37,20 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#define I386 1
+/* Stubs for half-pic support if not OSF/1 reference platform. */
+
+#ifndef HALF_PIC_P
+#define HALF_PIC_P() 0
+#define HALF_PIC_NUMBER_PTRS 0
+#define HALF_PIC_NUMBER_REFS 0
+#define HALF_PIC_ENCODE(DECL)
+#define HALF_PIC_DECLARE(NAME)
+#define HALF_PIC_INIT() error ("half-pic init called on systems that don't support it.")
+#define HALF_PIC_ADDRESS_P(X) 0
+#define HALF_PIC_PTR(X) X
+#define HALF_PIC_FINISH(STREAM)
+#endif
+
/* Run-time compilation parameters selecting different hardware subsets. */
extern int target_flags;
@@ -86,7 +100,12 @@ extern int target_flags;
{ "nosvr3-shlib", -040}, \
{ "ieee-fp", 0100}, \
{ "noieee-fp", -0100}, \
+ SUBTARGET_SWITCHES \
{ "", TARGET_DEFAULT}}
+
+/* This is meant to be redefined in the host dependent files */
+#define SUBTARGET_SWITCHES
+
/* target machine storage layout */
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 9ce6c33..ee7268b 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -572,6 +572,18 @@
if (flag_pic && SYMBOLIC_CONST (operands[1]))
emit_pic_move (operands, SImode);
+ else if (HALF_PIC_P()
+ && GET_CODE (operands[0]) == REG
+ && GET_CODE (operands[1]) == SYMBOL_REF
+ && HALF_PIC_ADDRESS_P (operands[1]))
+ {
+ rtx ptr = HALF_PIC_PTR (operands[1]);
+ if (XSTR (ptr, 0) != XSTR (operands[1], 0))
+ {
+ emit_move_insn (operands[0], gen_rtx (MEM, Pmode, ptr));
+ DONE;
+ }
+ }
}")
;; On i486, incl reg is faster than movl $1,reg.