MAX_INTEGER_COMPUTATION_MODE fix

Jeffrey A Law law@cygnus.com
Fri Mar 12 00:04:00 GMT 1999


An inline function which returns a value in a mode greater than
MAX_INTEGER_COMPUTATION_MODE should not give an error since it is not
a computation -- just a copy to/from registers or memory.


        * expr.c (expand_expr): Allow a CALL_EXPR with a mode wider than
        MAX_INTEGER_COMPUTATION_MODE.

Index: expr.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gcc/expr.c,v
retrieving revision 1.384
diff -c -3 -p -r1.384 expr.c
*** expr.c	1999/02/27 23:07:54	1.384
--- expr.c	1999/03/12 07:54:33
*************** expand_expr (exp, target, tmode, modifie
*** 5587,5592 ****
--- 5587,5593 ----
        && TREE_CODE (exp) != COMPONENT_REF
        && TREE_CODE (exp) != BIT_FIELD_REF
        && TREE_CODE (exp) != INDIRECT_REF
+       && TREE_CODE (exp) != CALL_EXPR
        && TREE_CODE (exp) != VAR_DECL)
      {
        enum machine_mode mode = GET_MODE (target);
*************** expand_expr (exp, target, tmode, modifie
*** 5603,5608 ****
--- 5604,5610 ----
        && TREE_CODE (exp) != BIT_FIELD_REF
        && TREE_CODE (exp) != INDIRECT_REF
        && TREE_CODE (exp) != VAR_DECL
+       && TREE_CODE (exp) != CALL_EXPR
        && GET_MODE_CLASS (tmode) == MODE_INT
        && tmode > MAX_INTEGER_COMPUTATION_MODE)
      fatal ("unsupported wide integer operation");


More information about the Gcc-patches mailing list