@@ -719,7 +719,6 @@ static const char const_dbl_constraints[] = "GH";
719
719
720
720
/* Summary data used to decide whether to output various functions and
721
721
macro definitions. */
722
- static unsigned int constraint_max_namelen;
723
722
static bool have_register_constraints;
724
723
static bool have_memory_constraints;
725
724
static bool have_special_memory_constraints;
@@ -942,7 +941,6 @@ add_constraint (const char *name, const char *regclass,
942
941
*last_constraint_ptr = c;
943
942
last_constraint_ptr = &c->next_textual ;
944
943
945
- constraint_max_namelen = MAX (constraint_max_namelen, strlen (name));
946
944
have_register_constraints |= c->is_register ;
947
945
have_const_int_constraints |= c->is_const_int ;
948
946
have_extra_constraints |= c->is_extra ;
@@ -1563,133 +1561,124 @@ write_tm_preds_h (void)
1563
1561
" #endif\n "
1564
1562
" \n " );
1565
1563
1566
- if (constraint_max_namelen > 0 )
1567
- {
1568
- write_enum_constraint_num ();
1569
- puts (" extern enum constraint_num lookup_constraint_1 (const char *);\n "
1570
- " extern const unsigned char lookup_constraint_array[];\n "
1564
+ write_enum_constraint_num ();
1565
+ puts (" extern enum constraint_num lookup_constraint_1 (const char *);\n "
1566
+ " extern const unsigned char lookup_constraint_array[];\n "
1567
+ " \n "
1568
+ " /* Return the constraint at the beginning of P, or"
1569
+ " CONSTRAINT__UNKNOWN if it\n "
1570
+ " isn't recognized. */\n "
1571
+ " \n "
1572
+ " static inline enum constraint_num\n "
1573
+ " lookup_constraint (const char *p)\n "
1574
+ " {\n "
1575
+ " unsigned int index = lookup_constraint_array"
1576
+ " [(unsigned char) *p];\n "
1577
+ " return (index == UCHAR_MAX\n "
1578
+ " ? lookup_constraint_1 (p)\n "
1579
+ " : (enum constraint_num) index);\n "
1580
+ " }\n " );
1581
+ if (satisfied_start == num_constraints)
1582
+ puts (" /* Return true if X satisfies constraint C. */\n "
1583
+ " \n "
1584
+ " static inline bool\n "
1585
+ " constraint_satisfied_p (rtx, enum constraint_num)\n "
1586
+ " {\n "
1587
+ " return false;\n "
1588
+ " }\n " );
1589
+ else
1590
+ printf (" extern bool (*constraint_satisfied_p_array[]) (rtx);\n "
1571
1591
" \n "
1572
- " /* Return the constraint at the beginning of P, or"
1573
- " CONSTRAINT__UNKNOWN if it\n "
1574
- " isn't recognized. */\n "
1592
+ " /* Return true if X satisfies constraint C. */\n "
1575
1593
" \n "
1576
- " static inline enum constraint_num\n "
1577
- " lookup_constraint (const char *p)\n "
1578
- " {\n "
1579
- " unsigned int index = lookup_constraint_array"
1580
- " [(unsigned char) *p];\n "
1581
- " return (index == UCHAR_MAX\n "
1582
- " ? lookup_constraint_1 (p)\n "
1583
- " : (enum constraint_num) index);\n "
1584
- " }\n " );
1585
- if (satisfied_start == num_constraints)
1586
- puts (" /* Return true if X satisfies constraint C. */\n "
1587
- " \n "
1588
- " static inline bool\n "
1589
- " constraint_satisfied_p (rtx, enum constraint_num)\n "
1590
- " {\n "
1591
- " return false;\n "
1592
- " }\n " );
1593
- else
1594
- printf (" extern bool (*constraint_satisfied_p_array[]) (rtx);\n "
1595
- " \n "
1596
- " /* Return true if X satisfies constraint C. */\n "
1597
- " \n "
1598
- " static inline bool\n "
1599
- " constraint_satisfied_p (rtx x, enum constraint_num c)\n "
1600
- " {\n "
1601
- " int i = (int) c - (int) CONSTRAINT_%s;\n "
1602
- " return i >= 0 && constraint_satisfied_p_array[i] (x);\n "
1603
- " }\n "
1604
- " \n " ,
1605
- enum_order[satisfied_start]->name );
1606
-
1607
- write_range_function (" insn_extra_register_constraint" ,
1608
- register_start, register_end);
1609
- write_range_function (" insn_extra_memory_constraint" ,
1610
- memory_start, memory_end);
1611
- write_range_function (" insn_extra_special_memory_constraint" ,
1612
- special_memory_start, special_memory_end);
1613
- write_range_function (" insn_extra_relaxed_memory_constraint" ,
1614
- relaxed_memory_start, relaxed_memory_end);
1615
- write_range_function (" insn_extra_address_constraint" ,
1616
- address_start, address_end);
1617
- write_allows_reg_mem_function ();
1618
-
1619
- if (constraint_max_namelen > 1 )
1620
- {
1621
- write_insn_constraint_len ();
1622
- puts (" #define CONSTRAINT_LEN(c_,s_) "
1623
- " insn_constraint_len (c_,s_)\n " );
1624
- }
1625
- else
1626
- puts (" #define CONSTRAINT_LEN(c_,s_) 1\n " );
1627
- if (have_register_constraints)
1628
- puts (" extern enum reg_class reg_class_for_constraint_1 "
1629
- " (enum constraint_num);\n "
1630
- " \n "
1631
- " static inline enum reg_class\n "
1632
- " reg_class_for_constraint (enum constraint_num c)\n "
1633
- " {\n "
1634
- " if (insn_extra_register_constraint (c))\n "
1635
- " return reg_class_for_constraint_1 (c);\n "
1636
- " return NO_REGS;\n "
1637
- " }\n " );
1638
- else
1639
- puts (" static inline enum reg_class\n "
1640
- " reg_class_for_constraint (enum constraint_num)\n "
1641
- " {\n "
1642
- " return NO_REGS;\n "
1643
- " }\n " );
1644
- if (have_const_int_constraints)
1645
- puts (" extern bool insn_const_int_ok_for_constraint "
1646
- " (HOST_WIDE_INT, enum constraint_num);\n "
1647
- " #define CONST_OK_FOR_CONSTRAINT_P(v_,c_,s_) \\\n "
1648
- " insn_const_int_ok_for_constraint (v_, "
1649
- " lookup_constraint (s_))\n " );
1650
- else
1651
- puts (" static inline bool\n "
1652
- " insn_const_int_ok_for_constraint (HOST_WIDE_INT,"
1653
- " enum constraint_num)\n "
1654
- " {\n "
1655
- " return false;\n "
1656
- " }\n " );
1657
-
1658
- puts (" enum constraint_type\n "
1594
+ " static inline bool\n "
1595
+ " constraint_satisfied_p (rtx x, enum constraint_num c)\n "
1659
1596
" {\n "
1660
- " CT_REGISTER,\n "
1661
- " CT_CONST_INT,\n "
1662
- " CT_MEMORY,\n "
1663
- " CT_SPECIAL_MEMORY,\n "
1664
- " CT_RELAXED_MEMORY,\n "
1665
- " CT_ADDRESS,\n "
1666
- " CT_FIXED_FORM\n "
1667
- " };\n "
1668
- " \n "
1669
- " static inline enum constraint_type\n "
1670
- " get_constraint_type (enum constraint_num c)\n "
1671
- " {" );
1672
- auto_vec <std::pair <unsigned int , const char *>, 4 > values;
1673
- if (const_int_start != const_int_end)
1674
- values.safe_push (std::make_pair (const_int_start, " CT_CONST_INT" ));
1675
- if (memory_start != memory_end)
1676
- values.safe_push (std::make_pair (memory_start, " CT_MEMORY" ));
1677
- if (special_memory_start != special_memory_end)
1678
- values.safe_push (std::make_pair (special_memory_start,
1679
- " CT_SPECIAL_MEMORY" ));
1680
- if (relaxed_memory_start != relaxed_memory_end)
1681
- values.safe_push (std::make_pair (relaxed_memory_start,
1682
- " CT_RELAXED_MEMORY" ));
1683
- if (address_start != address_end)
1684
- values.safe_push (std::make_pair (address_start, " CT_ADDRESS" ));
1685
- if (address_end != num_constraints)
1686
- values.safe_push (std::make_pair (address_end, " CT_FIXED_FORM" ));
1687
- print_type_tree (values, 0 , values.length (), " CT_REGISTER" , 2 );
1688
- puts (" }" );
1689
-
1690
- write_get_register_filter ();
1691
- write_get_register_filter_id ();
1692
- }
1597
+ " int i = (int) c - (int) CONSTRAINT_%s;\n "
1598
+ " return i >= 0 && constraint_satisfied_p_array[i] (x);\n "
1599
+ " }\n "
1600
+ " \n " ,
1601
+ enum_order[satisfied_start]->name );
1602
+
1603
+ write_range_function (" insn_extra_register_constraint" ,
1604
+ register_start, register_end);
1605
+ write_range_function (" insn_extra_memory_constraint" ,
1606
+ memory_start, memory_end);
1607
+ write_range_function (" insn_extra_special_memory_constraint" ,
1608
+ special_memory_start, special_memory_end);
1609
+ write_range_function (" insn_extra_relaxed_memory_constraint" ,
1610
+ relaxed_memory_start, relaxed_memory_end);
1611
+ write_range_function (" insn_extra_address_constraint" ,
1612
+ address_start, address_end);
1613
+ write_allows_reg_mem_function ();
1614
+
1615
+ write_insn_constraint_len ();
1616
+ puts (" #define CONSTRAINT_LEN(c_,s_) insn_constraint_len (c_,s_)\n " );
1617
+ if (have_register_constraints)
1618
+ puts (" extern enum reg_class reg_class_for_constraint_1 "
1619
+ " (enum constraint_num);\n "
1620
+ " \n "
1621
+ " static inline enum reg_class\n "
1622
+ " reg_class_for_constraint (enum constraint_num c)\n "
1623
+ " {\n "
1624
+ " if (insn_extra_register_constraint (c))\n "
1625
+ " return reg_class_for_constraint_1 (c);\n "
1626
+ " return NO_REGS;\n "
1627
+ " }\n " );
1628
+ else
1629
+ puts (" static inline enum reg_class\n "
1630
+ " reg_class_for_constraint (enum constraint_num)\n "
1631
+ " {\n "
1632
+ " return NO_REGS;\n "
1633
+ " }\n " );
1634
+ if (have_const_int_constraints)
1635
+ puts (" extern bool insn_const_int_ok_for_constraint "
1636
+ " (HOST_WIDE_INT, enum constraint_num);\n "
1637
+ " #define CONST_OK_FOR_CONSTRAINT_P(v_,c_,s_) \\\n "
1638
+ " insn_const_int_ok_for_constraint (v_, "
1639
+ " lookup_constraint (s_))\n " );
1640
+ else
1641
+ puts (" static inline bool\n "
1642
+ " insn_const_int_ok_for_constraint (HOST_WIDE_INT,"
1643
+ " enum constraint_num)\n "
1644
+ " {\n "
1645
+ " return false;\n "
1646
+ " }\n " );
1647
+
1648
+ puts (" enum constraint_type\n "
1649
+ " {\n "
1650
+ " CT_REGISTER,\n "
1651
+ " CT_CONST_INT,\n "
1652
+ " CT_MEMORY,\n "
1653
+ " CT_SPECIAL_MEMORY,\n "
1654
+ " CT_RELAXED_MEMORY,\n "
1655
+ " CT_ADDRESS,\n "
1656
+ " CT_FIXED_FORM\n "
1657
+ " };\n "
1658
+ " \n "
1659
+ " static inline enum constraint_type\n "
1660
+ " get_constraint_type (enum constraint_num c)\n "
1661
+ " {" );
1662
+ auto_vec <std::pair <unsigned int , const char *>, 4 > values;
1663
+ if (const_int_start != const_int_end)
1664
+ values.safe_push (std::make_pair (const_int_start, " CT_CONST_INT" ));
1665
+ if (memory_start != memory_end)
1666
+ values.safe_push (std::make_pair (memory_start, " CT_MEMORY" ));
1667
+ if (special_memory_start != special_memory_end)
1668
+ values.safe_push (std::make_pair (special_memory_start,
1669
+ " CT_SPECIAL_MEMORY" ));
1670
+ if (relaxed_memory_start != relaxed_memory_end)
1671
+ values.safe_push (std::make_pair (relaxed_memory_start,
1672
+ " CT_RELAXED_MEMORY" ));
1673
+ if (address_start != address_end)
1674
+ values.safe_push (std::make_pair (address_start, " CT_ADDRESS" ));
1675
+ if (address_end != num_constraints)
1676
+ values.safe_push (std::make_pair (address_end, " CT_FIXED_FORM" ));
1677
+ print_type_tree (values, 0 , values.length (), " CT_REGISTER" , 2 );
1678
+ puts (" }" );
1679
+
1680
+ write_get_register_filter ();
1681
+ write_get_register_filter_id ();
1693
1682
1694
1683
puts (" #endif /* tm-preds.h */" );
1695
1684
}
@@ -1750,17 +1739,14 @@ write_insn_preds_c (void)
1750
1739
FOR_ALL_PREDICATES (p)
1751
1740
write_one_predicate_function (p);
1752
1741
1753
- if (constraint_max_namelen > 0 )
1754
- {
1755
- write_lookup_constraint_1 ();
1756
- write_lookup_constraint_array ();
1757
- if (have_register_constraints)
1758
- write_reg_class_for_constraint_1 ();
1759
- write_constraint_satisfied_p_array ();
1760
-
1761
- if (have_const_int_constraints)
1762
- write_insn_const_int_ok_for_constraint ();
1763
- }
1742
+ write_lookup_constraint_1 ();
1743
+ write_lookup_constraint_array ();
1744
+ if (have_register_constraints)
1745
+ write_reg_class_for_constraint_1 ();
1746
+ write_constraint_satisfied_p_array ();
1747
+
1748
+ if (have_const_int_constraints)
1749
+ write_insn_const_int_ok_for_constraint ();
1764
1750
1765
1751
write_init_reg_class_start_regs ();
1766
1752
}
0 commit comments