OSDN Git Service

(arm_gen_constant, case IOR,XOR): Don't invert a constant if loading
[pf3gnuchains/gcc-fork.git] / gcc / genpeep.c
index 10f75d1..ba2328d 100644 (file)
@@ -15,11 +15,12 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU CC; see the file COPYING.  If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
 
 
 #include <stdio.h>
-#include "config.h"
+#include "hconfig.h"
 #include "rtl.h"
 #include "obstack.h"
 
@@ -186,6 +187,7 @@ match_rtx (x, path, fail_label)
       return;
 
     case MATCH_DUP:
+    case MATCH_PAR_DUP:
       printf ("  x = ");
       print_path (path);
       printf (";\n");
@@ -311,6 +313,24 @@ match_rtx (x, path, fail_label)
          printf ("  if (XINT (x, %d) != %d) goto L%d;\n",
                  i, XINT (x, i), fail_label);
        }
+      else if (fmt[i] == 'w')
+       {
+         /* Make sure that at run time `x' is the RTX we want to test.  */
+         if (i != 0)
+           {
+             printf ("  x = ");
+             print_path (path);
+             printf (";\n");
+           }
+
+#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_INT
+         printf ("  if (XWINT (x, %d) != %d) goto L%d;\n",
+                 i, XWINT (x, i), fail_label);
+#else
+         printf ("  if (XWINT (x, %d) != %ld) goto L%d;\n",
+                 i, XWINT (x, i), fail_label);
+#endif
+       }
       else if (fmt[i] == 's')
        {
          /* Make sure that at run time `x' is the RTX we want to test.  */