aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meissner <meissner@gcc.gnu.org>1996-11-04 15:33:01 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1996-11-04 15:33:01 +0000
commit461422d5b6136889dd97e15c4d69cec2bf3427b9 (patch)
tree110424ae17e769a41a7b8a86fd00774b401a12a5
parent4f3397ae26e52899a70424d7bba802b19fc14355 (diff)
downloadgcc-461422d5b6136889dd97e15c4d69cec2bf3427b9.zip
gcc-461422d5b6136889dd97e15c4d69cec2bf3427b9.tar.gz
gcc-461422d5b6136889dd97e15c4d69cec2bf3427b9.tar.bz2
Fix -fpic problems; fix typo in cygwin
From-SVN: r13093
-rw-r--r--gcc/config/rs6000/cygwin32.h2
-rw-r--r--gcc/config/rs6000/rs6000.h3
-rw-r--r--gcc/config/rs6000/rs6000.md1
3 files changed, 5 insertions, 1 deletions
diff --git a/gcc/config/rs6000/cygwin32.h b/gcc/config/rs6000/cygwin32.h
index e89026e..557b301 100644
--- a/gcc/config/rs6000/cygwin32.h
+++ b/gcc/config/rs6000/cygwin32.h
@@ -49,7 +49,7 @@ Boston, MA 02111-1307, USA. */
#define LINK_SPEC "%{v:-V}"
#undef STARTFILE_SPEC
-#define STARTFILE_SPEC "crti%O%s %{!:crt0%O%s}"
+#define STARTFILE_SPEC "crti%O%s crt0%O%s"
#undef ENDFILE_SPEC
#define ENDFILE_SPEC "crtn%O%s"
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index e17c5a6..b3517f2 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -1767,6 +1767,7 @@ typedef struct rs6000_args
#define LEGITIMATE_SMALL_DATA_P(MODE, X) \
((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS) \
+ && !flag_pic && !TARGET_RELOCATABLE \
&& (GET_CODE (X) == SYMBOL_REF || GET_CODE (X) == CONST) \
&& small_data_operand (X, MODE))
@@ -1803,6 +1804,7 @@ typedef struct rs6000_args
#define LEGITIMATE_LO_SUM_ADDRESS_P(MODE, X) \
(TARGET_ELF \
+ && !flag_pic && !TARGET_RELOCATABLE \
&& (MODE) != DImode \
&& (MODE) != TImode \
&& (TARGET_HARD_FLOAT || (MODE) != DFmode) \
@@ -1881,6 +1883,7 @@ typedef struct rs6000_args
goto WIN; \
} \
else if (TARGET_ELF && TARGET_32BIT && TARGET_NO_TOC \
+ && !flag_pic \
&& GET_CODE (X) != CONST_INT \
&& GET_CODE (X) != CONST_DOUBLE && CONSTANT_P (X) \
&& (TARGET_HARD_FLOAT || (MODE) != DFmode) \
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 382a0a7..480e0ba 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -5084,6 +5084,7 @@
}
if (TARGET_ELF && TARGET_NO_TOC && !TARGET_64BIT
+ && !flag_pic
&& CONSTANT_P (operands[1])
&& GET_CODE (operands[1]) != HIGH
&& GET_CODE (operands[1]) != CONST_INT)