aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Meissner <meissner@gcc.gnu.org>1995-03-24 20:09:42 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1995-03-24 20:09:42 +0000
commit8a61d22787f28045070db0990f5848a11e7a3f53 (patch)
tree9e262da7fcda5e7d3589a193b55545fad8dfa975 /gcc
parent70e1449a371d0fb04a3fc9bbab9f2ace14839310 (diff)
downloadgcc-8a61d22787f28045070db0990f5848a11e7a3f53.zip
gcc-8a61d22787f28045070db0990f5848a11e7a3f53.tar.gz
gcc-8a61d22787f28045070db0990f5848a11e7a3f53.tar.bz2
Let user choice of -mmultiple always override processor default.
From-SVN: r9228
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/rs6000/rs6000.c7
-rw-r--r--gcc/config/rs6000/rs6000.h5
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 6027fce..a905a33d 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -154,6 +154,8 @@ rs6000_override_options ()
int ptt_size = sizeof (processor_target_table) / sizeof (struct ptt);
+ int multiple = TARGET_MULTIPLE; /* save current -mmultiple/-mno-multiple status */
+
profile_block_flag = 0;
/* Identify the processor type */
@@ -177,6 +179,11 @@ rs6000_override_options ()
rs6000_cpu = PROCESSOR_DEFAULT;
}
}
+
+ /* If -mmultiple or -mno-multiple was explicitly used, don't
+ override with the processor default */
+ if (TARGET_MULTIPLE_SET)
+ target_flags = (target_flags & ~MASK_MULTIPLE) | multiple;
}
/* Return non-zero if this function is known to have a null epilogue. */
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index d5988c3..1b6adb8 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -155,6 +155,7 @@ extern int target_flags;
/* Enable load/store multiple, even on powerpc */
#define MASK_MULTIPLE 0x1000
+#define MASK_MULTIPLE_SET 0x2000
#define TARGET_POWER (target_flags & MASK_POWER)
#define TARGET_POWER2 (target_flags & MASK_POWER2)
@@ -169,6 +170,7 @@ extern int target_flags;
#define TARGET_64BIT (target_flags & MASK_64BIT)
#define TARGET_SOFT_FLOAT (target_flags & MASK_SOFT_FLOAT)
#define TARGET_MULTIPLE (target_flags & MASK_MULTIPLE)
+#define TARGET_MULTIPLE_SET (target_flags & MASK_MULTIPLE_SET)
#define TARGET_HARD_FLOAT (! TARGET_SOFT_FLOAT)
@@ -210,8 +212,9 @@ extern int target_flags;
{"no-minimal-toc", - MASK_MINIMAL_TOC}, \
{"hard-float", - MASK_SOFT_FLOAT}, \
{"soft-float", MASK_SOFT_FLOAT}, \
- {"multiple", MASK_MULTIPLE}, \
+ {"multiple", MASK_MULTIPLE | MASK_MULTIPLE_SET}, \
{"no-multiple", - MASK_MULTIPLE}, \
+ {"no-multiple", MASK_MULTIPLE_SET}, \
SUBTARGET_SWITCHES \
{"", TARGET_DEFAULT}}