public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] delete last traces of GO_IF_MODE_DEPENDENT_ADDRESS
@ 2012-07-27 23:58 Nathan Froyd
  2012-07-28  9:20 ` Jan-Benedict Glaw
  2012-07-30 15:35 ` Richard Henderson
  0 siblings, 2 replies; 3+ messages in thread
From: Nathan Froyd @ 2012-07-27 23:58 UTC (permalink / raw)
  To: gcc-patches

Subject says it all, really.  Two targets with redundant definitions, and
two targets with trivial definitions.  Time to remove this.

Tested on x86_64-unknown-linux-gnu.  Crosses to {alpha,vax}-linux-gnu built
as well.  OK to commit?

-Nathan

	* defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
	* targhooks.c (default_mode_dependent_address_p): Delete code
	for GO_IF_MODE_DEPENDENT_ADDRESS.
	* system.h (GO_IF_MODE_DEPENDENT_ADDRESS): Poison.
	* doc/tm.texi.in (GO_IF_MODE_DEPENDENT_ADDRESS): Delete documention.
	* doc/tm.texi: Regenerate.
	* config/alpha.h (GO_IF_MODE_DEPENDENT_ADDRESS): Move code to...
	* config/alpha.c (alpha_mode_dependent_address_p): ...here.  New
	function.
	(TARGET_MODE_DEPENDENT_ADDRESS_P): Define.
	* config/cr16/cr16.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
	* config/mep/mep.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
	* config/vax/vax-protos.h (vax_mode_dependent_address_p): Delete.
	* config/vax/vax.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
	* config/vax/vax.c (vax_mode_dependent_address_p): Make static.
	Take a const_rtx.
	(TARGET_MODE_DEPENDENT_ADDRESS_P): Define.

---
 gcc/config/alpha/alpha.c    |   12 ++++++++++++
 gcc/config/alpha/alpha.h    |    7 -------
 gcc/config/cr16/cr16.h      |    4 ----
 gcc/config/mep/mep.h        |    2 --
 gcc/config/vax/vax-protos.h |    1 -
 gcc/config/vax/vax.c        |    7 +++++--
 gcc/config/vax/vax.h        |    5 -----
 gcc/defaults.h              |    7 -------
 gcc/doc/tm.texi             |   18 ------------------
 gcc/doc/tm.texi.in          |   18 ------------------
 gcc/system.h                |    3 ++-
 gcc/targhooks.c             |   12 ------------
 12 files changed, 19 insertions(+), 77 deletions(-)

diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 5617ea3..6d455ef 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -1038,6 +1038,16 @@ alpha_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
   return new_x ? new_x : x;
 }
 
+/* Return true if ADDR has an effect that depends on the machine mode it
+   is used for.  On the Alpha this is true only for the unaligned modes.
+   We can simplify the test since we know that the address must be valid.  */
+
+static bool
+alpha_mode_dependent_address_p (const_rtx addr)
+{
+  return GET_CODE (addr) == AND;
+}
+
 /* Primarily this is required for TLS symbols, but given that our move
    patterns *ought* to be able to handle any symbol at any time, we
    should never be spilling symbolic operands to the constant pool, ever.  */
@@ -9709,6 +9719,8 @@ alpha_conditional_register_usage (void)
 
 #undef TARGET_LEGITIMIZE_ADDRESS
 #define TARGET_LEGITIMIZE_ADDRESS alpha_legitimize_address
+#undef TARGET_MODE_DEPENDENT_ADDRESS_P
+#define TARGET_MODE_DEPENDENT_ADDRESS_P alpha_mode_dependent_address_p
 
 #undef TARGET_ASM_FILE_START
 #define TARGET_ASM_FILE_START alpha_file_start
diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h
index 8520ea8..cdb7c49 100644
--- a/gcc/config/alpha/alpha.h
+++ b/gcc/config/alpha/alpha.h
@@ -851,13 +851,6 @@ do {									     \
     }									     \
 } while (0)
 
-/* Go to LABEL if ADDR (a legitimate address expression)
-   has an effect that depends on the machine mode it is used for.
-   On the Alpha this is true only for the unaligned modes.   We can
-   simplify this test since we know that the address must be valid.  */
-
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR,LABEL)  \
-{ if (GET_CODE (ADDR) == AND) goto LABEL; }
 \f
 /* Specify the machine mode that this machine uses
    for the index in the tablejump instruction.  */
diff --git a/gcc/config/cr16/cr16.h b/gcc/config/cr16/cr16.h
index 54794e1..cf5bdf1 100644
--- a/gcc/config/cr16/cr16.h
+++ b/gcc/config/cr16/cr16.h
@@ -460,10 +460,6 @@ struct cumulative_args
 #define REG_OK_FOR_INDEX_P(X)   1
 #endif /* not REG_OK_STRICT.  */
 
-/* Go to LABEL if ADDR (a legitimate address expression) has 
-   an effect that depends on the machine mode it is used for.  */
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)
-
 /* Assume best case (branch predicted).  */
 #define BRANCH_COST(speed_p, predictable_p)       2
 
diff --git a/gcc/config/mep/mep.h b/gcc/config/mep/mep.h
index ad5b36d..920120c 100644
--- a/gcc/config/mep/mep.h
+++ b/gcc/config/mep/mep.h
@@ -561,8 +561,6 @@ typedef struct
   if (mep_legitimize_reload_address (&(X), (MODE), (OPNUM), (TYPE), (IND_LEVELS))) \
     goto WIN
 
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)
-
 #define SELECT_CC_MODE(OP, X, Y)  CCmode
 \f
 
diff --git a/gcc/config/vax/vax-protos.h b/gcc/config/vax/vax-protos.h
index 3f24794..5363877 100644
--- a/gcc/config/vax/vax-protos.h
+++ b/gcc/config/vax/vax-protos.h
@@ -19,7 +19,6 @@ along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
 extern bool legitimate_constant_address_p (rtx);
-extern bool vax_mode_dependent_address_p (rtx);
 extern void vax_expand_prologue (void);
 
 #ifdef RTX_CODE
diff --git a/gcc/config/vax/vax.c b/gcc/config/vax/vax.c
index aa929ca..aa84810 100644
--- a/gcc/config/vax/vax.c
+++ b/gcc/config/vax/vax.c
@@ -64,6 +64,7 @@ static rtx vax_builtin_setjmp_frame_value (void);
 static void vax_asm_trampoline_template (FILE *);
 static void vax_trampoline_init (rtx, tree, rtx);
 static int vax_return_pops_args (tree, tree, int);
+static bool vax_mode_dependent_address_p (const_rtx);
 \f
 /* Initialize the GCC target structure.  */
 #undef TARGET_ASM_ALIGNED_HI_OP
@@ -103,6 +104,8 @@ static int vax_return_pops_args (tree, tree, int);
 
 #undef TARGET_LEGITIMATE_ADDRESS_P
 #define TARGET_LEGITIMATE_ADDRESS_P vax_legitimate_address_p
+#undef TARGET_MODE_DEPENDENT_ADDRESS_P
+#define TARGET_MODE_DEPENDENT_ADDRESS_P vax_mode_dependent_address_p
 
 #undef TARGET_FRAME_POINTER_REQUIRED
 #define TARGET_FRAME_POINTER_REQUIRED hook_bool_void_true
@@ -1833,8 +1836,8 @@ vax_legitimate_address_p (enum machine_mode mode, rtx x, bool strict)
    increment being the length of the operand) and all indexed address depend
    thus (because the index scale factor is the length of the operand).  */
 
-bool
-vax_mode_dependent_address_p (rtx x)
+static bool
+vax_mode_dependent_address_p (const_rtx x)
 {
   rtx xfoo0, xfoo1;
 
diff --git a/gcc/config/vax/vax.h b/gcc/config/vax/vax.h
index 9d23fd0..35b8f8e 100644
--- a/gcc/config/vax/vax.h
+++ b/gcc/config/vax/vax.h
@@ -432,11 +432,6 @@ enum reg_class { NO_REGS, ALL_REGS, LIM_REG_CLASSES };
 #define REG_OK_FOR_BASE_P(X) REGNO_OK_FOR_BASE_P (REGNO (X))
 
 #endif
-
-/* Go to LABEL if ADDR (a legitimate address expression)
-   has an effect that depends on the machine mode it is used for.  */
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL) \
-  { if (vax_mode_dependent_address_p (ADDR)) goto LABEL; }
 \f
 /* Specify the machine mode that this machine uses
    for the index in the tablejump instruction.  */
diff --git a/gcc/defaults.h b/gcc/defaults.h
index 316a1c3..6eead33 100644
--- a/gcc/defaults.h
+++ b/gcc/defaults.h
@@ -1218,13 +1218,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #define ATTRIBUTE_ALIGNED_VALUE BIGGEST_ALIGNMENT
 #endif
 
-/* Many ports have no mode-dependent addresses (except possibly autoincrement
-   and autodecrement addresses, which are handled by target-independent code
-   in recog.c).  */
-#ifndef GO_IF_MODE_DEPENDENT_ADDRESS
-#define GO_IF_MODE_DEPENDENT_ADDRESS(X, WIN)
-#endif
-
 /* For most ports anything that evaluates to a constant symbolic
    or integer value is acceptable as a constant address.  */
 #ifndef CONSTANT_ADDRESS_P
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index b419a71..0c53550 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -5615,24 +5615,6 @@ You may assume that @var{addr} is a valid address for the machine.
 The default version of this hook returns @code{false}.
 @end deftypefn
 
-@defmac GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label})
-A C statement or compound statement with a conditional @code{goto
-@var{label};} executed if memory address @var{x} (an RTX) can have
-different meanings depending on the machine mode of the memory
-reference it is used for or if the address is valid for some modes
-but not others.
-
-Autoincrement and autodecrement addresses typically have mode-dependent
-effects because the amount of the increment or decrement is the size
-of the operand being addressed.  Some machines have other mode-dependent
-addresses.  Many RISC machines have no mode-dependent addresses.
-
-You may assume that @var{addr} is a valid address for the machine.
-
-These are obsolete macros, replaced by the
-@code{TARGET_MODE_DEPENDENT_ADDRESS_P} target hook.
-@end defmac
-
 @deftypefn {Target Hook} bool TARGET_LEGITIMATE_CONSTANT_P (enum machine_mode @var{mode}, rtx @var{x})
 This hook returns true if @var{x} is a legitimate constant for a
 @var{mode}-mode immediate operand on the target machine.  You can assume that
diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in
index 3f2ef1e..28fcca4 100644
--- a/gcc/doc/tm.texi.in
+++ b/gcc/doc/tm.texi.in
@@ -5545,24 +5545,6 @@ You may assume that @var{addr} is a valid address for the machine.
 The default version of this hook returns @code{false}.
 @end deftypefn
 
-@defmac GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label})
-A C statement or compound statement with a conditional @code{goto
-@var{label};} executed if memory address @var{x} (an RTX) can have
-different meanings depending on the machine mode of the memory
-reference it is used for or if the address is valid for some modes
-but not others.
-
-Autoincrement and autodecrement addresses typically have mode-dependent
-effects because the amount of the increment or decrement is the size
-of the operand being addressed.  Some machines have other mode-dependent
-addresses.  Many RISC machines have no mode-dependent addresses.
-
-You may assume that @var{addr} is a valid address for the machine.
-
-These are obsolete macros, replaced by the
-@code{TARGET_MODE_DEPENDENT_ADDRESS_P} target hook.
-@end defmac
-
 @hook TARGET_LEGITIMATE_CONSTANT_P
 This hook returns true if @var{x} is a legitimate constant for a
 @var{mode}-mode immediate operand on the target machine.  You can assume that
diff --git a/gcc/system.h b/gcc/system.h
index e3a7288..9e7d503 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -888,7 +888,8 @@ extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
 	IDENT_ASM_OP UNALIGNED_SHORT_ASM_OP UNALIGNED_INT_ASM_OP	   \
 	UNALIGNED_LONG_ASM_OP UNALIGNED_DOUBLE_INT_ASM_OP		   \
 	USE_COMMON_FOR_ONE_ONLY IFCVT_EXTRA_FIELDS IFCVT_INIT_EXTRA_FIELDS \
-	CASE_USE_BIT_TESTS FIXUNS_TRUNC_LIKE_FIX_TRUNC
+	CASE_USE_BIT_TESTS FIXUNS_TRUNC_LIKE_FIX_TRUNC                     \
+        GO_IF_MODE_DEPENDENT_ADDRESS
 
 /* Hooks that are no longer used.  */
  #pragma GCC poison LANG_HOOKS_FUNCTION_MARK LANG_HOOKS_FUNCTION_FREE	\
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index 8993659..fd199cc 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -1197,19 +1197,7 @@ default_hard_regno_scratch_ok (unsigned int regno ATTRIBUTE_UNUSED)
 bool
 default_mode_dependent_address_p (const_rtx addr ATTRIBUTE_UNUSED)
 {
-#ifdef GO_IF_MODE_DEPENDENT_ADDRESS
-
-  GO_IF_MODE_DEPENDENT_ADDRESS (CONST_CAST_RTX (addr), win);
-  return false;
-  /* Label `win' might (not) be used via GO_IF_MODE_DEPENDENT_ADDRESS.  */
- win: ATTRIBUTE_UNUSED_LABEL
-  return true;
-
-#else
-
   return false;
-
-#endif
 }
 
 bool
-- 
1.7.4.1

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] delete last traces of GO_IF_MODE_DEPENDENT_ADDRESS
  2012-07-27 23:58 [PATCH] delete last traces of GO_IF_MODE_DEPENDENT_ADDRESS Nathan Froyd
@ 2012-07-28  9:20 ` Jan-Benedict Glaw
  2012-07-30 15:35 ` Richard Henderson
  1 sibling, 0 replies; 3+ messages in thread
From: Jan-Benedict Glaw @ 2012-07-28  9:20 UTC (permalink / raw)
  To: Nathan Froyd, Matt Thomas; +Cc: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 744 bytes --]

On Fri, 2012-07-27 19:21:40 -0400, Nathan Froyd <froydnj@mozilla.com> wrote:
> 	* config/vax/vax-protos.h (vax_mode_dependent_address_p): Delete.
> 	* config/vax/vax.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
> 	* config/vax/vax.c (vax_mode_dependent_address_p): Make static.
> 	Take a const_rtx.
> 	(TARGET_MODE_DEPENDENT_ADDRESS_P): Define.

The VAX parts look good to me, but Matt has to decide on that.

MfG, JBG

-- 
      Jan-Benedict Glaw      jbglaw@lug-owl.de              +49-172-7608481
Signature of:         "really soon now":      an unspecified period of time, likly to
the second  :                                 be greater than any reasonable definition
                                              of "soon".

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] delete last traces of GO_IF_MODE_DEPENDENT_ADDRESS
  2012-07-27 23:58 [PATCH] delete last traces of GO_IF_MODE_DEPENDENT_ADDRESS Nathan Froyd
  2012-07-28  9:20 ` Jan-Benedict Glaw
@ 2012-07-30 15:35 ` Richard Henderson
  1 sibling, 0 replies; 3+ messages in thread
From: Richard Henderson @ 2012-07-30 15:35 UTC (permalink / raw)
  To: Nathan Froyd; +Cc: gcc-patches

On 2012-07-27 16:21, Nathan Froyd wrote:
> 	* defaults.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
> 	* targhooks.c (default_mode_dependent_address_p): Delete code
> 	for GO_IF_MODE_DEPENDENT_ADDRESS.
> 	* system.h (GO_IF_MODE_DEPENDENT_ADDRESS): Poison.
> 	* doc/tm.texi.in (GO_IF_MODE_DEPENDENT_ADDRESS): Delete documention.
> 	* doc/tm.texi: Regenerate.
> 	* config/alpha.h (GO_IF_MODE_DEPENDENT_ADDRESS): Move code to...
> 	* config/alpha.c (alpha_mode_dependent_address_p): ...here.  New
> 	function.
> 	(TARGET_MODE_DEPENDENT_ADDRESS_P): Define.
> 	* config/cr16/cr16.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
> 	* config/mep/mep.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
> 	* config/vax/vax-protos.h (vax_mode_dependent_address_p): Delete.
> 	* config/vax/vax.h (GO_IF_MODE_DEPENDENT_ADDRESS): Delete.
> 	* config/vax/vax.c (vax_mode_dependent_address_p): Make static.
> 	Take a const_rtx.
> 	(TARGET_MODE_DEPENDENT_ADDRESS_P): Define.

Ok.


r~

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2012-07-30 15:35 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-27 23:58 [PATCH] delete last traces of GO_IF_MODE_DEPENDENT_ADDRESS Nathan Froyd
2012-07-28  9:20 ` Jan-Benedict Glaw
2012-07-30 15:35 ` Richard Henderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).