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

rguenth at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Wed Aug 12 13:36:00 GMT 2009



------- 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



More information about the Gcc-bugs mailing list