[Bug fortran/41043] [4.4/4.5 Regression] virtual memory exhausted: Cannot allocate memory

2009-08-23 Thread mmitchel at gcc dot gnu dot org


-- 

mmitchel at gcc dot gnu dot org changed:

   What|Removed |Added

   Priority|P3  |P2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41043



[Bug fortran/41043] [4.4/4.5 Regression] virtual memory exhausted: Cannot allocate memory

2009-08-12 Thread rguenth at gcc dot gnu dot org


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|--- |4.4.2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41043



[Bug fortran/41043] [4.4/4.5 Regression] virtual memory exhausted: Cannot allocate memory

2009-08-12 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2009-08-12 13:36 ---
We take a lot of time and memory in

  /* Convert (T1)(X * Y) into (T1)X * (T1)Y if T1 is narrower than the
 type of X and Y (integer types only).  */
  if (INTEGRAL_TYPE_P (type)
  && TREE_CODE (op0) == MULT_EXPR
  && INTEGRAL_TYPE_P (TREE_TYPE (op0))
  && TYPE_PRECISION (type) < TYPE_PRECISION (TREE_TYPE (op0)))
{
...
 tem = fold_build2 (MULT_EXPR, mult_type,
 fold_convert (mult_type,
   TREE_OPERAND (op0, 0)),
 fold_convert (mult_type,
   TREE_OPERAND (op0, 1)));

building

character(kind=4)) i_1(D) * (character(kind=4)) i_1(D)) *
(character(kind=4)) i_1(D)) * character(kind=4)) i_1(D) * ...

from

(character(kind=4)) (integer(kind=8)) i_1(D) * ((integer(kind=8)) i_1(D) *
(integer(kind=8)) i_1(D))) * (((integer(kind=8)) i_1(D) * ((integer(kind=8))
i_1(D) * (integer(kind=8)) i_1(D))) * ...

appearantly something odd happens as that above transformation should
take linear time only.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41043



[Bug fortran/41043] [4.4/4.5 Regression] virtual memory exhausted: Cannot allocate memory

2009-08-12 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2009-08-12 13:14 ---
Confirmed.  We are doing a very hard job folding a tree generating lots of
garbage during VRP in adjust_range_with_scev (my personal friend).

:
D.1534_2 = (integer(kind=8)) i_1(D);
D.1535_3 = D.1534_2 * D.1534_2;
D.1536_4 = D.1534_2 * D.1535_3;
D.1537_5 = D.1536_4 * D.1536_4;
D.1538_6 = D.1536_4 * D.1537_5;
D.1539_7 = D.1538_6 * D.1538_6;
D.1540_8 = D.1538_6 * D.1539_7;
D.1541_9 = D.1539_7 * D.1539_7;
D.1542_10 = D.1540_8 * D.1541_9;
D.1543_11 = D.1542_10 * D.1542_10;
D.1544_12 = D.1543_11 * D.1543_11;
D.1545_13 = D.1544_12 * D.1544_12;
D.1546_14 = D.1535_3 * D.1535_3;
D.1547_15 = D.1536_4 * D.1546_14;
D.1548_16 = D.1545_13 * D.1547_15;
D.1549_17 = D.1548_16 * D.1548_16;
D.1550_18 = D.1549_17 * D.1549_17;
D.1551_19 = D.1550_18 * D.1550_18;
D.1552_20 = D.1551_19 * D.1547_15;
D.1553_21 = D.1552_20 * D.1552_20;
D.1554_22 = D.1553_21 * D.1553_21;
D.1555_23 = D.1554_22 * D.1554_22;
D.1556_24 = D.1555_23 * D.1547_15;
D.1557_25 = D.1556_24 * D.1556_24;
D.1558_26 = D.1557_25 * D.1557_25;
D.1559_27 = D.1558_26 * D.1558_26;
D.1560_28 = D.1559_27 * D.1547_15;
D.1561_29 = D.1560_28 * D.1560_28;
D.1562_30 = D.1561_29 * D.1561_29;
D.1563_31 = D.1562_30 * D.1562_30;
D.1564_32 = D.1563_31 * D.1547_15;
D.1565_33 = D.1564_32 * D.1564_32;
D.1566_34 = D.1565_33 * D.1565_33;
D.1567_35 = D.1566_34 * D.1566_34;
D.1568_36 = D.1567_35 * D.1547_15;
D.1569_37 = D.1568_36 * D.1568_36;
D.1570_38 = D.1569_37 * D.1569_37;
D.1571_39 = D.1570_38 * D.1570_38;
D.1572_40 = D.1571_39 * D.1547_15;
D.1573_41 = D.1572_40 * D.1572_40;
D.1574_42 = D.1573_41 * D.1573_41;
D.1575_43 = D.1574_42 * D.1574_42;
D.1576_44 = D.1575_43 * D.1547_15;
D.1577_45 = D.1576_44 * D.1576_44;
D.1578_46 = D.1577_45 * D.1577_45;
D.1579_47 = D.1578_46 * D.1578_46;
D.1580_48 = D.1579_47 * D.1547_15;
D.1581_49 = D.1580_48 * D.1580_48;
D.1582_50 = D.1581_49 * D.1581_49;
D.1583_51 = D.1582_50 * D.1582_50;
D.1584_52 = D.1583_51 * D.1547_15;
D.1585_53 = D.1584_52 * D.1584_52;
D.1586_54 = D.1585_53 * D.1585_53;
D.1587_55 = D.1586_54 * D.1586_54;
D.1588_56 = D.1587_55 * D.1547_15;
D.1589_57 = D.1588_56 * D.1588_56;
D.1590_58 = D.1589_57 * D.1589_57;
D.1591_59 = D.1590_58 * D.1590_58;
D.1592_60 = D.1591_59 * D.1547_15;
D.1593_61 = D.1592_60 * D.1592_60;
D.1594_62 = D.1593_61 * D.1593_61;
D.1595_63 = D.1594_62 * D.1594_62;
D.1596_64 = D.1595_63 * D.1547_15;
D.1597_65 = D.1596_64 * D.1596_64;
D.1598_66 = D.1597_65 * D.1597_65;
D.1599_67 = D.1598_66 * D.1598_66;
D.1600_68 = D.1599_67 * D.1547_15;
D.1601_69 = D.1600_68 * D.1600_68;
D.1602_70 = D.1601_69 * D.1601_69;
D.1603_71 = D.1602_70 * D.1602_70;
D.1604_72 = D.1603_71 * D.1547_15;
D.1605_73 = D.1604_72 * D.1604_72;
D.1606_74 = D.1605_73 * D.1605_73;
D.1607_75 = D.1606_74 * D.1606_74;
D.1608_76 = D.1607_75 * D.1547_15;
D.1609_77 = D.1608_76 * D.1608_76;
D.1610_78 = D.1609_77 * D.1609_77;
D.1611_79 = D.1610_78 * D.1610_78;
D.1612_80 = D.1611_79 * D.1547_15;
D.1613_81 = D.1612_80 * D.1612_80;
D.1614_82 = D.1613_81 * D.1613_81;
D.1615_83 = D.1614_82 * D.1614_82;
D.1616_84 = D.1615_83 * D.1547_15;
D.1617_85 = D.1616_84 * D.1616_84;
D.1618_86 = D.1617_85 * D.1617_85;
D.1619_87 = D.1618_86 * D.1618_86;
D.1620_88 = D.1619_87 * D.1547_15;
D.1623_89 = (integer(kind=4)) D.1620_88;

didn't I fix a similar case not too long ago (PR40062)?  Bah.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2009-08-12 13:14:04
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41043