OSDN Git Service

PR/middle-end 14915
[pf3gnuchains/gcc-fork.git] / gcc / genopinit.c
index 90d529a..f817969 100644 (file)
@@ -1,6 +1,6 @@
 /* Generate code to initialize optabs from machine description.
    Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-   2001, 2002, 2003 Free Software Foundation, Inc.
+   2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -122,10 +122,17 @@ static const char * const optabs[] =
   "round_optab->handlers[$A].insn_code = CODE_FOR_$(round$a2$)",
   "trunc_optab->handlers[$A].insn_code = CODE_FOR_$(trunc$a2$)",
   "nearbyint_optab->handlers[$A].insn_code = CODE_FOR_$(nearbyint$a2$)",
+  "sincos_optab->handlers[$A].insn_code = CODE_FOR_$(sincos$a3$)",
   "sin_optab->handlers[$A].insn_code = CODE_FOR_$(sin$a2$)",
   "cos_optab->handlers[$A].insn_code = CODE_FOR_$(cos$a2$)",
   "exp_optab->handlers[$A].insn_code = CODE_FOR_$(exp$a2$)",
+  "exp10_optab->handlers[$A].insn_code = CODE_FOR_$(exp10$a2$)",
+  "exp2_optab->handlers[$A].insn_code = CODE_FOR_$(exp2$a2$)",
+  "logb_optab->handlers[$A].insn_code = CODE_FOR_$(logb$a2$)",
+  "ilogb_optab->handlers[$A].insn_code = CODE_FOR_$(ilogb$a2$)",
   "log_optab->handlers[$A].insn_code = CODE_FOR_$(log$a2$)",
+  "log10_optab->handlers[$A].insn_code = CODE_FOR_$(log10$a2$)",  
+  "log2_optab->handlers[$A].insn_code = CODE_FOR_$(log2$a2$)",  
   "tan_optab->handlers[$A].insn_code = CODE_FOR_$(tan$a2$)",
   "atan_optab->handlers[$A].insn_code = CODE_FOR_$(atan$a2$)",
   "strlen_optab->handlers[$A].insn_code = CODE_FOR_$(strlen$a$)",
@@ -152,7 +159,10 @@ static const char * const optabs[] =
   "movstr_optab[$A] = CODE_FOR_$(movstr$a$)",
   "clrstr_optab[$A] = CODE_FOR_$(clrstr$a$)",
   "cmpstr_optab[$A] = CODE_FOR_$(cmpstr$a$)",
-  "cmpmem_optab[$A] = CODE_FOR_$(cmpmem$a$)" };
+  "cmpmem_optab[$A] = CODE_FOR_$(cmpmem$a$)",
+  "vec_set_optab->handlers[$A].insn_code = CODE_FOR_$(vec_set$a$)",
+  "vec_extract_optab->handlers[$A].insn_code = CODE_FOR_$(vec_extract$a$)",
+  "vec_init_optab->handlers[$A].insn_code = CODE_FOR_$(vec_init$a$)" };
 
 static void gen_insn (rtx);
 
@@ -217,7 +227,9 @@ gen_insn (rtx insn)
                    /* We have to be concerned about matching "gt" and
                       missing "gtu", e.g., so verify we have reached the
                       end of thing we are to match.  */
-                   if (*p == 0 && *q == 0 && GET_RTX_CLASS(op) == '<')
+                   if (*p == 0 && *q == 0
+                       && (GET_RTX_CLASS (op) == RTX_COMPARE
+                           || GET_RTX_CLASS (op) == RTX_COMM_COMPARE))
                      break;
                  }
 
@@ -230,7 +242,7 @@ gen_insn (rtx insn)
              case 'b':
                /* This loop will stop at the first prefix match, so
                    look through the modes in reverse order, in case
-                   EXTRA_CC_MODES was used and CC is a prefix of the
+                   there are extra CC modes and CC is a prefix of the
                    CC modes (as it should be).  */
                for (i = (MAX_MACHINE_MODE) - 1; i >= 0; i--)
                  {