aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoern Rennecke <joern.rennecke@embecosm.com>2011-12-10 09:40:02 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2011-12-10 09:40:02 +0000
commitaf7476b83de4f3072debb9e4638360274db0351a (patch)
treef1b985857cb95e7fb4c1c47f2103ff82a4cb36d4
parent2ac69a0c6c54cc878a732ae9a647ac701396ad2f (diff)
downloadgcc-af7476b83de4f3072debb9e4638360274db0351a.zip
gcc-af7476b83de4f3072debb9e4638360274db0351a.tar.gz
gcc-af7476b83de4f3072debb9e4638360274db0351a.tar.bz2
epiphany.h (USE_LOAD_POST_INCREMENT): Define.
* config/epiphany/epiphany.h (USE_LOAD_POST_INCREMENT): Define. (USE_LOAD_POST_DECREMENT, USE_STORE_POST_INCREMENT): Likewise. (USE_STORE_POST_DECREMENT): Likewise. From-SVN: r182185
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/epiphany/epiphany.h15
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 7d29091..5113f16 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-12-10 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ * config/epiphany/epiphany.h (USE_LOAD_POST_INCREMENT): Define.
+ (USE_LOAD_POST_DECREMENT, USE_STORE_POST_INCREMENT): Likewise.
+ (USE_STORE_POST_DECREMENT): Likewise.
+
2011-12-10 Nathan Sidwell <nathan@acm.org>
PR gcov-profile/51449
diff --git a/gcc/config/epiphany/epiphany.h b/gcc/config/epiphany/epiphany.h
index 9d03ee9..08b121b 100644
--- a/gcc/config/epiphany/epiphany.h
+++ b/gcc/config/epiphany/epiphany.h
@@ -602,6 +602,21 @@ typedef struct GTY (()) machine_function
#define HAVE_POST_MODIFY_DISP TARGET_POST_MODIFY
#define HAVE_POST_MODIFY_REG TARGET_POST_MODIFY
+/* Currently, the only users of the USE_*CREMENT macros are
+ move_by_pieces / store_by_pieces_1 . We don't want them to use
+ POST_MODIFY modes, because we got ample addressing range for the
+ reg+offset addressing mode; besides, there are short index+offset loads,
+ but the only short post-modify load uses POST_MODIFY_REG.
+ Moreover, using auto-increment in move_by_pieces from structure copying
+ in the prologue causes confused debug output.
+ If another pass starts using these macros where the use of these
+ addressing modes would make more sense, we can try checking the
+ current pass. */
+#define USE_LOAD_POST_INCREMENT(MODE) 0
+#define USE_LOAD_POST_DECREMENT(MODE) 0
+#define USE_STORE_POST_INCREMENT(MODE) 0
+#define USE_STORE_POST_DECREMENT(MODE) 0
+
/* Recognize any constant value that is a valid address. */
#define CONSTANT_ADDRESS_P(X) \
(GET_CODE (X) == LABEL_REF || GET_CODE (X) == SYMBOL_REF \