From: Aldy Hernandez Date: Wed, 21 Feb 2001 15:59:30 +0000 (+0000) Subject: new macro REVERSE_CONDEXEC_PREDICATES_P X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7e6d8ba1842561ee144669cc97fad0fcbda65ae6;p=gcc.git new macro REVERSE_CONDEXEC_PREDICATES_P From-SVN: r39947 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 57d50323ca3..b4bd2068938 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2001-02-20 Aldy Hernandez + + * tm.texi (REVERSE_CONDEXEC_PREDICATES_P): New macro documentation. + + * flow.c (ior_reg_cond): Use REVERSE_CONDEXEC_PREDICATES_P macro. + (REVERSE_CONDEXEC_PREDICATES_P): Define macro. + 2001-02-21 Jason Merrill * tree.h (DECL_UNINLINABLE): Move from C++ frontend. diff --git a/gcc/flow.c b/gcc/flow.c index 9137db512dc..65c8a2872e5 100644 --- a/gcc/flow.c +++ b/gcc/flow.c @@ -168,6 +168,12 @@ Boston, MA 02111-1307, USA. */ #define EPILOGUE_USES(REGNO) 0 #endif +#ifdef HAVE_conditional_execution +#ifndef REVERSE_CONDEXEC_PREDICATES_P +#define REVERSE_CONDEXEC_PREDICATES_P(x, y) ((x) == reverse_condition (y)) +#endif +#endif + /* The obstack on which the flow graph components are allocated. */ struct obstack flow_obstack; @@ -5137,7 +5143,7 @@ ior_reg_cond (old, x, add) if (GET_RTX_CLASS (GET_CODE (old)) == '<') { if (GET_RTX_CLASS (GET_CODE (x)) == '<' - && GET_CODE (x) == reverse_condition (GET_CODE (old)) + && REVERSE_CONDEXEC_PREDICATES_P (GET_CODE (x), GET_CODE (old)) && REGNO (XEXP (x, 0)) == REGNO (XEXP (old, 0))) return const1_rtx; if (GET_CODE (x) == GET_CODE (old) diff --git a/gcc/tm.texi b/gcc/tm.texi index d6557b861f8..7676b191322 100644 --- a/gcc/tm.texi +++ b/gcc/tm.texi @@ -4880,6 +4880,17 @@ like: : reverse_condition_maybe_unordered (CODE)) @end smallexample +@findex REVERSE_CONDEXEC_PREDICATES_P +@item REVERSE_CONDEXEC_PREDICATES_P (@var{code1}, @var{code2}) +A C expression that returns true if the conditional execution predicate +@var{code1} is the inverse of @var{code2} and vice versa. Define this to +return 0 if the target has conditional execution predicates that cannot be +reversed safely. If none is specified, this macro expands to: + +@smallexample +#define REVERSE_CONDEXEC_PREDICATES_P (x, y) ((x) == reverse_condition (y)) +@end smallexample + @end table @node Costs