OSDN Git Service

new macro REVERSE_CONDEXEC_PREDICATES_P
authoraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Feb 2001 15:59:30 +0000 (15:59 +0000)
committeraldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 21 Feb 2001 15:59:30 +0000 (15:59 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39947 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/flow.c
gcc/tm.texi

index 57d5032..b4bd206 100644 (file)
@@ -1,3 +1,10 @@
+2001-02-20  Aldy Hernandez  <aldyh@redhat.com>
+
+        * 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  <jason@redhat.com>
 
        * tree.h (DECL_UNINLINABLE): Move from C++ frontend.
index 9137db5..65c8a28 100644 (file)
@@ -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)
index d6557b8..7676b19 100644 (file)
@@ -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